使用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);显示却不会乱码,想了好多天都不知道什么原因求帮助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-08-14 22:19
因为外部sram速度不够.
smerker
2楼-- · 2019-08-15 01:35
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-08-15 03:08
回复【3楼】smerker:
---------------------------------
 没办法,
苏赤赤
4楼-- · 2019-08-15 08:03
那原子哥知道怎么把ov2640的数据通过dma放到sram后用lcd显示出来吗
白菜萝卜一锅炖
5楼-- · 2019-08-15 11:33
楼主问题解决了么?求助,显示出来了么?

一周热门 更多>