基于RT1052 Aworks MIPI 2line 显示 (十八)
本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发
本文主要讲述在RT1052上面,原先的MIPI 4line显示调整为MIPI 2line显示。
1. 原理
MIPI显示由4line显示调整为2line显示,从原理上需要修改的地方有三处:
1) MIPI line数由4改为2。
2) MIPI时钟需要调整。
3) 需要发送DSC命令让MIPI屏支持2line即可
2. 操作过程
- MIPI line数由4改为2
@@ -467,7 +467,7 @@ void LT9211_MipiTxDigital(void)
HDMI_WriteI2C_Byte(0x16,0x55);
HDMI_WriteI2C_Byte(0x10,0x01);
HDMI_WriteI2C_Byte(0x11,0x30); //read delay
- HDMI_WriteI2C_Byte(0x13,0x0f); //bit[5:4]:lane num, bit[2]:bllp,bit[1:0]:vid_mode
+ HDMI_WriteI2C_Byte(0x13,0x2f); //bit[5:4]:lane num, bit[2]:bllp,bit[1:0]:vid_mode^M
2)MIPI时钟需要调整。
@@ -396,9 +396,9 @@ void LT9211_MipiTxpll(void)
HDMI_WriteI2C_Byte(0xff,0x82);
HDMI_WriteI2C_Byte(0x36,0x03); //b7:txpll_pd
HDMI_WriteI2C_Byte(0x37,0x28);
- HDMI_WriteI2C_Byte(0x38,0x04);
- //HDMI_WriteI2C_Byte(0x3a,0x91);
- HDMI_WriteI2C_Byte(0x3a,0x92);
+ HDMI_WriteI2C_Byte(0x38,0x44);
+ HDMI_WriteI2C_Byte(0x3a,0x92);
+ // HDMI_WriteI2C_Byte(0x3a,0x90);
- 需要发送DSC命令让MIPI屏支持2line即可,该命令由屏的供应商提供
+ Generic_Short_Write_1P(0xB0,0x5A);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0xB1,0x00);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0x89,0x01);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0xB1,0x03);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0x14,0xE1);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0xB1,0x00);
+ aw_mdelay(10);
+ Generic_Short_Write_1P(0x89,0x03);
+ aw_mdelay(10);
void InitPanel( void )
{
HDMI_WriteI2C_Byte(0xff,0x81);
HDMI_WriteI2C_Byte(0x0e,0xef);
HDMI_WriteI2C_Byte(0x0e,0xff);
HDMI_WriteI2C_Byte(0x0b,0xfe);
HDMI_WriteI2C_Byte(0xff,0x86);
HDMI_WriteI2C_Byte(0x47,0x01);
HDMI_WriteI2C_Byte(0x48,0x01);
HDMI_WriteI2C_Byte(0xff,0xd4);
HDMI_WriteI2C_Byte(0x20,0x2f);
HDMI_WriteI2C_Byte(0x21,0x10);
extern void rgb2mipi_first_time_power_on_sequence();
rgb2mipi_first_time_power_on_sequence();
aw_mdelay(300);
aw_kprintf("\r\nStart initial panel\r\n");
Generic_Short_Write_1P(0xB0,0x5A);
aw_mdelay(10);
Generic_Short_Write_1P(0xB1,0x00);
aw_mdelay(10);
Generic_Short_Write_1P(0x89,0x01);
aw_mdelay(10);
Generic_Short_Write_1P(0xB1,0x03);
aw_mdelay(10);
Generic_Short_Write_1P(0x14,0xE1);
aw_mdelay(10);
Generic_Short_Write_1P(0xB1,0x00);
aw_mdelay(10);
Generic_Short_Write_1P(0x89,0x03);
aw_mdelay(10);
aw_kprintf("\r\nFinish initial panel\r\n");
}
4)测试结果
3. 总结
如果2line显示不成功如何排查:
1、通过示波器测量MIPI 钟时是否正常
2、通过示波器测试MIPI数据线上是否只剩下line0 line1 有数据。
3、通过MIPI逻辑分析仪确认DSC是否发送成功,这个方法很直接,但是一般公司是没有MIPI逻辑分析仪的。