关于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条回答
云烟一笑
2019-07-24 17:15
楼主...别怪我挖坟,我也是准备用串口发送数据,使用的波特率是115200,不过我不是打印,我是直接发送数据,但是我从串口得到的数据是错误的,和你算rgb的算法一样,但是拆开后得到的rgb的值都是几乎一样的,只会随着颜 {MOD}的鲜艳程度变大变小,但是依旧保持三个分量的大小几乎差不多,楼主,能不能把你的程序给我参考一下,我弄了几天也找不到原因,我现在LCD还没到,不知道原数据对不对,还有,楼主你是怎么显示在电脑上的,是使用的彩 {MOD}的上位机还是黑白上位机,如果是彩 {MOD}的求楼主也发给我用下,求楼主了QQ邮箱1626716773qq.com

一周热门 更多>