LT9611 MIPI转HDMI芯片,方案成熟,提供技术支持
?
9611 調(diào)試說明 移植好提供的 9611 新塘單片機代碼后,如果 HDMI 端不能正常輸出信號,可以從以下 2 個方面排除配置上的問題: 1. 程序中的分辨率 timing 構(gòu)造是否和輸入的 MIPI 信號完全對應: 2.MIPI?D‐PHY 參數(shù)中的 settle 參數(shù)對于 9611 采集解析輸入信號的分辨率等信息,以及 PCR 像素信息恢復的穩(wěn)定醒來說非常重要。下圖中的寄存器對于 1080P60 分辨率,不同 平臺的 MIPI 信號一般配置 0x08‐0x10,具體需要去試。其他小一些的分辨率該參數(shù)配置 也應該適當減小:void LT9611_Dphy_debug(void)
{
//主要是可以獲取輸入的正負是否連接正確,每條lane的sot是否正常,如果讀不到任何值可能輸入的A/B Port配置不對
//如果提取不到分辨率可以加入打印,可以提取分辨率就不需要看該部分狀態(tài)
?? ?#ifdef _mipi_Dphy_debug_
?? ?u8 temp;
?? ?
?? ?HDMI_WriteI2C_Byte(0xff,0x83);
?? ?temp = HDMI_ReadI2C_Byte(0xbc);
?? ?if(temp == 0x55)
?? ?printf("\r\nport A lane PN is right");
?? ?else
?? ?printf("\r\nport A lane PN error 0x83bc = 0x%bx",temp);
?? ?
?? ?temp = HDMI_ReadI2C_Byte(0x99);
?? ?if(temp == 0xb8)
?? ?printf("\r\nport A lane 0 sot right ");
?? ?else
?? ?printf("\r\nport A lane 0 sot error = 0x%bx",temp);
?? ?temp = HDMI_ReadI2C_Byte(0x9b);
?? ?if(temp == 0xb8)
?? ?printf("\r\nport A lane 1 sot right ");
?? ?else
?? ?printf("\r\nport A lane 1 sot error = 0x%bx",temp);
?? ?
?? ?temp = HDMI_ReadI2C_Byte(0x9d);
?? ?if(temp == 0xb8)
?? ?printf("\r\nport A lane 2 sot right ");
?? ?else
?? ?printf("\r\nport A lane 2 sot error = 0x%bx",temp);
?? ?
?? ?temp = HDMI_ReadI2C_Byte(0x9f);
?? ?if(temp == 0xb8)
?? ?printf("\r\nport A lane 3 sot right ");
?? ?else
?? ?printf("\r\nport A lane 3 sot error = 0x%bx",temp);
?? ?
?? ?printf("\r\nport A lane 0 settle = 0x%bx",HDMI_ReadI2C_Byte(0x98));
?? ?printf("\r\nport A lane 1 settle = 0x%bx",HDMI_ReadI2C_Byte(0x9a));
??? ?printf("\r\nport A lane 2 settle = 0x%bx",HDMI_ReadI2C_Byte(0x9c));
??? ?printf("\r\nport A lane 3 settle = 0x%bx",HDMI_ReadI2C_Byte(0x9e));
?? ?#endif
}
void LT9611_Video_Check(void)
{
//主要是獲取mipi解析到的分辨率是否正常,如果不正常可以看下settle的配置以及通道是否正常
?? ?u8 mipi_video_format=0x00;
?? ?u16 h_act, h_act_a ,h_act_b, v_act,v_tal;
?? ?u16 h_total_sysclk;
?? ?HDMI_WriteI2C_Byte(0xff,0x82); // top video check module
?? ?h_total_sysclk = HDMI_ReadI2C_Byte(0x86);
?? ?h_total_sysclk = (h_total_sysclk<<8) + HDMI_ReadI2C_Byte(0x87);
?? ?printf("\33[32m");
?? ?printf("\n-----------------------------------------------------------------------------");
?? ?printf("\nLT9611_Video_Check: h_total_sysclk = %d",h_total_sysclk);
?? ?v_act=HDMI_ReadI2C_Byte(0x82);
?? ?v_act=(v_act<<8)+HDMI_ReadI2C_Byte(0x83);
?? ?v_tal=HDMI_ReadI2C_Byte(0x6c);
?? ?v_tal=(v_tal<<8)+HDMI_ReadI2C_Byte(0x6d);
?? ?
?? ?HDMI_WriteI2C_Byte(0xff,0x83);
?? ?h_act_a = HDMI_ReadI2C_Byte(0x82);
?? ?h_act_a = (h_act_a<<8)+HDMI_ReadI2C_Byte(0x83);
?? ?
?? ?h_act_b = HDMI_ReadI2C_Byte(0x86);
?? ?h_act_b =(h_act_b<<8)+HDMI_ReadI2C_Byte(0x87);
?? ?if(lt9611.input_color_space==YUV422)
?? ?{
?? ??? ?printf("\nLT9611_Video_Check: lt9611.input_color_space = YUV422");
?? ??? ?h_act_a /= 2;?
?? ??? ?h_act_b /= 2;
?? ?}
?? ?if(lt9611.input_color_space==RGB565)
?? ?{
?? ??? ?printf("\nLT9611_Video_Check: lt9611.input_color_space = RGB565");
?? ??? ?h_act_a /= 2;?
?? ??? ?h_act_b /= 2;
?? ?}
?? ?else if(lt9611.input_color_space==RGB888)
?? ?{
?? ? ??? ?printf("\nLT9611_Video_Check: lt9611.input_color_space = RGB888");
?? ? ? ?? ?h_act_a /= 3;?
?? ??? ??? ?h_act_b /= 3;
?? ?}
?? ?mipi_video_format=HDMI_ReadI2C_Byte(0x88);
?? ?printf("\nLT9611_Video_Check: h_act_a, h_act_b, v_act, v_tal: %d, %d, %d, %d, ",h_act_a, h_act_b, v_act, v_tal);
?? ?printf("\nLT9611_Video_Check: mipi_video_format: 0x%bx",mipi_video_format);
?? ??? ??? ??? ??? ??
? if(lt9611.mipi_port_cnt==dual_port_mipi)//if(0)//(P10 == 0) //dual port.
?? ? ?h_act = h_act_a + h_act_b;
?? ?else
?? ? ?h_act = h_act_a;
?? ?printf("\r\nLT9611_Video_Check: Video_Format =");
總結(jié)
以上是生活随笔為你收集整理的LT9611 MIPI转HDMI芯片,方案成熟,提供技术支持的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车上为什么非要用SOA?
- 下一篇: 手机和电脑如何制作gif动画