关于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啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>