[STM32F4] OV5640+STM32F429实现拍照10%几率出现图片断层

[复制链接]
 楼主| Marco-Marco 发表于 2019-3-8 19:34 | 显示全部楼层 |阅读模式
如图实物图和图片。通过按键触发拍照,然后STM32F429通过DMA将OV5640生成的JPEG图像(2592x1944 pixels)搬运至外部SDRAM,然后再直接通过USB HS (外置phy USB3300)虚拟串口(CDC)传输到PC进行显示。MCU会在拍照完成得到DCMI_Frame中断后去检索图片头FF D8 和 图片尾FF D9, 如果同时检索到收尾再将整个图片发送出去。在出现的10%的断层图片里面,USB并没有丢包。
本人更倾向于是OV5640的软件控制这块出了问题但不排除USB传输,MCU 数据搬运时或者其余硬件异常比如摄像头是否排线过长等。所以希望有做过类似项目的朋友如果有遇到类似问题给点指导。感谢
微信图片_20190308192345.jpg 微信图片_20190308192354.png

零三翟邢止胃 发表于 2019-3-11 14:19 | 显示全部楼层
可以的啊! 不错的啊!!!!!
colin2135 发表于 2019-3-11 15:25 | 显示全部楼层
我之前也遇到过这个问题,而且发现一个规律。传输低分辨率的图像的时候,不会出现断层和错位,大于800*600,就经常出现断层和错位。
有一次,使用串口WIFI来传输图片的时候,发现低分辩率竟然也错位了,然后换回有线串口来传输,就每次都正常了。
我想问题点肯定是出在传输上面。于是做了个小测试,使用高波特率来传输图像就会出现断层,低分辨率就正常。
所以,可以判断 是数据从STM32传到上位机的过程中,数据丢失,或者数据错了。
解决方法可以将JPEG图像拆成多个包,每个包用CRC校验发送给上位机,分成多次传输。
 楼主| Marco-Marco 发表于 2019-3-12 14:23 | 显示全部楼层
colin2135 发表于 2019-3-11 15:25
我之前也遇到过这个问题,而且发现一个规律。传输低分辨率的图像的时候,不会出现断层和错位,大于800*600 ...

感谢回复。我测试了下,代码里面改成拍完一张照后用同一张图片一直通过USB往PC发。测了上千次都没有出现过一次断层。所以目前觉得还是在OV5640成像这一步骤引起的bug,而非USB传输。
sdswsasx 发表于 2019-3-12 14:40 | 显示全部楼层
图片太大,下一张图片的一部分覆盖了上一张图片
heimaojingzhang 发表于 2019-4-1 11:53 | 显示全部楼层
哦哦  长知识了
 楼主| Marco-Marco 发表于 2019-4-25 21:07 | 显示全部楼层
解决办法见http://www.openedv.com/forum.php?mod=viewthread&tid=289142&pid=953831&page=1&extra=#pid953831
equivalent 发表于 2019-4-26 14:06 | 显示全部楼层
应该是数据量太大导致的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:www.jhe-iot.com

32

主题

155

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:www.jhe-iot.com

32

主题

155

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部