1 引言 Samsung公司推出的16/32位RISC處理器S3C2410A為手持設備和一般類型應用提供了低功耗、低價格、高性能小型微控制器的解決方案,適用于信息家電、PDA,手持設備、移動終端等領域。LQ104V1DG61是SHARP公司年產的高亮度TFT有源矩陣液品顯示器,該模塊包括TFT-LCD顯示屏、驅動電路和背光源,分辨率為640x480像素,可顯示262144種色。本顯示系統在工業控制方面有著廣泛的應用前景。 2 TFT-LCD模塊的時序要求和時間參數 2.1 TFT-LCD模塊的時序要求 從控制時序圖可以獲得電路在任何時刻各信號的狀態信息。在控制時序圖的幫助下我們可以了解模塊的硬件電路是按照什么方式工作的。通過適當的順序設置系統中的寄存器可以控制模塊實現需要的功能。TFT-LCD模塊的控制時序如圖1所示。 ![]() 圖1 LQ104V1DG61控制時序圖 2.2 TFr-LCD模塊的時間參數 掌握了主要時間參數就知道怎么設置寄存器的值,如何讓模塊正常工作以及發揮最好的效果。LQ104V1DG61的主要時間參數如表1所示。 表1 LQ104V1DG61主要時間參數 ![]() 3 硬件電路設計 ![]() 圖2 S3C2410A與LQ104V1DG61模塊連接示意圖 S3C2410A內部自帶一個LCD驅動控制器。LQ104V1DG61要求其電源電壓Vdd典型值為3.3V/5V,LCD數據和控制信號的高電平輸入電壓 Vin在2.3-5.5V范圍內,低電平輸入電壓vin則在-0.3-0.9v范圍內,可以直接與S3C2410A相連,這也是本電路非常簡單的原因,不需要設計許多輔助電路,連接電路圖如土2所示。 4 系統軟件設計 S3C2410A處理器中的LCD控制器內含寄存器LCDCON1、LCDCON2、LCDCON3 LCDCON4和LCDCON5。 VSYNC和HSYNC脈沖的產生依賴于LCDCON2/LCDCON3寄存器的HOZVAL域和LINEVAL域的配置。HOZVAL和LINEVAL的值由LCD屏的尺寸決定: HOZVAL=水平顯示尺寸-1 (1) LINEVAL=垂直顯示尺寸-1 (2) VCLK信號的頻率取決于LCDCON1寄存器中的CLKVAL域(CLKVAL的最小值是0) VCLK(Hz)=HCLK/[(CLKVAL+1)x2] (3) 一般情況下,幀頻率就是VSYNC信號的頻率,它與LCDCON1和LCDCON2/LCDCON3/LCDCON4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL 和CLKVAL都有關系。大多數LCD驅動器都需要與顯示器相匹配的幀頻率,幀頻率計算公式如下: FrameRate=1{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]x[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)1 x[2×(CLKVAL+1)/{HCLK)]} (4) 對于LQ104V1DG61,寄存器的具體設置如下: (1)在LCDCON1中,CLKVAL是時鐘參數,用于計算VCLK,對于LQ104V1DG61,域值取0。PNRMODE是顯爾模式參數,域值取3,表示所用模塊是TFT型。BPPMODE足每個象素的數據位數參數,對于LQ104V1DG61模塊,設計時可設咒成16bpp,所以域值取12。 (2)在LCDCON2中,VBPD為Ver Back Porch,取為25。LINEVAL為Ver Pixels,域值取479。VFPD為Ver Front Porch,該域值取2,VSPW為Vertical Sync Time,該域值取2。 (3)在LCDCON3中,HBPD為Hor Back Parch,域值取40。HOZVAL為ver Pixels,域值取639,HFPD為Hor Front Porch,域值取8。 (4)在LCDCON4中只需要設置HSPW即可,它為Hor SyncTime,域值取96。 (5)在LCDCON5中,BPP24BL用于決定24bpp視頻存儲器的大小端模式,域值取0,代表小端模式。FRM565決定16hpp視頻輸入數據的格式,取0,代表5:5:5:1模式。INVVLINE決定VSYNC信號的脈沖極性,對于LQl04V1DG61選1。INVVFRAME決定VFRAME信號的脈沖極性,對于LQ104V1DG61選1。 在基于S3C2410A的硬件平臺上安裝嵌入式Linux操作系統,為了使LCD能夠正常顯示,還需要在嵌入式Linux系統下開發LCD的驅動程序。 Framebuffer是Linux2.4內核的一種顯示驅動程序接口。這種接口將顯示設備抽象為幀緩沖區,用戶可以將它看成是顯示內存的一個映象。在使用幀緩沖時,Linux將顯卡置于圖形模式下。 根據基于FrameBuffer機制的S3C2410Afb驅動程序進行調試,獲得成功,下面是部分代碼,可對顯示屏幕進行初始化并設置LCD控制寄存器的值: staticstructS3C2410Afb_mach_infoxxx_sin_info_initdata={pixclock:39721, bpp:16, xres:640, yres:480, hsync_len:96, vsync_len:2, left_margin:40, upper_margin:24, right_margin:32, lower_margin:11, sync:0, cmap_static:1, reg:{//設置LCD控制寄存器的值 lcdcon1:LCD1_BPP_16T|LCD1_PNR_TFT|LCD1_CLKVAL(0), lcdcon2:LCD2_VBPD(25)|LCD2_VFPD(2)|LCD2_VSPW(2), lcdcon3:LCD3_HBPD(40)|LCD3_HFPD(8), lcdcon4:LCD4_HSPW(96)|LCD4_MVAL(13), lcdcon5:LCD5_FRM565|LCD5_INVVLIEN|LCD5_INVVFRAME|LCD5_HWSWP|LCD5_PWRER, }, }; 5 實驗結果 ![]() 圖3液晶模塊顯示結果 從圖3可以看到系統顯示的靜態畫面,畫面清晰穩定,達到預期效果,從而證明實驗的硬件設計和操作系統中的軟件設計是成功的,本方案具有可行性。 6 結論 本文創新點在于:在顯示模塊的選取上充分考慮到處理器顯示接口的特點,使得硬件設計簡單明了,搭建了嵌入式液晶開發底層平臺,成功解決液晶模塊的控制問題。在現實應用中,對該方案稍加修改就可用于很多不問場合,對于本系統的研究很有意義。 作者:郭岳峰,蘇宛新 來源:《微計算機信息》(嵌入式與SOC)2009年第4-2期 |