Windows CE LCD驅動

由於初學LCD,看原理和源代碼看了好長時間,現在總結一些
LCD驅動編寫的主要工作就是正確設置對應預新的LCD屏的CPU寄存器的設置,和LCD對應的CPU寄存器主要如下:
LCDCON1-LCDCON5,
LCDSADDR1-LCDSADDR3
REDLUT等

各個功能要看,英文的不太好看,多看幾遍就明白了。主要就是設置這些寄存器的值,這些寄存器中控制了LCD屏的大小,屏幕刷新的頻率等
在bsp的驅動中定義了相應的宏
#define LCD_XSIZE_TFT_USER      (240) 
#define LCD_YSIZE_TFT_USER      (320)

#define HOZVAL_TFT          (LCD_XSIZE_TFT_USER-1)
#define LINEVAL_TFT         (LCD_YSIZE_TFT_USER-1)

#define MVAL                (13)
#define MVAL_USED           (0)

//TFT timing parameter for V16C6448AB(PRIME VIEW)
#define VBPD                ((1-1)&0xff)
#define VFPD                ((2-1)&0xff)
#define VSPW                ((2-1) &0x3f)

#define HBPD                ((23-1)&0x7f)
#define HFPD                ((16-1)&0xff)
#define HSPW                ((16-1)&0xff)

#endif // __S3C2410_LCD_H__.
這些宏對應各個控制LCD的功能,他們含義看上面的圖。他們的值通過LCD的數據手冊得到,只是我查看了自己實驗箱的實驗手冊,沒有找到相應的數據。數據計算方法http://topic.csdn.net/u/20090817/01/bf0532a9-c2a2-4db1-b45b-4400f6b51295.html
另外就是驅動源代碼了,比較好看懂

相關知識點
LCD顯示器通常與Frame Buffer設備結合使用,系統定時將Frame Buffer中的內容寫道LCD顯示器中,在驅動 的編寫過程中,需要根據實現LCD的大小來調整CPU寄存器中相關寄存器中保存LCD大小的參數,即x,y座標的 最大值,同時根據CPU的時鐘頻率來修改LCD的刷新頻率,保證lcd的刷新頻率在50~60hz即可。
用戶程序進行lcd寫操作的時候,通常在應用程序初始化的時候映射Frame Buffer到內存中的一個地址空間, 這部分地址空間中的內容就對應着LCD顯示器中的顯示內容,lcd中每一點對應的bit寬度不同,將導致lcd顯 示器的內容在內存空間的分佈寬度。內存空間的內存分佈一一對應於LCD上的座標點。我們通過改變內存空間 的值例如從0~0xffff來使屏幕上的點由白到黑。
根據上面闡述的激勵可以將各點連接起來,實現在屏幕上畫線,甚至寫漢字,畫圖等等一些功能。
一些圖形操作平臺如minigui也是根據該原理實現的。

VCLK是用來鎖存視頻資料的像數時鐘。(相當於系統的時鐘脈衝)vclk(hclk/(clkval+1)*2,clkval自定義 ),vclk一般應該大於6.5M,HCLK爲S3C2440A 中PLL時鐘發生器產生的時鐘信號。
在幀同步以及行同步的頭尾都必須留有回掃時間,例如對於VSYNC來說前回掃時間就是(VSPW+1)+(VBPD+1), 後回掃時間就是(VFPD+1) ;
HSPW、HBPD及HFPD確定顯示區域的行有效數據信息,可以通過LCDCON各個位的含義來確定他們的含義
#define HBPD            (22)        //水平同步信號的後肩:它確定了HSYNC下降沿和開始採集數據 (VDEN)之間的時間寬度(由WebCast20090313am_PDF.pdf P39圖看出來),單位:the number of VCLK  periods
#define HFPD            (18)        //水平同步信號的前肩:它確定了數據採集結束和HSYNC的上升沿之 間的寬度;單位:the number of VCLK
#define HSPW            (18)        /水平同步信號的脈寬:它確定了HSYNC高電平的寬度(由 WebCast20090313am_PDF.pdf圖看出來)HSPW指的是HSYNC處於高電平時的VCLK的數目,單位:the number of  VCLK
VSPW、VBPD和VFPD確定顯示區域中幀有效數據信息
#define VFPD            (1)          //垂直同步信號的前肩:它確定了一幀結尾,在垂直同步信號之前 不採集數據(VDEN不使能)的???
#define VSPW            (1)          //垂直同步信號的脈寬:VSPW指的是VSYNC處於高電平時的線的數 目
注意:從其他地方看到的,修改時序 (可選的範圍很寬,很多時候可以不做修改)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章