#LCD顯示的一些基本概念引自網(wǎng)絡(luò)
數(shù)字視頻的基本概念源自于模擬視頻。對于模擬視頻我們可以這樣理解:視頻可以分解為若干個基本視點(像素),每個像素都有獨立的色彩信息,在屏幕上依次將 這些點用電子槍按照行和列打出來,就形成了一幅完整畫面,連續(xù)的打出畫面,利用人眼的延遲特點就可以“顯示”動態(tài)的圖像了。
水平消隱:電子槍從左到右畫出象素,它每次只能畫一條掃描線,畫下一條之前要先回到左邊并做好畫下一條掃描線的準(zhǔn)備,這之間有一段時間叫做水平消隱(HBlank)。
垂直消隱:在畫完全部256條掃描線之后它又回到屏幕左上角準(zhǔn)備下一次畫屏幕(幀),這之間的一段時間就是垂直消隱(VBlank)。電子槍就是在不斷的走‘之’字形。
-
行同步(HSYNC):行同步就是讓電子槍控制器知道下面要開始新的一行像素
-
場同步(VSYNC: 場同步就是告訴電子槍控制器下面要開始新的畫面
-
數(shù)據(jù)使能(DE):在數(shù)據(jù)使能區(qū)是有效的色彩數(shù)據(jù),不在使能范圍內(nèi)的都顯示黑色。
-
前肩(Front Porch)/后肩 (Back Porch) :行同步或場同步信號發(fā)出后,視頻數(shù)據(jù)不能立即使能,要留出電子槍回掃的時間。以行掃描為例,從HSYNC結(jié)束到DE開始的區(qū)間成為行掃描的后肩(綠色區(qū)域),從DE結(jié)束到HSYNC開始稱為前肩(紫色區(qū)域)。同樣對于場掃面也可以由類似的定義。
-
Pixel clock:像素時脈(Pixel clock)指的是用來劃分進來的影像水平線里的個別畫素, Pixel clock 會將每一條水平線分成取樣的樣本,越高頻率的 Pixel clock,每條掃瞄線會有越多的樣本畫素。
-
HFP: Horizon front porch
-
HBP: Horizon back porch
-
VFP: Vertical front porch
-
VBP: Vertical back porch
-
HDP:Horizon display period
-
VDP: Vertical display period
HTP = HSYNC + HDP + HFP + HBP
VTR = VSYNC + VDP + VFP + VBP
f dot _ clk = pixel clock f dot _ clk = f v * VTR * HTP f v = vertical frequency (這個是頻率,平時見到的很多時候是60HZ)
pixel clock = () 制式 總掃描線 圖像區(qū)域掃描線 水平總象素 圖像區(qū)域水平象素 采樣頻率 1080I/60Hz 1125 1080 2200 1920 74.25MHz 1080I/50Hz 1125 1080 2640 1920 74.25MHz 720P/60Hz 750 720 1650 1280 74.25MHz 720P/50Hz 750 720 1980 1280 74.25MHz
帶寬:視頻帶寬代表顯示器顯示能力的一個綜合指標(biāo),指每秒鐘所掃描的圖素個數(shù),即單位時間內(nèi)每條掃描線上顯示的頻點數(shù)總和,在模擬視頻中以MHz為單位,圖1的視頻模擬帶寬計算如下:
Analog BandWidth=165075060=74.25MHz 含義為每個時鐘要傳輸74.25M個模擬視頻數(shù)據(jù)。所以720p60 的pclk為74.25Mhz,同理1080P60的P CLOCK為148.5MHz
但是在數(shù)字視頻中由于每個像素都是由3種不同的顏色來表示,每種顏色右由一定數(shù)量的比特來傳輸,因此通常會用bps來表示數(shù)字帶寬,如果圖1中使用了RGB傳輸,每種顏色用1個字節(jié)來輸出,那么該視頻的數(shù)字帶寬為:
Digital BandWidth= 模擬帶寬8bit3=1.782Gbps 含義為每秒要傳輸1.782G個比特數(shù)據(jù)
#DSI Clock計算
目前主流的lcd都是使用mipi總線,涉及到的一些clock在這里整理一下:
H-total = HorizontalActive + HorizontalFrontPorch + HorizontalBackPorch + HorizontalSyncPulse + HorizontalSyncSkew
V-total = VerticalActive + VerticalFrontPorch + VerticalBackPorch + VerticalSyncPulse + VerticalSyncSkew
Total pixel = H-total * V-total * 60(Hz通常都是這個,當(dāng)然可以變).
Bitclk = Total pixel * bpp(byte) *8/lane number(有幾路mipi data lane).
Byteclk = bitclk/8
Dsipclk(Dsi pixel clock) = (Byteclk * lane number)/bpp(byte) = Total pixel * 8
Byteclk = pclk * pixel depth / lane number
#調(diào)試過程描述
這個是一個新平臺舊屏幕的調(diào)試,我們在rk平臺上已經(jīng)能點亮,這個是新的項目,我們滿懷信心的時候,卻發(fā)現(xiàn)怎么都不能讓這個該死的屏幕正常亮起來。
這個過程是一個非常血腥的,我們從早上10點就開始搞,到晚上12點還沒有搞通,我們領(lǐng)導(dǎo)這時候突然走到我們身邊,我跟他說了一句,我們先回去休息明天再搞了。我確實覺得有點累,而且繼續(xù)搞可能也沒有機會搞好。所以我們就下班回去了,今天早上過來,就把問題給解決了。
#解決思路
##燒錄BIST模式測試屏幕
BIST模式是LCD的一個測試模式,如果MIPI通信正確,我們發(fā)送BIST模式后,LCD會循環(huán)顯示測試的顏色界面。這一步我們測試了,確實可以進入BIST,說明我們的MIPI通信是正常的。應(yīng)該從其他部分尋找問題。
##找LCD模組廠確認參數(shù)
LCD的參數(shù)肯定是模組廠的技術(shù)最專業(yè),所以在微信群里發(fā)了下LCD的參數(shù)配置給他們看了下,馬上就發(fā)現(xiàn)了問題所在。如下圖
##排查硬件
排查硬件這一步應(yīng)該在拿到樣機就開始搞了,我們這個屏幕用的是另外項目的,所以理論上硬件是沒有問題的。點不亮的原因應(yīng)該只有一個,那就是軟件有問題,俗話說,人在路上走,鍋從天山來,就是這個意思。
整個調(diào)試有點驚險也有點刺激,文章中還沒有談到LCD的休眠喚醒流程,調(diào)試中也遇到一些平臺性的問題。因為對平臺不熟悉也成了我們都阻礙,其中非常感謝一個MTK的大牛,雖然最終不是他的思路解決問題,但是在過程中給我們提了非常有效的建議。
完…
……
作者:寫代碼的籃球球癡
來源:嵌入式Linux
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!