轉自: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