摄像头实验DMA传数时 数据传输长度配置问题

2019-07-20 05:13发布

请教:
if(lcdltdc.pwidth!=0)        //RGB屏
        {
                dcmi_rx_callback=rgblcd_dcmi_rx_callback;//RGB屏接收数据回调函数
                DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],lcddev.width/2,1,1);//DCMI DMA配置  
        }else                                        //MCU 屏
        {
                DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,1,0);                        //DCMI DMA配置,MCU屏,竖屏
        }


如上,DCMI DMA配置传输项数lcddev.width为什么要除以2,传输项数不应该是一行的像素数么,再除以2是什么意思呢?

另外,回调函数里为什么要使用两个buf?如下:
void rgblcd_dcmi_rx_callback(void)
{      u16 *pbuf;
        if(DMA2_Stream1->CR&(1<<19))//DMA使用buf1,读取buf0
        {
                pbuf=(u16*)dcmi_line_buf[0];
        }else                                                 //DMA使用buf0,读取buf1
        {
                pbuf=(u16*)dcmi_line_buf[1];
        }        
        LTDC_Color_Fill(0,curline,lcddev.width-1,curline,pbuf);//DM2D填充
        if(curline<lcddev.height)curline++;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 05:26
1,以为DCMI 的DR是  32位的。一个像素是16位。
2,因为双缓冲能更好的完成数据接收
denglu
2楼-- · 2019-07-20 06:54
 精彩回答 2  元偷偷看……
zhangqixue521
3楼-- · 2019-07-20 12:39
自己顶。
zhangqixue521
4楼-- · 2019-07-20 14:07
等待原子哥出现 解答。我顶。。

一周热门 更多>