LVDS接口分类与数据格式
轉發路徑: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之類的都有可能。
???????????
?
總結
以上是生活随笔為你收集整理的LVDS接口分类与数据格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10开机wsappx进程占用CPU
- 下一篇: 【无标题】2022甘肃省安全员C证试题及