panel的從顯示類型上分,主要可分爲LCD和LED兩種。
前者是由背光模塊加上對液晶的控制來顯示圖像,最大的特點是背光不會閃爍,相對而言對眼睛更好。
後者是相對比較新的技術,“像素”顆粒可以各自獨立地進行發光,從而省去了LCD的背光模塊,可以做的更輕薄且不再需要很大的邊框防止漏光,故也是超窄邊框的首選。LED的動態比更好,理論上的顯示效果也會強於LED,但像素顆粒中的藍色發光材料衰減快,所以LED屏的調節難度會遠高於LED,且無論怎樣愛惜,從其點亮開始,使用壽命就已開始了倒計時。若長時間顯示同樣的圖像,可能出現“燒屏”現象,將圖像深深烙印在背景圖像中。
從接口方式上講:從最早的LCD接口(每bit數據一根data線,傳入數據爲raw data),到後來的HDMI和MIPI接口多種多樣。
但無論使用何種接口,panel需要的關鍵參數及相應配置方式都是相通的。
先看一張圖:
Kernel 源碼中Documentation/fb/framebuffer.txt 目錄有描述panel中framebuffer的抽象圖示:
各參數的意義爲:
- pixclock: pixel clock in ps (pico seconds)
- left_margin: time from sync to picture
- right_margin: time from picture to sync
- upper_margin: time from sync to picture
- lower_margin: time from picture to sync
- hsync_len: length of horizontal sync
- vsync_len: length of vertical sync
從上圖linux系統進行的frame抽象,比較容易對比出porting panel過程中需要用到的及spec中比較重要的配置參數:
參數 | Spec中常用術語 | 意義 | 備註 |
refresh | Frame Rate / FPS | 每秒刷新的幀率 | 常被設爲60 |
xres | x resolution | 行像素值 | |
yres | y resolution | 列像素值 | |
pixclock | pixel clock | 像素 clock | 單位可爲HZ或時間 |
left_margin | HBP (Horizontal Back Porch) | 從Hsync信號enable起,到行有效像素數據輸出時,中間需要插入的時鐘週期數 | |
right_margin | HFP (Horizontal Front Porch ) | 從行有效數據輸出完畢,到Hsync信號再次disable間,中途需要插入的時鐘週期數 | |
upper_margin | VFP (Vertical Front Porch) | 從Vsync信號enable起(垂直同步信號開始)到有效的幀數據首行間的無效行數 | |
lower_margin | VBP (Vertical Back Porch) | 本幀數據輸出結束到下一幀Vsync信號enable(垂直同步信號)前的無效行數 | |
hsync_len | Hsync Width | Hsync信號從非使能狀態到enable狀態間需要保持非使能狀態電平的clock數 | 個人這麼理解 |
vsync_len | Vsync Width | Vsync信號從非使能狀態到enable狀態間需要保持非使能狀態電平的clock數 | 個人也是這麼理解 |
PS:對於MIPI pane,還需要有panel的接口lane參數,其指的就是panel接的lane個數。
爲了更好的理解上表的參數,引用另一篇<博客>中很清楚的圖片(抱歉未找到其轉載的博客源):
引用:
下面以天馬的3.5寸TFT液晶屏 TM035KDH03爲例進行講解。
參數計算:
可以看到LCD時鐘是28M,所以pixclock=1000000/28
行同步脈衝寬度是一個時鐘週期,所以,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
數據在上升沿有效,輸出使能是高電平有效。
這樣一來,各個參數就很清楚了。
劃重點:場信號的頻率等於frame rate,行信號的頻率等於出現的信號行數(這裏的行數包含有效行數和VFP VBP及Vsync wide)
問題又來了,MIPI panel打的MIPI信號與上面所講的這些參數是如何聯繫上的呢?
下面是panel ic內部的部分接口圖,由圖可見,mipi協議傳來的mipi信息會通過內部芯片轉換爲內部可識別的vsnc hsync等信號。
所以我們需要將panel需要的HFP/HBP/FPS等參數,通過mipi控制器正常傳輸到芯片端,芯片就會處理這些參數。
從<轉載來源>裏可以看到:
我們先來看一個公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2
即mipi 屏的傳輸時鐘頻率(CLKN,CLKP)等於(屏幕分辨率寬width+hsync+hfp+hbp)x ( 屏幕分辨率高height+vsync+vfp+vbp) x(RGB顯示數據寬度) x 幀率/ (lane_num)/2
簡單解釋下:
一幀畫面需要的數據量爲(單位bit):FRAME_BIT = (屏幕有效顯示寬度+hsync+hfp+hbp) x ( 屏幕有效顯示高度+vsync+vfp+vbp) x(RGB顯示數據寬度24)
一秒鐘內需要傳輸的數據量爲(單位bps):FRAME_BIT x fps(幀率)。
那爲何要除以lane_num----因爲mipi通訊協議中,一個CLOCK幾個lane是可以同時傳輸數據的。
爲何又要除以2----因爲根據mipi通訊協議,CLK_N、CLK_P這兩根時鐘線的上升沿/下降沿可以獲取到數據。
因此我們可以得出如下結論:
1.在相同的時鐘頻率下,lane數越多,則單位時間內可以傳輸的數據越多。若顯示幀率固定不變,則可以支持的更大的分辨率;而分辨率固定不變的情況下,則我們可以考慮支持更高的幀率顯示。
2.在lane數固定的情況下,提高傳輸的時鐘頻率,則單位時間內也可以傳輸更多的顯示數據。進而我們可以考慮是提高幀率還是提高分辨率,或兩者做出平衡。
由此可大致瞭解相關原理。