关于STM32+Ov7670+电脑显示的问题,涉及串口、USB等

2019-07-21 08:10发布

我参考的是原子哥实验36 摄像头实验的代码,主要需要实现的功能是STM32从OV7670采集一帧的数据,在接到电脑发来的信号后,再将数据传送到电脑并显示。电脑端用PySerial或PyUSB(Python的两种不同传输方法)进行读写,先给板子写一个值(作为STM32发送数据的触发装置),再读取(循环接收)每个像素的RGB值,最后把每个像素显示出来得到完整的一帧图像
问题:
1.我尝试过用printf 串口发送一帧数据,但是需要320*240*2 bytes,数据量大,传输速度不够,经常一发送就导致串口接收的python程序死机。
2.例程里用的是直接将一帧数据输出到液晶屏,我想用个全局buffer[76800][3]存储每个像素的rgb分量以取保电脑给信号后接收到的是同步好的完整的一帧图像,但是老报内存不足的问题,用的板子是STM32F103ZE,Program memory 512K,RAM 64K。
3.最近在看DMA的例程,网上有说这个能提高串口传输速度,如果我用DMA的send_buffer做一帧的存储,可行吗?
4.之前企图用USB协议(电脑端用PyUSB做接收程序)传输一帧图像,但是没太明白STM32上是如何发送数据的……是说只需要指定好buffer的具体位置,电脑上给出端点、命令等信息就行吗?电脑端如何知道从板子的哪个地址(指定的buffer位置)读取所需数据呢?跪求USB相关例程,标准例程里有可参考的不?还是说我应该直接弃了USB这种方法?

唉,最近这些问题真是太头疼了,拜谢大家了先!m(_ _)m

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
565956807@qq.co
1楼-- · 2019-07-22 06:12
我勒个去
草野晶
2楼-- · 2019-07-22 07:37
回复【7楼】正点原子:
---------------------------------
是的,我昨晚已经用实际行动证明了这个我嘞个去……(TAT)  还有什么好方法能提速么?而且为什么我输出的图像会是混乱的呢?根本看不出来是个图……
正点原子
3楼-- · 2019-07-22 12:56
 精彩回答 2  元偷偷看……
草野晶
4楼-- · 2019-07-22 18:23
回复【10楼】 正点原子 : --------------------------------- 1.好,我改成256000试试 2.那是因为240行全打出来太费时了,先找一行试试 {MOD}块 不是液晶,在旗舰的液晶上没问题,就是电脑解码后不行。。。不知道我那么转换rgb565对不对
生成图如下:



草野晶
5楼-- · 2019-07-22 19:22
回复【10楼】正点原子:
---------------------------------
原子哥~除了楼上回复的,有的时候还会发生同样的代码,有的时候跑出来的数据就是各种颜 {MOD}的,有的时候则是无论怎么跑都是248,252,248这类似全白的,这是为什么呢?
正点原子
6楼-- · 2019-07-22 23:47
估计是你的rgb转换问题了,先测试下这个.

一周热门 更多>