问题描述:
主控芯片通过spi接口对ssd2828芯片进行配置,fpga输出RGB信号给ssd2828转换成MIPI信号输出到LCD无显示。
文章来源:https://uudwc.com/A/1YdBG
问题原因分析:
MIPI屏控制芯片是HX8399,需要通过MIPI接口发送dcs命令对屏幕进行初始化。
解决措施:
增加MIPI屏初始化配置,MIPI屏初始化代码如下:
#define DELAY_CMD 0xFF
struct 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函数。
测试验证:屏幕能够正常显示彩条。文章来源地址https://uudwc.com/A/1YdBG