2560*1440 and 1920*1080 can be driven. But 3840*2160 can‘t be driven, read its DPCD, TPS3_SUPPORTED flag bit is set, how to configure SN65DSI86? Thanks!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
2560*1440 and 1920*1080 can be driven. But 3840*2160 can‘t be driven, read its DPCD, TPS3_SUPPORTED flag bit is set, how to configure SN65DSI86? Thanks!
You must enable ASSR in panel before starting semi auto link training.
Attached document has example of how to enable ASSR in panel.
Please provide a register dump and panel datasheet.
3554.6036.DSI86_SW_EXAMPLES.pdf
非常感谢您的回复!
The following is my code。same code, i had enabled the ASSR, can drive 2560*1440 and 1920*1080。
WriteI2C_Byte(0x0a, 0x06); //REFCLK 27MHz Delay_ms(200); WriteI2C_Byte(0x10, 0x00); //奇偶 8lane Delay_ms(20); WriteI2C_Byte(0x12, dsi_clk_f/5);//3840*2160 30Hz, dis_clk_f=408 WriteI2C_Byte(0x13, dsi_clk_f/5); Delay_ms(20); WriteI2C_Byte(0x5a, 0x05); //enhanced framing and ASSR Delay_ms(20); // WriteI2C_Byte(0x93, 0x10); //1 DP lane // WriteI2C_Byte(0x93, 0x20); //2 DP lane WriteI2C_Byte(0x93, 0x30); //4 DP lane Delay_ms(20); // WriteI2C_Byte(0x94, 0x80); // 2.7Gbps // WriteI2C_Byte(0x94, 0x20); // 1.6Gbps WriteI2C_Byte(0x94, 0xe0); // 5.4Gbps Delay_ms(20); WriteI2C_Byte(0x0D, 0x01); //PLL ENABLE Delay_ms(20); //等待PLL WriteI2C_Byte(0x95, 0x00); //POST-Cursor2 0dB Delay_ms(20); WriteI2C_Byte(0x64, 0x01); //Write DPCD Register 0x0010A in Sink to Enable ASSR WriteI2C_Byte(0x74, 0x00); WriteI2C_Byte(0x75, 0x01); WriteI2C_Byte(0x76, 0x0A); WriteI2C_Byte(0x77, 0x01); WriteI2C_Byte(0x78, 0x81); Delay_ms(15); WriteI2C_Byte(0x96, 0x0a); //Main - Semi Auto Link Training. Delay_ms(250); ReadI2C_Byte(0X96, &rd[0]); printf("\n\r0x96=%2x", rd[0]); Delay_ms(10); ReadI2C_Byte(0XF8, &rd0]); printf("\n\r0xf8=%2x", rd[0]); //CHA LCD_H WriteI2C_Byte(0x20, Lcd_LCDH/2); WriteI2C_Byte(0x21, Lcd_LCDH/2 >> 8); WriteI2C_Byte(0x22, Lcd_LCDH/2); WriteI2C_Byte(0x23, Lcd_LCDH/2 >> 8); //CHA LCD_V WriteI2C_Byte(0x24, (Lcd_LCDV)); WriteI2C_Byte(0x25, Lcd_LCDV >> 8); WriteI2C_Byte(0x26, (Lcd_LCDV)); WriteI2C_Byte(0x27, Lcd_LCDV >> 8); //CHA HSPW = Horizontal Sync Pulse Width WriteI2C_Byte(0x2C, Lcd_HSPW); WriteI2C_Byte(0x2D, (Lcd_HSPW>>8)|0x80);// [7]=1低电平有效, [6:0]-HSPW高6位 //CHA VSPW = Vertical Sync Pulse Width WriteI2C_Byte(0x30, Lcd_VSPW); WriteI2C_Byte(0x31, (Lcd_VSPW>>8)|0x80);// [7]=1低电平有效, [6:0]-VSPW高6位 //CHA HBPD = Horizontal Blanking - (Horizontal Sync Offset + Horizontal Sync Pulse Width) WriteI2C_Byte(0x34, Lcd_HBPD); //CHA VBPD WriteI2C_Byte(0x36, Lcd_VBPD); //CHA HFPD WriteI2C_Byte(0x38, Lcd_HFPD); //CHA VFPD WriteI2C_Byte(0x3A, Lcd_VFPD); WriteI2C_Byte(0x5B, 0); //DP 24bpp WriteI2C_Byte(0x3C, 0); //关自测 // WriteI2C_Byte(0x3C, 0x10); //自测 WriteI2C_Byte(0x5A, 0x0D); //Video data from DSI is passed to DisplayPort
-------------------------------------------------
Has relationship with the TPS3?
-------------------------------------------------
由于保密原因,只能给出部分datasheet.
Enable interrupt sources and use interrupt scheme to detect if there is any error happen inside DSI86.
Please make sure your panel supports ASSR.
Regards