本帖最后由 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。。。
复位后的第一次数据正常,往后数据就多出来了,找了好久不知道怎么回事。
我试着将数据直接显示在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之后显示正常。求助!
其他窗口也是这个样,但是dma直接到gram没有问题
一周热门 更多>