使用DMA将DCMI驱动的OV2640数据存到一个外部SRAM数组中,再通过TFT显示一直乱码。

2019-08-14 16:45发布

u16 testsram[76800] __attribute__((at(0X68000000)));
void rgb565_test(void)


OV2640_RGB565_Mode(); 
My_DCMI_Init(); 

DCMI_DMA_Init((u32)testsram,1,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Enable);
 
  OV2640_OutSize_Set(lcddev.width,lcddev.height);

OV2640_Contrast(4);
OV2640_Color_Saturation(0);
OV2640_Color_Bar(1);
DCMI_Start(); 
while(1);  




void DCMI_IRQHandler(void)
{
if(DCMI_GetITStatus(DCMI_IT_FRAME)==SET)
{

DCMI_Stop();

  DCMI_DMA_Init((u32)testsram,1,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Enable);//DCMI DMA????
 rgb_process();
 
DCMI_Start();

DCMI_ClearITPendingBit(DCMI_IT_FRAME);
LED1=!LED1;
ov_frame++;  
}


void rgb_process(void)
{
u32 z=0;
u16 x,y;
z=0;

for(x=0;x<240;x++)
for(y=0;y<320;y++)
{
LCD->LCD_RAM=testsram[z];
z++;
LED0=!LED0;
}
}
但是直接通过例程DCMI_DMA_Init((u32)&LCD->LCD_RAM,1,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Disable);显示却不会乱码,想了好多天都不知道什么原因求帮助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。