OV2640+DCMI+DMA双缓冲+外部SRAM的问题

2019-07-20 16:34发布

使用环境如下:
1、OV2640使用DCMI接口,配置为800*600 RGB 15fps输出,然后开窗口为320*240或者640*480;
2、通过DMA双缓冲方式(因为数据数量超过了65535),将OV2640数据搬运到一个使用外部SRAM的大数组中;
3、捕获一帧后把SRAM的存储数据再显示到LCD上(其实跟直接把OV2640数据搬运到LCD显示差不多,因为后续还要处理,所以中间先放到SRAM中)

问题描述:
1、当开窗为320*240时,将SRAM中收到的数据再显示到LCD上,画面是正常的;
2、当开窗为640*480时,画面显示到LCD上有断层和闪绿点的情况,感觉像是中间某些数据传送到SRAM数组时丢失了;
3、后来我把SRAM的读写速度加快了,其实就是把readWriteTiming.FSMC_DataSetupTime改小了,画面就正常了。

请问,这是因为DCMI数据更新太快,导致传送到SRAM时数据丢失或者错位吗?对F4的DMA双缓冲还不太熟,不知道是不是哪里操作不对。
PS:之前OV2640->DMA->LCD->RAM时也发现过LCD的读写时序太慢时,LCD画面显示会有花屏的现象。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 19:35
是的,DCMI输出速度,大于SRAM的写入速度,就会出错。
只能提高SRAM速度,或者降低DCMI的输出速度。
负西弱
2楼-- · 2019-07-21 00:29
 精彩回答 2  元偷偷看……
xiaok1051
3楼-- · 2019-07-21 04:25
楼主厉害,正在做,焦头烂额
xiaok1051
4楼-- · 2019-07-21 08:22
想请教一下DMA的配置
745021926
5楼-- · 2019-07-21 13:36
正点原子 发表于 2015-12-2 21:18
是的,DCMI输出速度,大于SRAM的写入速度,就会出错。
只能提高SRAM速度,或者降低DCMI的输出速度。

原子哥,降低DCMI的输出速度就是降低PCLK 的频率吧,怎么降下来?  我的现在也遇到这种问题,后半帧图像丢失
喜欢小让
6楼-- · 2019-07-21 15:05
楼主,能不能发一下你的程序,我和你遇到了同样的问题,我也想用RGB565的方式,通过DMA双缓冲方式(因为数据数量超过了65535),将OV2640数据搬运到一个使用外部SRAM的大数组中,你的第一个问题是怎么解决的,我的不行,求指导!

一周热门 更多>