時序圖
下面是LCD RGB 控制的典型時序圖
天啊,一下就上這玩意,怎么看???
其實要解釋上面的時序圖,我們還需要了解一些LCD的顯示過程。所以現在只是有個印象,稍后我們詳細講解。
LCD顯示流程
LCD顯示一張圖片,其實是每一個像素點的填充,只是速度很快我們人眼沒有察覺而已。如果將LCD的顯示頻率降低,我們能明顯感覺整個屏幕的閃爍現象。
- 我們將LCD屏幕分為水平方向和垂直方向
一般我們的行在水平方向,LCD每一行的像素點被逐一填充,填充完一行繼續填充下一行,填充順序可以為左->右 或者 右->左
- 一行有多少像素點?
- 一個LCD需要填充多少行?
通過查看LCD的手冊,例如一個800*480的液晶屏,表示一行(水平)800個像素點,一共有480行。
例如下圖中現實一幀的圖像(從左到右,從上到下)
每一幀圖像,就從第一行的第一個像素點一直填充到最后一行的最后一個像素點。
為了能簡單演示一下效果,假設我們現在讓LCD現實藍色,那么LCD的填充效果就像下面的圖片
好了,如果能了解這個像素填充的過程。那么我接下來就開始分時時鍾和LCD現實的關系。
LCD時鍾分析
我們知道了LCD現實一幀圖像也就是像素填充的過程,但是由於速度太快我們察覺不出來,那么這個“快”到底是多快呢?
顯示一行
- 800*480的RGB LCD屏幕
- 24bpp 顯示模式
顯示一行,我們LCD需要填充800個像素點。每一個像素由RGB三元素組成,每個元素(R、G、B)由8bit位數組成,也就是說一個像素我們需要通過信號線傳輸24bit的數據。
那么顯示一行800個像素需要多長時間呢?我們先看一個要介紹的時鍾–像素時鍾CLK
像素時鍾
上圖中CLK就是像素時鍾,每一個時鍾周期發送一個像素的數據。根據我們LCD的參數,例如一行有800個像素,那么經過800個CLK時鍾,我們就填充完了800個像素。
問題來了…
1. 哪一個CLK代表一行的開始?
2. 哪一個CLK代表第一個有效的像素數據?
所以針對上面的問題,我們還需要介紹兩個時鍾行同步時鍾HSYNC和有效數據使能VDEN
水平同步時鍾 HSYNC
HSYNC水平同步信號,表示一行數據的開始。具體如下圖
其中CLK沒有任何變化,只是多了HSYNC和DEN兩個信號。
如圖中的紅色箭頭,當HSYNC產生了如圖所示的變化表示新的一行數據傳送馬上開始,當ENB信號線為高電平期間傳輸的數據視為有效數據。這樣一來,一行800個像素的數據才能正確的傳送完成。
顯示一幀
垂直同步時鍾VSYNC
為什么要有VSYNC呢,按照我們之前假設的800*480LCD。從第一行一直到最后一行,整個LCD屏幕所有像素填充完畢,這一過程也就是寫了一幀數據,我們如果要LCD能夠實時顯示畫面,很顯然一幀數據肯定不夠,所以L要給LCD不斷的提供新的幀數據,這無非也就是重復上述顯示一幀的過程。
上圖中VSYNC垂直同步信號,當產生如圖所示的變化,就代表新的一幀數據馬上開始傳送。那么這里沒有有效數據信號呢??
其實很簡單,因為新的一幀數據不就是從LCD第一行的第一個像素開始填充嘛,那么前面我們已經說明了每一行都自己的同步信號,而每一行也有對應的數據有效信號線。所以垂直同步信號只用關心從一幀數據(8000*480)的同步,而不同關心每一行的同步。
於是,我們將上面分析的時鍾放在一起,就變成了LCD RGB模式的典型時序圖