LVDS介面分類與資料格式

一條路走到黑_dreams發表於2020-11-18

轉發路徑:https://blog.csdn.net/a617996505/article/details/82386952

1.LVDS介面分類與資料格式

  1. 單路6it LVDS

這種介面電路中,採用單路方式傳輸,每個基色訊號採用6位資料,共18位RGB資料,因此,也稱18位或18bit LVDS介面。此,也稱18位或18bit LVDS介面。

 

  1. 雙路6bit LVDS

這種介面電路中,採用雙路方式傳輸,每個基色訊號採用6位資料,其中奇路資料為18位,偶路資料為18位,共36位RGB資料,因此,也稱36位或36bit LVDS介面。

 

  1. 單路8bit LVDS

這種介面電路中,採用單路方式傳輸,每個基色訊號採用8位資料,共24位RGB資料,因此,也稱24位或24bit LVDS介面。

 

  1. 雙路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之類的都有可能。

           

 

相關文章