上一篇博文,我們介紹了LCD RGB控制模式的典型時鐘。那麼這一片我們要詳細的去討論剩下的細節部分。 我們先回顧一下之前的典型時序圖 在這個典型的時序圖裡面,除了上篇博文講述的HSYNC VSYNC VDEN VCLK這幾信號外,我們還能看見諸如HSPW、 VSPW,HBPD、 HFPD,VBPD、 ...
上一篇博文,我們介紹了LCD RGB控制模式的典型時鐘。那麼這一片我們要詳細的去討論剩下的細節部分。
我們先回顧一下之前的典型時序圖
在這個典型的時序圖裡面,除了上篇博文講述的HSYNC VSYNC VDEN VCLK這幾信號外,我們還能看見諸如HSPW、 VSPW,HBPD、 HFPD,VBPD、 VFPD等等一些詞語。我們剩下的時鐘細節部分就是後者了,再解釋這些詞語錢,我們還是先聊點別的吧。哈哈啊哈
1. 鋪墊
在我們日常生活中,例如我們要列印材料,一般我們都是用的A4的紙張,但是你有沒有發現一般我們列印的內容離A4紙張有一定的邊距?這就是我們再word裡面可以設置的頁邊距。
我們都知道節約用紙,頁邊距的存在雖然浪費了一點紙張,但從美觀或者列印的角度上頁邊距都帶來一定的好處。在講解LCD時鐘的細節部分,就有點像設置頁邊距的趕腳...
為了能夠體現出各個時鐘和LCD有效顯示部分的關係,請參考如下兩張圖:
1. 打個比方,一張A4紙張就是LCD控制器工作的部分,而我們寫的內容在“有效顯示部分”。這兩部分用不同顏色代表,如圖1.
2. 那麼LCD顯示過程和時鐘的關係如圖2
圖2 時鐘和LCD顯示的關係
在圖2中,我畫出了一幀數據的顯示過程。從上一篇博文我們瞭解了,LCD是顯示過程是填充像素,也就是一行一行的填充直到整個LCD屏幕像素填充完畢。
3. 顯示步驟
為了更好的理解上圖,總結成以下幾個過程:
- 產生垂直信號,表示一幀數據將要開始(類似我們拿到一張A4紙張將要列印)
- 經過VBP(具體的數值在後面會解釋)個行後才開始有效數據的第一行 (類似我們調整A4紙張列印的上邊距)
- 經過HBP(具體的數值在後面會解釋)個CLK後才開始傳輸每行的有效數據。(類似調整了A4紙張的左邊距)
- 每行有效數據傳輸完畢,經過HFP個CLK後才開始下一行。(類似調整了A4紙張的右邊距)
- 重覆3和4兩個步驟一直到有效行顯示完。
- 有效行顯示完畢後,經過VFP個行後再開始下一幀數據 (類似調整了A4紙張的下邊距)
通過上面的步驟,整個過程就像設置A4紙張的上邊距、左邊距、右邊距和下邊距。但是LCD為什麼要設置這個呢?
其實就像我們列印A4的紙張,如果內容太靠邊了,一點點誤差可能就會導致一些內容不能正常顯示(讓我想起高中的盜版書,總有那麼幾頁是歪的,或者內容沒有列印完)
所以LCD控制器為了能更好的顯示有效數據,一般都要進行一系列的調整,就像上面設置的“邊距”,但是這種“邊距”不是距離而是通過上述的時鐘調整的。
註:現在的LCD比較先進了,一般都可以自動調整,但是這幾個值還是保留了下來
4. VBP、VFP、HBP、HFP具體數值
既然這是調整,那我們如何確認上述的幾個值呢?這就要我們參考LCD的相關文檔了,在LCD的數據手冊里我們能找到這些值的描述。
為了能更好的說明,我從NXP的一個技術文檔中截圖如下:文檔下載鏈接
上圖中 Horizontal synchronizing Back Proch 就是 HBP,依次類推大家就知道HFP、VBP、VFP的意思了。手冊中給我們寫出了官方推薦的值,一般我們採用推薦的值即可。
5. VSPW、HSPW
除了上述的VFP、VBP、HBP、HFP。我們還有兩個參數需要理解,他們分別是VSPW和HSPW
VSPW、HSPW這兩個值其實很簡單,其中的W代表width也就是寬度的意思。所以這兩個值分別描述的是垂直信號和水平信號的寬度,如上圖所示。
VSPW、HSPW也可以通過手冊得到官方推薦的值。
VSPW -- 垂直信號的寬度,用行為單位,從上圖可以看出推薦的值為10行
HXPW -- 水平信號的寬度,用CLK為單位,上圖推薦的值為41CLK
最後,從手冊中也能發現,和行有關的計算是以clock為單位,與垂直相關的計算都是以line為單位。
當然,說這麼多,在我們寫LCD驅動程式時能夠更好的瞭解。所以在後面的博文中,希望能結合實際的程式去分析framebuffer和LCD驅動的原理。