在lcd驅動程式中,需要我們根據lcd datasheet來設定相應的引數,這些引數包括:pixclock,left_margin,right_margin,upper_margin,lower_margin,hsync_len,vsync_len,vbp,vfb,vspw,hbp,hfp,hspw。下圖是典型的tft lcd時序圖:
__u32 pixclock; /*畫素時鐘(皮秒
)*/__u32 left_margin; /*行切換,從同步到繪圖之間的延遲
*/__u32 right_margin; /*行切換,從繪圖到同步之間的延遲
*/__u32 upper_margin; /*幀切換,從同步到繪圖之間的延遲
*/__u32 lower_margin; /*幀切換,從繪圖到同步之間的延遲
*/__u32 hsync_len; /*水平同步的長度
*/__u32 vsync_len; /*垂直同步的長度*/
vbp(vertical back porch):表示在一幀影象開始時,垂直同步訊號以後的無效的行數,對應驅動中的upper_margin;
vfb(vertical front porch):表示在一幀影象結束後,垂直同步訊號以前的無效的行數,對應驅動中的lower_margin;
vspw(vertical sync pulse width):表示垂直同步脈衝的寬度,用行數計算,對應驅動中的vsync_len;
hbp(horizontal back porch):表示從水平同步訊號開始到一行的有效資料開始之間的vclk的個數,對應驅動中的left_margin;
hfp(horizontal front porth):表示一行的有效資料結束到下乙個水平同步訊號開始之間的vclk的個數,對應驅動中的right_margin;
hspw(horizontal sync pulse width):表示水平同步訊號的寬度,用vclk計算,對應驅動中的hsync_len;
pixclock的計算:
dotclk = fframe × (x + hbp + hfp+hspw) × (y + vbp + vfp+vspw) (單位:mhz)
pixclock = 1012/ dotclk=1012/ (fframe × (x + hbp + hfp+hspw) × (y + vbp + vfp+vspw)) (單位:皮秒)
根據上圖及上面的解說就容易看懂這值是如何設定的了:
.left_margin = 68, //調整水平的位置,如果太小就會把影象左邊的部分會顯示在屏的右邊
.right_margin = 39, //其他的如何設定請檢視
.upper_margin = 16,
.lower_margin = 13,
.hsync_len = 31,
.vsync_len = 4,
上面的那個left_margin有時不太準確,在應用的過程中可以修正,下面的這幾個修改好後就可以用。
LCD驅動中pixclock的計算
在lcd驅動程式中,需要我們根據lcd datasheet來設定相應的引數,這些引數包括 pixclock,left margin,right margin,upper margin,lower margin,hsync len,vsync len,vbp,vfb,vspw,hbp,hfp,hspw...
LCD驅動中pixclock的計算
在lcd驅動程式中,需要我們根據lcd datasheet來設定相應的引數,這些引數包括 pixclock,left margin,right margin,upper margin,lower margin,hsync len,vsync len,vbp,vfb,vspw,hbp,hfp,hspw...
LCD以及引數設定問題
1 在kernel中的oal層有對lcd的初始化配置initdisplay 這個是我需要修改的部分 在這裡主要是對2440的5個lcd暫存器配置 lcdcon1 lcdcon5 在s2440.h中對lcd的幾個時序進行了初始化 define vbpd 15 垂直同步訊號後肩vsync back po...