关于DCMI 驱动 OV5640摄像头RGB屏显示 HAL库版本的代码有个疑问

2019-07-20 14:48发布

关于DCMI 驱动 OV5640摄像头RGB屏显示 HAL库版本的代码有个疑问,
void rgb565_test(void)
{
        。。。。省略

        if(lcdltdc.pwidth!=0)        //RGBÆá
        {
                dcmi_rx_callback=rgblcd_dcmi_rx_callback;
          DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],lcddev.width/2,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);
        }else                                       
        {
         DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,DMA_MDATAALIGN_HALFWORD,DMA_MINC_DISABLE);
        }
      。。。。省略
}这个 DCMI_DMA_Init 初始化代码 数据长度为什么设置为 lcddev.width/2 啊 ????????


寄存器版本的代码我看过 他使能了DMA的直接模式传输 FCR寄存器初始化为0x21   存储器数据大小MSIZE 在直接模式下强制置为外设数据大小 PSIZE =32位 而RGB每个像素大小16位
所以DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],lcddev.width/2,1,1); 初始化数据长度为lcddev.width/2  这个我可以理解
但是HAL库版本的函数没有是能DMA的直接传输模式 用的是FIFO模式 存储器数据大小 MSIZE=DMA_MDATAALIGN_HALFWORD(16)位啊 为什么DMA初始化数据长度还是lcddev.width/2啊?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。