问题描述:
主控芯片通过spi接口对ssd2828芯片进行配置,fpga输出RGB信号给ssd2828转换成MIPI信号输出到LCD无显示。
问题原因分析:
MIPI屏控制芯片是HX8399,需要通过MIPI接口发送dcs命令对屏幕进行初始化。
解决措施:
增加MIPI屏初始化配置,MIPI屏初始化代码如下:
#define DELAY_CMD 0xFFstruct st_lcdSettigTable{u8 regAddr;u8 dataCnt;u8 dataList[60];};void Delay_ms(int Num){int Timer;while(Num--){Timer = 1000;while(Timer--);}}struct st_lcdSettigTable HX8399_setting[]={{0xB9,3,{0xFF,0x83,0x99}},{0xB1,15,{0x02,0x04,0x70,0x90,0x01,0x32,0x33,0x11,0x11,0x4D,\0x57,0x56,0x73,0x02,0x02}},{0xB2,11,{0x00,0x80,0x80,0xAE,0x0A,0x0E,0x75,0x11,0x00,0x00,\0x00}},{0xB4,46,{0x00,0xFF,0x04,0xA4,0x02,0xA0,0x00,0x00,0x10,0x00,\0x00,0x02,0x00,0x24,0x02,0x04,0x0A,0x21,0x03,0x00,\0x00,0x08,0xA6,0x88,0x04,0xA4,0x02,0xA0,0x00,0x00,\0x10,0x00,0x00,0x02,0x00,0x24,0x02,0x04,0x0A,0x00,\0x00,0x08,0xA6,0x00,0x08,0x11}},{0xD3,33,{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x32,0x10,\0x09,0x00,0x09,0x32,0x10,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x11,0x00,0x02,0x02,0x03,0x00,0x00,\0x00,0x0A,0x40}},{0xD5,32,{0x18,0x18,0x18,0x18,0x21,0x20,0x18,0x18,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x03,0x02,0x01,0x00,0x2F,0x2F,0x30,0x30,0x31,0x31,0x18,0x18,0x18,0x18,0x18,0x18}}, {0xD6,32,{0x18,0x18,0x18,0x18,0x20,0x21,0x19,0x19,0x18,0x18,\0x19,0x19,0x18,0x18,0x18,0x18,0x00,0x01,0x02,0x03,\0x2F,0x2F,0x30,0x30,0x31,0x31,0x18,0x18,0x18,0x18,\0x18,0x18}},{0xD8,8,{0x0A,0xBE,0xFA,0xA0,0x0A,0xBE,0xFA,0xA0}},{0xBD,1,{0x01}},{0xD8,8,{0x0F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xE0}},{0xBD,1,{0x02}},{0xD8,8,{0x0F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xE0}},{0xBD,1,{0x00}},{0xE0,54,{0x01,0x11,0x1C,0x17,0x39,0x43,0x54,0x51,0x5A,0x64,\0x6C,0x74,0x7A,0x83,0x8D,0x92,0x99,0xA4,0xA9,0xB4,\0xAA,0xBA,0xBE,0x63,0x5E,0x69,0x73,0x01,0x11,0x1C,\0x17,0x39,0x43,0x54,0x51,0x5A,0x64,0x6C,0x74,0x7A,\0x83,0x8D,0x92,0x99,0xA4,0xA7,0xB2,0xA9,0xBA,0xBE,\0x63,0x5E,0x69,0x73}},{0xB6,2,{0x97,0x97}},{0xCC,1,{0x00}},{0xBF,4,{0x40,0x41,0x50,0x49}},{0xC6,2,{0xFF,0xF9}},{0xC0,2,{0x25,0x5A}},{0x11,1,{0}},{DELAY_CMD,120},{0x29,1,{0}},{DELAY_CMD,50},};void HX8399_LCD_Init(void){int i,j;for(i=0;i<sizeof(HX8399_setting)/sizeof(struct st_lcdSettigTable);i++){if(DELAY_CMD==HX8399_setting[i].regAddr){DIS_Delayms(HX8399_setting[i].dataCnt);}else{GP_COMMAD_PA(HX8399_setting[i].dataCnt+1);SPI_WriteData(HX8399_setting[i].regAddr);for(j=0;j<HX8399_setting[i].dataCnt;j++){SPI_WriteData(HX8399_setting[i].dataList[j]);}} }}
开机初始化时调用HX8399_LCD_Init函数。
测试验证:屏幕能够正常显示彩条。