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设置和时序图是反的,这是什么原因哦。
真心希望原子哥和各位大神能够帮帮小弟,万分感谢,好人一生平安
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
谢谢原子哥的回复,关于第三点,根据手册理解就和代码不同了。手册是VSYNC低收数据,我用F103模拟过DCMI,按手册来就是不行,按照VSYNC高开始收数据,低结束就可以,难道是手册错了吗???
一周热门 更多>