ov2640摄像头rgb数据存储的问题

2019-07-20 10:56发布

本帖最后由 cyg 于 2017-8-6 02:07 编辑

[mw_shl_code=c,true]        OV2640_ImageWin_Set(0,0,800,800);                                
        OV2640_RGB565_Mode();
        LCD_Set_Window(0,0,160,160);
        OV2640_OutSize_Set(160,160);
        
        My_DCMI_Init();               

        
        DCMI_DMA_Init((u32)&rgb_buf[0],rgb_buf_size,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);
        DCMI_Start();[/mw_shl_code]

如上我设置的ov2640摄像头160*160的输出
理论上输出的rgb数据应该为160*160*2字节=51200B
51200/4=12800个U32大小。但是实际dma传送的数据为6408也就是多出了8个u32。。。
A6L[7`E1}O1K2M}F1$KZUR8.png
复位后的第一次数据正常,往后数据就多出来了,找了好久不知道怎么回事。

我试着将数据直接显示在lcd上时图像有错位,将数据前面的8个u32去除之后显示是正常的

[mw_shl_code=c,true]void show_rgb(u16 *p,u32 rgb_data_len)
{
        u32 i=0;
        LCD_SetCursor(0,0);  
        LCD_WriteRAM_Prepare();                //¿aê¼D′èëGRAM
        for(i=16;i<rgb_data_len*2;i++)
                LCD->LCD_RAM=p;        
}
[/mw_shl_code]
如上面是去掉了16个u16之后显示正常。求助!



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