初级会员

- 积分
- 116
- 金钱
- 116
- 注册时间
- 2015-1-15
- 在线时间
- 18 小时
|
1金钱
我现在需要将OV5640摄像头的数据放到SDRAM中,然后更改SDRAM的数据,实际上就是加入一些文字等,及图标,然后再在LCD上显示,如下图:
我是用DMA方式在行中断中将OV5640的数据保存到了SDRAM中,
void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
{
System.OV5640.CurrentLine++;
__HAL_UNLOCK(&DMADMCI_Handler);
HAL_DMA_Start(&DMADMCI_Handler,(u32)&DCMI->DR,
System.Lcd.FrameBufStartAddr + (LCD_W * 2 * System.OV5640.CurrentLine),LCD_W);
LED0 = !LED0;
}
然后在帧中断时更改SDRAM数据,将文字及图标填加进去,然后使用如下代码将数据传到LCD上:
LCD_SetCursor(0,0);
LCD_WriteRAM_Prepare();
for(y = 0;y < LCD_H;y++)
{
for(x = 0;x < LCD_W;x++)
{
ColorDataL = *(vu8*)(LCD_FRAME_BUF_ADDR + (pt << 1));
ColorDataH = *(vu8*)(LCD_FRAME_BUF_ADDR + (pt << 1) + 1);
ColorData = (ColorDataH << 8) + ColorDataL;
LCD_WriteRAM(ColorData);
pt++;
}
}
但这样的显示的帧率就会非常低,所以我想使用DMA2的内存到内存的方式代替上面的代码,但没有成功,请求帮助,如何配置啊。
|
|