LVDS,LCD調試總結(持續更新)【轉】


轉自:https://blog.csdn.net/a617996505/article/details/82386952

1.LVDS接口分類與數據格式
單路6it LVDS

這種接口電路中,采用單路方式傳輸,每個基色信號采用6位數據,共18位RGB數據,因此,也稱18位或18bit LVDS接口。此,也稱18位或18bit LVDS接口。

 

雙路6bit LVDS

這種接口電路中,采用雙路方式傳輸,每個基色信號采用6位數據,其中奇路數據為18位,偶路數據為18位,共36位RGB數據,因此,也稱36位或36bit LVDS接口。

 

單路8bit LVDS

這種接口電路中,采用單路方式傳輸,每個基色信號采用8位數據,共24位RGB數據,因此,也稱24位或24bit LVDS接口。

 

雙路8bit LVDS

這種接口電路中,采用雙路方式傳輸,每個基色信號采用8位數據,其中奇路數據為24位,偶路數據為24位,共48位RGB數據,因此,也稱48位或48bit LVDS接口

 

      現在市場上基本是8bit和6bit的屏幕,

 

      LVDS接口電路中,將像素的並行數據轉換為串行數據的格式主要有兩種標准:VESA和JEIDA

      1)VSEA標准格式如下圖所示:

      

      

      以上圖片是單路的VESA標准信號,對一行數據輸入則多2bit。

 

      關於雙路的信號格式這個可以舉個例子:

     

      以上圖片是雙路8bit 的VSEA標准信號。

      2)JEIDA標准是由日本電子行業開發協會(JAPANELECTRONIC INDUSTRY DEVELOPMENT ASSOCIATION)制定的標准,其格式如下:

 

    

可以對比參照查看,如果像素為6bit RGB,則每個通道只需要最上面的3對數據線,其中的R9…R4, G9…G4, B9…B4 對應實際的R5…R0, G5…G0, B5…B0;同樣,如果像素是 8 bit RGB,則每個通道只需要靠上面的4對數據線,其中的R9…R2, G9…G2, B9…B2 對應實際的R7…R0, G7…G0, B7…B0。

基本上每個屏幕的datesheet上都有相關信號圖。

由這些信號圖基本上可以判斷:       1.單雙路;

 2.是多少bit RGB;

       3.數據信號格式;

 

 

查看IMX6Q_LDB Control Register,內有相關設置:

       1.單雙路;

 2.是多少bit RGB;

       3.數據信號格式;

 

有設備樹的內核可以直接修改設備樹來操作寄存器,紅色部分即可修改的三個參數:

&ldb {

status = "okay";

dual-mode = <1>; //這里為單路LVDS,雙路應設為 split-mode = <1>;

                 lvds-channel@0 {

                 fsl,data-mapping = "spwg"; //這里為數據格式(VESA),還有一種為JEIDA的標准

                 fsl,data-width = <24>; //這里是數據位寬,即8bit RGB

                 status = "okay";

                               display-timings {

                               native-mode = <&timing0>;

                               timing0: hsd100pxn1 {

                               clock-frequency = <65000000>; //像素時鍾

                               hactive = <1280>; //橫像素點數

                               vactive = <800>; //豎像素點數

                               hback-porch = <10>; //水平后沿

                               hfront-porch = <30>; //水平前沿

                               vback-porch = <2>; //垂直后沿

                               vfront-porch = <4>; //垂直前沿

                               hsync-len = <10>; //行同步脈寬

                               vsync-len = <6>; //垂直同步脈寬

                              };

                 };

};

下面我們分析藍色部分應該如何填寫。

 

2.屏幕參數的相關設置(藍色部分)
fb_videomode各個參數的意義

各參數的抽象如下圖所示:

 

關於fb_videomode各個成員的意義詳解:

名稱

數據手冊中的簡稱

中文名

意義

備注

(簡稱或另名稱)

name

No

名字

液晶屏名字(可選)

No

refresh

No

刷新頻率

刷新頻率(內核中很多例子都賦值為60)

No

xres

No

行寬

每行的像素個數

No

yres

No

屏幕高度

屏幕的行數

No

pixclock

No

像素時鍾

每個像素時鍾周期的長度,單位是皮秒(10的負12次方分之1秒)

No

left_margin

HBP

水平后沿

在每行或每列的象素數據開始輸出時要插入的象素時鍾周期數

No

right_margin

HFP

水平前沿

在每行或每列的象素結束到LCD 行時鍾輸出脈沖之間的象素時鍾數

No

upper_margin

VBP

垂直后沿

在垂直同步周期之后幀開頭時的無效行數

No

lower_margin

VFP

垂直前沿

本幀數據輸出結束到下一幀垂直同步周期開始之前的無效行數

No

hsync_len

HPW

行同步脈寬

單位:像素時鍾周期

HWH(HSYNC width)

vsync_len

VPW

垂直同步脈寬

單位:顯示一行的時間th

HWH(HSYNC width)

sync

No

同步極性設置

可以根據需要設置FB_SYNC_HOR_HIGH_ACT(水平同步高電平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高電平有效)

No

vmode

No

No

  在內核中的大多數示例都直接置為FB_VMODE_NONINTERLACED。interlaced的意思是交錯[隔行]掃描,電視中使用2:1的交錯率, 即每幀分兩場,垂直掃描兩次,一場掃描奇數行,另一場掃描偶數行。很顯然LCD目前不是這種模式。

No

flag

No

No

目前沒有看到用法

No

 

由上圖可得:

水平總周期 = left_margin + right_margin + hsync_len

垂直總周期 = upper_margin + lower_margin + vsync_len

下面主要以16BPP的TFT屏作為例子。有的LCD會給出參數列表,比如下圖,可以很清楚的在紅框中找到需要的參數,取“type”典型值即可。但是有的LCD並沒有直接給出這樣的列表,設置某些參數沒有給出,這需要通過時序圖來確定。

 

 

下面以天馬的3.5寸TFT液晶屏 TM035KDH03為例進行講解。

參數計算:

 

可以看到LCD時鍾是28M,所以pixclock=1000000/28 ,在設備樹上是clock-frequency = <28000000>;

行同步脈沖寬度是一個時鍾周期,所以,hsync_len=1

場同步脈沖的寬度是一個行周期,所以,vsync_len = 1

 

上圖是一幀圖像的顯示時序圖。的上圖顯示,up_margin = 13-1=12,, yres= 240,

整個場周期為263,所以lower_margin= 263-13-240 = 10

同時看到,列同步信號高電平有效,行同步信號也是高電平有效。

 

上圖是一行的時序圖。

可以看到,left_margin = 69, xres = 320, right_margin = 408 -320 - 70 = 18

數據在上升沿有效,輸出使能是高電平有效。

總計一下上面的參數,得到如下結果:

static struct clcd_panel conn_lcd_panel = {  

.mode = {  

.name = "QVGA TM035KDH03",  

.refresh = 60,  

.xres = 240,  

.yres = 320,  

.pixclock = 35714,  

.left_margin = 69,  

.right_margin = 18,  

.upper_margin = 12,  

.lower_margin = 10,  

.hsync_len = 1,  

.vsync_len = 1,  

.sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,  

.vmode = FB_VMODE_NONINTERLACED,  

},  

}

所以用設備樹可以這樣寫:

              clock-frequency = <28000000>;         //像素時鍾

                            hactive = <240>;                              //橫像素點數

                            vactive = <320>;                              //豎像素點數

                            hback-porch = <18>;                           //水平后沿

                            hfront-porch = <69>;                           //水平前沿

                            vback-porch = <10>;                           //垂直后沿

                            vfront-porch = <12>;                           //垂直前沿

                            hsync-len = <1>;                              //行同步脈寬

                            vsync-len = <1>;                               //垂直同步脈寬

3.調試過程中的常見問題
    1.背光

       調試屏幕首先要把背光點亮,沒有點亮背光屏幕什么都顯示不了,根據規格書將背光點亮,可以尋求硬件工程師幫忙

    2.屏幕上星星點點
  在調試的時候,我們會發現屏幕上有莫名其妙的星星點點,一般這種情況下,我們首先要看看VGH和VGL電壓是否處於datasheet所描述的范圍之 內。如果屬於標准范圍之內,但星星點點依舊,很有可能就是時序問題。這時候不妨在代碼中變更采樣的時序(比如上升沿采樣改為下降沿采樣)。如果無法在代碼 中更改,也可以在clk信號線加個100R電阻,也可能解決該問題。

     3.顯示抖動

                在確認VPW,VBP,VFP,HPW,HBP,HFP的設置已經符合LCD規格要求后,如果屏幕的顯示還在抖動的話,不妨將輸出的時鍾信號頻率降低,有可能解決該問題。                  

               還存在一種現象,LVDS的信號線電壓高出規格書一點也會出現。曾經有過LVDS信號電壓為3.3V的接到5V導致屏幕顯示出現細小電波抖動。

    4.顯示花屏

               出現花屏現象,理論上是RGB沒有調好導致的。如顏色位數, 顏色順序導致的。

               檢查一下規格書的顏色格式部分, 是否將RGB888格式設置成了666,或者順序是RBG,BGR之類的都有可能。
————————————————
版權聲明:本文為CSDN博主「世黎」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/a617996505/article/details/82386952


免責聲明!

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



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