探索者OV2640代码有些不明白,请大神帮扶帮扶小弟

2019-07-21 03:16发布

void jpeg_data_process(void)
{
if(ov2640_mode)
{
if(jpeg_data_ok==0)

DMA_Cmd(DMA2_Stream1, DISABLE);
while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}
jpeg_data_len=jpeg_buf_size-DMA_GetCurrDataCounter(DMA2_Stream1);

jpeg_data_ok=1; 
}
if(jpeg_data_ok==2) 
{
DMA2_Stream1->NDTR=jpeg_buf_size; 
DMA_SetCurrDataCounter(DMA2_Stream1,jpeg_buf_size);
DMA_Cmd(DMA2_Stream1, ENABLE);
jpeg_data_ok=0;
}
}

1.上面是void jpeg_data_process(void)函数,帧中断时调用。第一次判断jpeg_data_ok=0,然后关了DMA,jpeg_data_ok=1,这能看懂。但是判断jpeg_data_ok=2是第二次进中断时候判断的啊。 这不就2帧图片只能存一帧图片了吗?
2、还有就是为什么串口打印的Jpeg_data_len总是为0;函数中没有清零这个变量啊
3、困惑了我很久了,时序图上是HREF高,VSYNC为低,传数据,但是为什么DCMI设置的有效信号为底。我知道这2个是消隐信号。也就是说VSYNC设置和时序图是反的,这是什么原因哦。

真心希望原子哥和各位大神能够帮帮小弟,万分感谢,好人一生平安
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 04:50
 精彩回答 2  元偷偷看……
名侦探
2楼-- · 2019-07-21 09:51
由于网速原因发了2个,实在不好意思,第2点我知道了。请大神讲解下第1,3点谢谢了
名侦探
3楼-- · 2019-07-21 11:32
回复【3楼】正点原子:
---------------------------------
谢谢原子哥的回复,关于第三点,根据手册理解就和代码不同了。手册是VSYNC低收数据,我用F103模拟过DCMI,按手册来就是不行,按照VSYNC高开始收数据,低结束就可以,难道是手册错了吗???
正点原子
4楼-- · 2019-07-21 13:05
回复【4楼】名侦探:
---------------------------------
看怎么理解了,呵呵。
名侦探
5楼-- · 2019-07-21 13:50
回复【5楼】正点原子:
---------------------------------
这东西困扰我许久了,请原子哥指点迷津呀

一周热门 更多>