板主的BF53x开发板的相关初始化程序如下:
void InitDMA(void)
{
int addr;
addr = &DisplayBuffer_565;
addr -= 1920;
*pDMA0_START_ADDR = addr;
*pDMA0_X_COUNT = 480; //每行共480个点
*pDMA0_X_MODIFY = 2; //每行共发送480个16bit数据,故此为2(2*8bit),因为转化为565模式,所以每行只需480*2个字节
*pDMA0_Y_COUNT = 286; //共286行,其中14行为无效的
*pDMA0_Y_MODIFY = 2;
*pDMA0_CONFIG = 0x1034; //16bit DMA模式
}
void InitPPI(void)
{
*pPPI_CONTROL = 0x781e; //16-PPI
*pPPI_DELAY = 0;
*pPPI_COUNT = 479; //480-1
*pPPI_FRAME = 286;
}
void InitTimer(void)
{
*pTIMER1_PERIOD = 525;
*pTIMER1_WIDTH = 41;
*pTIMER1_CONFIG = 0x00a9;
*pTIMER2_PERIOD = 150150;
*pTIMER2_WIDTH = 5250;
*pTIMER2_CONFIG = 0x00a9;
}
//RGC888转RGB565,转后存于DisplayBuffer_565(大小480*3*272)中。但只有前面480*2*272有效
void RGB888_RGB565(unsigned char *src, int src_len, unsigned char *dst)
{
int i = 0;
int j = 0;
if (src_len % 3 != 0)
{
return;
}
for (i = 0; i < src_len; i += 3)
{
dst[j+1] = src[i+2] &0xf8; //B
dst[j+1] |= ((src[i+1]>>5) & 0x07); //GH
dst[j] = ((src[i+1]<<3) & 0xe0); //GL
dst[j] |= ((src[i]>>3) &0x1f); //R
j += 2;
}
}
问题:如果我PPI用8bit模式(R-3 G-3 B-2)屏也是一样的屏。那此时初始化要怎么变呢?万分感谢!