调试LCD反被调戏了
相關文章
調試,是一件有挑戰的事情
這篇文章的題目應該寫做 - 我又被LCD艸了一個晚上。寫個文檔簡單總結下
#LCD顯示的一些基本概念
數字視頻的基本概念源自于模擬視頻。對于模擬視頻我們可以這樣理解:視頻可以分解為若干個基本視點(像素),每個像素都有獨立的色彩信息,在屏幕上依次將 這些點用電子槍按照行和列打出來,就形成了一幅完整畫面,連續的打出畫面,利用人眼的延遲特點就可以“顯示”動態的圖像了。
水平消隱:電子槍從左到右畫出象素,它每次只能畫一條掃描線,畫下一條之前要先回到左邊并做好畫下一條掃描線的準備,這之間有一段時間叫做水平消隱(HBlank)。
垂直消隱:在畫完全部256條掃描線之后它又回到屏幕左上角準備下一次畫屏幕(幀),這之間的一段時間就是垂直消隱(VBlank)。電子槍就是在不斷的走‘之’字形。
行同步(HSYNC):行同步就是讓電子槍控制器知道下面要開始新的一行像素
場同步(VSYNC:?場同步就是告訴電子槍控制器下面要開始新的畫面
數據使能(DE):在數據使能區是有效的色彩數據,不在使能范圍內的都顯示黑色。
前肩(Front Porch)/后肩 (Back Porch) :行同步或場同步信號發出后,視頻數據不能立即使能,要留出電子槍回掃的時間。以行掃描為例,從HSYNC結束到DE開始的區間成為行掃描的后肩(綠色區域),從DE結束到HSYNC開始稱為前肩(紫色區域)。同樣對于場掃面也可以由類似的定義。
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 = () 制式 ? ? ? ? ?總掃描線 ? ? ? 圖像區域掃描線 ? ? ? 水平總象素 ? ? ? 圖像區域水平象素 ? ? ? 采樣頻率 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
帶寬:視頻帶寬代表顯示器顯示能力的一個綜合指標,指每秒鐘所掃描的圖素個數,即單位時間內每條掃描線上顯示的頻點數總和,在模擬視頻中以MHz為單位,圖1的視頻模擬帶寬計算如下:
Analog BandWidth=165075060=74.25MHz 含義為每個時鐘要傳輸74.25M個模擬視頻數據。所以720p60 的pclk為74.25Mhz,同理1080P60的P CLOCK為148.5MHz
但是在數字視頻中由于每個像素都是由3種不同的顏色來表示,每種顏色右由一定數量的比特來傳輸,因此通常會用bps來表示數字帶寬,如果圖1中使用了RGB傳輸,每種顏色用1個字節來輸出,那么該視頻的數字帶寬為:
Digital BandWidth= 模擬帶寬8bit3=1.782Gbps 含義為每秒要傳輸1.782G個比特數據
#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通常都是這個,當然可以變).
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
#調試過程描述
這個是一個新平臺舊屏幕的調試,我們在rk平臺上已經能點亮,這個是新的項目,我們滿懷信心的時候,卻發現怎么都不能讓這個該死的屏幕正常亮起來。
這個過程是一個非常血腥的,我們從早上10點就開始搞,到晚上12點還沒有搞通,我們領導這時候突然走到我們身邊,我跟他說了一句,我們先回去休息明天再搞了。我確實覺得有點累,而且繼續搞可能也沒有機會搞好。所以我們就下班回去了,今天早上過來,就把問題給解決了。
#解決思路
##燒錄BIST模式測試屏幕
BIST模式是LCD的一個測試模式,如果MIPI通信正確,我們發送BIST模式后,LCD會循環顯示測試的顏色界面。這一步我們測試了,確實可以進入BIST,說明我們的MIPI通信是正常的。應該從其他部分尋找問題。
##找LCD模組廠確認參數
LCD的參數肯定是模組廠的技術最專業,所以在微信群里發了下LCD的參數配置給他們看了下,馬上就發現了問題所在。如下圖
##排查硬件
排查硬件這一步應該在拿到樣機就開始搞了,我們這個屏幕用的是另外項目的,所以理論上硬件是沒有問題的。點不亮的原因應該只有一個,那就是軟件有問題,俗話說,人在路上走,鍋從天山來,就是這個意思。
整個調試有點驚險也有點刺激,文章中還沒有談到LCD的休眠喚醒流程,調試中也遇到一些平臺性的問題。因為對平臺不熟悉也成了我們都阻礙,其中非常感謝一個MTK的大牛,雖然最終不是他的思路解決問題,但是在過程中給我們提了非常有效的建議。
完…
……
如果想討論人生~就點擊下面~
你不知道在我的小蜜圈會發現什么好東西
? 回復「?籃球的大肚子」進入技術群聊
回復「1024」獲取1000G學習資料
總結
以上是生活随笔為你收集整理的调试LCD反被调戏了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LinuxGPIO操作和MTK平台GPI
- 下一篇: AD9361 补充(中)