开发板用的是TI官方TMDXEVM3358,我在原来的rasterDisplay.c中定义了一个数据缓冲区:
#define LCD_WIDTH 480
#define LCD_HEIGHT 272
unsigned int LCDBuffer[LCD_WIDTH*LCD_HEIGHT+8];
然后在程序中将原来的显示代码去掉,修改成自己加的代码,如下:
memcpy(LCDBuffer, image1, sizeof(LCDBuffer));
RasterDMAFBConfig(LCDC_INSTANCE, (unsigned int)LCDBuffer, (unsigned int)LCDBuffer+sizeof(LCDBuffer)-2, 0);
RasterDMAFBConfig(LCDC_INSTANCE, (unsigned int)LCDBuffer, (unsigned int)LCDBuffer+sizeof(LCDBuffer)-2, 1);
用意就是将原来显示的image1数组中数据全部复制到新定义的LCDBuffer中,再将LCDBuffer指针传给LCD DMA的起始和终此缓冲区寄存器。
但在开发板中运行后,显示的LCD屏中有部分乱码,如下:
而将上面三行语句换回下述语句时就显示正常:
RasterDMAFBConfig(LCDC_INSTANCE, (unsigned int)image1, (unsigned int)image1+sizeof(LCDBuffer)-2, 0);
RasterDMAFBConfig(LCDC_INSTANCE, (unsigned int)image1, (unsigned int)image1+sizeof(LCDBuffer)-2, 1);
另外一个问题是如下图所示:
image1数组中,前面8个数据是什么?为何会有该8个数据,而且也是直接传给DMA寄存器的?


