高通平台 mipi轉接屏調試 (以轉lvds icn6202例)


mipi to lvds 顯示調試

調試前准備:

獲取屏的規格書 獲悉的關鍵信息

  • VDD 需要 3.3v 
  • RST 3.3v 拉低進 rst 
  • LVDS 4 組數據 差分信號,clk 一組差分信號
  • SELB 決定 數據格式 6bit or 8bit 

  • Dclk 典型值 51.2M
  • H 水平方向典型值 1024
  • V 垂直方向典型值 600
  • H total典型值 1344 
  • 預分配 :h-front-porch 160,  h-back-porch 150, h-pulse-width 10
  • V total典型值 635  
  • 預分配 :v-back-porch 15,    v-front-porch 15,  v-pulse-width 5

獲取轉接芯片規格書及寄存器信息data sheet

 

  • VDD18,VDD18_LVDS,VDD18_PLL,VDD18_RX。

四個電源管腳統一電壓1.8V。

芯片工作電流在20-40mA左右,跟實際使用的分辨率相關,待機時拉低EN,電流10uA以下

  • VCORE

建議外接四顆電容,兩顆1uF,兩顆10nF。最少不應少於兩顆外接電容,一顆1uF,一顆10nF。電容盡量靠近芯片的VCORE管腳。

  • DSI INPUT

支持1-4路MIPI DSI數據鏈路。不用的MIPI數據鏈路保持管腳懸空即可。支持RGB888,RGB666,RGB565輸入。MIPI DSI接口支持Video Mode進行視頻數據傳輸,MIPI Command Mode進行寄存器配置。當使用MIPI Command Mode配置寄存器時,可以省掉IIC接口。另外,將MIPI CLK配置為連續的High Speed模式,可以作為參考時鍾使用,省掉外部晶振。

  • REF_CLK2

參考時鍾管腳,外接晶振。要求是交流耦合,需要在晶振和管腳間串接一顆1nF電容。外接晶振作為芯片的參考時鍾,芯片內部有PLL鎖相環,對晶振的精度要求不高。外接參考時鍾僅作為備選方案,推薦客戶使用MIPI CLK作為參考時鍾。這種情況下,REF_CLK管腳接地即可。

  • SDA,SCL

IIC通信管腳。配置芯片寄存器使用。芯片寄存器有兩種配置方式,一種通過IIC一種通過MIPI Command Mode。當使用MIPI配置寄存器時,IIC接口可以省掉。

  • ADDR_SEL

IIC地址選擇管腳,拉高IIC地址為0x5A,拉低IIC地址為0x58。(八位地址)

  • IRQ

芯片中斷管腳。建議連接到主控的中斷或者GPIO管腳。當芯片工作狀態異常可以輸出中斷信號,復位芯片等。

  • GPIO0,GPIO1

調試管腳。PCB空間充裕可以拉出測試點,供調試時使用。

  • IC_EN

使能管腳。EN拉低芯片復位,EN拉高芯片工作。EN管腳拉低后,芯片進入低功耗模式,待機電流10uA以下。EN拉低再拉高后,芯片需要重新配置寄存器。

  • ATEST,TEST_EN,BIST_EN

懸空或者接地。無功能。

  • LVDS OUTPUT

LVDS輸出管腳。支持VESA,JEIDA標准,支持18bit模式,24bit模式。LVDS鏈路管腳可交換,組內PN可交換。

  • 寄存器0x00, 如果通信正常,讀取改寄存器,應該會返回0xc1,可以幫助我們debug狀態。

其他寄存器信息,可以在實際實際調試過程中來查看。

獲取硬件原理圖,pcb

瀏覽原理圖,獲悉的關鍵信息:

 ​​​​​

  • SELB 為low,即數據格式是8bit

  • Soc 需輸出4lane mipi信號到轉接芯片,組間信號無調整,一一對應。
     
  • 轉接芯片輸出的4組 lvds data,1組lvds clk,需要注意的是,客戶這里是將 N,P 做了交叉,所以配置轉接芯片寄存器時,需要額外注意。(通過觀察主板實物來看,這樣做的目的應該是為了更好的layout走線,避免走線交叉)

4轉接芯片 icn6202

  • IC en腳是芯片的使能腳,直連到soc gpio8, 如果有使用i2c方式配置,需要添加設備驅動,我們可以自行添加 ic_en的控制邏輯,如果使用mipi配置,我們可以在高通的mdss_dsi0的驅動中添加,這里也可以利用原有的rst腳來替代。
  • Vdd 是1.8v,來自於 LDO6。
  • ADDR_SEL 是i2c地址的選擇腳,做兼容使用, 這里接gnd 寫地址是0x58, 讀地址是0x59,即7位i2c地址應該是0x2c。
  • I2c 是接到sensor i2c,對應 sc20的 i2c1上。
  • VCORE有提供測試點,可幫助我們通過量取電壓值debug 芯片的狀態。
  • REFCLK2 是外接了 26M 晶振, 這里的晶振電路要參考 參考設計的。
  • RST腳是1.8v,lcd 需要3.3v,客戶添加了一個三極管,這里就必須要注意了,這個電路邏輯是反向的,soc輸出1.8v 三極管導通,rst 為low,soc 輸出0v,三極管不導通,rst為高。
  • 背光通過 pwm來控制,pwm來自 pm8909_mpps 2

 

調試流程

  從此圖可移看出來,相對於傳統的調試mipi的數據框架中,使用轉接芯片是在原有的流程中轉接ic接收了來自soc的mipi信號轉而輸出lvds信號給到panel, 這個過程中,soc依舊是輸出同樣的mipi數據信號以及一些管腳配置。 那么我們可以認為,此狀態下,soc就是將轉接ic(icn6202)當做panel來配置,至於 轉接ic輸出何種信號,當根據后端所連接的panel的具體類型來做相應的配置,soc不關心實際panel的類型。那么整個配置流程便可以拆解為兩個部分,第一部分是 轉接ic的驅動配置,第二部分是soc mipi信號輸出的配置,下面是對這兩個部分的簡單介紹。

Icn6202的配置

  • 點亮屏首先需要點亮背光,雖然背光這部分不屬於轉接ic的配置,但是為了單獨驗證icn6202的配置,第一步依舊是關注背光。
    根據前面獲取的信息,背光是靠PWM方式來控制的,客戶的主板上有了升壓電路,是長供電所以我們只關心pwm的配置,pwm來自pm8909_mpps 2,是msm8909的默認配置
    主要的配置如下:qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;

qcom,mdss-dsi-bl-pmic-bank-select = <0>;

qcom,mdss-dsi-pwm-gpio = <&pm8909_mpps 2 0>;

bl-pmic-control-type 會在panel驅動中做解析,選擇bl_ctrl_pwm 即會選擇相應的背光控制邏輯,pane驅動中 已經向led子系統注冊了相關的節點,根據我們選擇的bl_ctrl_pwm 會進入相應的brightness_set函數中,這個函數中會根據pwm-gpio 選擇 pm8909mpp2,設置為pwm輸出,根據

pwm-frequency設置頻率, 根據傳入的亮度值設置占空比; pm8909mpp2的設置是在msm8909-pm8909-mtp.dtsi 中設置的,主要如下:

mpp@a100 { /* MPP 2 */
		/* Backlight PWM */
		qcom,mode = <1>;		/* Digital output */
		qcom,invert = <0>;		/* Disable invert */
		qcom,src-sel = <4>;		/* DTEST1 */
		qcom,vin-sel = <0>;		/* VPH_PWR */
		qcom,master-en = <1>;		/* Enable MPP */
	};

具體pmic相關寄存器的設置選擇,及panel驅動中背光控制的代碼控制實現這里就不詳細描述了。

  • 根據芯片規格書的描述,icn支持兩種配置方式,i2c 和 mipi comman的方式,在還未點亮之前,我們需要不斷的debug其狀態,且根據上面提到的流程分割,這部分暫時不關心soc的mipi 配置(通過上面我們獲取的調試信息,icn6202的clk來自外部晶振,即可完成獨立工作),減少可能會出現的問題點,推薦先使用i2c的方式。

Icn6202的配置流程比較的人性化,ic廠提供了一個生成寄存器配置的工具,用於轉換,對lvds的配置如下圖。

 

這里需要注意,根據前面獲取的信息,填入屏幕參數后,lvds的P N SWAP5組信號都要使能 SWAP;且需要選擇8bit。

點擊綠色的生存按鈕即可生成,要根據我們panel的要求來寫入固定的數據到相應的寄存器,所以ic廠並沒有提供參考驅動代碼,這里我們可以自己實現。

主要需要我們來實現一個i2c的讀寫函數,根據寄存器手冊,讀寫都是一個byte,實現如下:

 ​​​​​​​驅動加載的主要邏輯如下:

​​​​​​​Icn6202 init 即是寫入需要配置的寄存器參數, 由於當前還未配置soc的mipi輸出,根據寄存器手冊的描述我們可以先通過配置icn6202進入測試模式,bittest color bar,通過設置轉換工具也可以知道,需要寫入的寄存器是0x10 = 0x47,0x2A = 0x41,完整的配置如下:

​​​​​​​

綜上在驅動加載的過程中,首先判斷讀ID是否讀取成功,給LDO6上電,拉低RST(反向到3.3),先拉低再拉高EN腳,讓ic復位, 寫入如上的寄存器(調試過程中,最好回讀一下這些寄存器,看看。也可以根據芯片的描述監聽irq信號去debug)。

  理論上 硬件ok的話,測試lcd會顯示彩條, 如果未能顯示,需要檢查REFCLK2,使用示波器測量是否得到26M的clk信號,檢測其晶振電路,檢查vcore ~=1.28v.確保芯片工作ok。 再測量屏上的信號,vcom3.3v,背光電壓,rst(這個要格外注意客戶反向了這路電),pwm;這個過程中遇到問題 務必回過頭再詳細閱讀規格書,datasheet以及硬件電路設計,一般我們調試的主板都是客戶設計的,基帶不能面對面溝通,需要自己細心去發現需要注意的點。

都ok的應該就會輸出如下彩條了。

​​​​​​​

Mipi輸出設置

這部分流程就是點亮高通屏相同的流程了,這里就不再詳細描述高通平台配置屏的具體詳細流程,對應該平台可參考高通的文檔80-nu323-3_b,

簡單梳理下.調試在配置流程中要以注意的地方

  • 填入panel需要的 的相應參數,這些參數應該和我們再轉機ic中配置的保持一致,如下:

根據芯片的描述設置對應的特性, 如dsi-traffic-mode,timing等,如果客戶硬件設計轉接ic的clk不來自外部晶振,從mipi clk恢復的話,還需要設置 mipi clk強制為高速模式,通過量取mipi clk的波形來觀察是否設置成功。

​​​​​​​

  • 前面提到,除了使用i2c的配置方式,我們還可以使用mipi command的方式來做轉接ic配置

這里需要提到一點,一般這些lcd的參數都已經固化,不需要我們來額外的去配置,那我們可以修改高通初始化panel的時候發送init command的流程來配置轉接ic。

首先我們需要了解高通配置 init command的dsi數據包的格式,80-nu323-3中相關描述如下:
​​​​​​​

對應的將彩條測試通過的那組參數對應的填到 command數組中

​​​​​​​

同理在 lk中 也做相應的配置即可, 這里就不再詳細描述。

  • 建議使用device/qcom/common/display/tools/parser.pl 腳本生成填充 配置panel,bootloader,kernel中需要的配置文件。
  • 使用mipi command配置,即不需要加載自行實現的i2c驅動了,注意將rst腳換成我們的轉接ic 的en,同時注意ldo6的上下電,如果客戶使用的不是ldo6這路電,需要在 原有的邏輯上加上對應的一路電。

通過以上配置,硬件上ok的話,即可輸出正常的android畫面。 調試過程中,多使用示波器測量相應的信號電平及波形,確認了本文提及的一些點后,基本上都可以成功點亮。

​​​​​​​

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM