1 引言 Samsung公司推出的16/32位RISC處理器S3C2410A為手持設(shè)備和一般類型應(yīng)用提供了低功耗、低價(jià)格、高性能小型微控制器的解決方案,適用于信息家電、PDA,手持設(shè)備、移動(dòng)終端等領(lǐng)域。LQ104V1DG61是SHARP公司年產(chǎn)的高亮度TFT有源矩陣液品顯示器,該模塊包括TFT-LCD顯示屏、驅(qū)動(dòng)電路和背光源,分辨率為640x480像素,可顯示262144種色。本顯示系統(tǒng)在工業(yè)控制方面有著廣泛的應(yīng)用前景。 2 TFT-LCD模塊的時(shí)序要求和時(shí)間參數(shù) 2.1 TFT-LCD模塊的時(shí)序要求 從控制時(shí)序圖可以獲得電路在任何時(shí)刻各信號(hào)的狀態(tài)信息。在控制時(shí)序圖的幫助下我們可以了解模塊的硬件電路是按照什么方式工作的。通過適當(dāng)?shù)捻樞蛟O(shè)置系統(tǒng)中的寄存器可以控制模塊實(shí)現(xiàn)需要的功能。TFT-LCD模塊的控制時(shí)序如圖1所示。 ![]() 圖1 LQ104V1DG61控制時(shí)序圖 2.2 TFr-LCD模塊的時(shí)間參數(shù) 掌握了主要時(shí)間參數(shù)就知道怎么設(shè)置寄存器的值,如何讓模塊正常工作以及發(fā)揮最好的效果。LQ104V1DG61的主要時(shí)間參數(shù)如表1所示。 表1 LQ104V1DG61主要時(shí)間參數(shù) ![]() 3 硬件電路設(shè)計(jì) ![]() 圖2 S3C2410A與LQ104V1DG61模塊連接示意圖 S3C2410A內(nèi)部自帶一個(gè)LCD驅(qū)動(dòng)控制器。LQ104V1DG61要求其電源電壓Vdd典型值為3.3V/5V,LCD數(shù)據(jù)和控制信號(hào)的高電平輸入電壓 Vin在2.3-5.5V范圍內(nèi),低電平輸入電壓vin則在-0.3-0.9v范圍內(nèi),可以直接與S3C2410A相連,這也是本電路非常簡(jiǎn)單的原因,不需要設(shè)計(jì)許多輔助電路,連接電路圖如土2所示。 4 系統(tǒng)軟件設(shè)計(jì) S3C2410A處理器中的LCD控制器內(nèi)含寄存器LCDCON1、LCDCON2、LCDCON3 LCDCON4和LCDCON5。 VSYNC和HSYNC脈沖的產(chǎn)生依賴于LCDCON2/LCDCON3寄存器的HOZVAL域和LINEVAL域的配置。HOZVAL和LINEVAL的值由LCD屏的尺寸決定: HOZVAL=水平顯示尺寸-1 (1) LINEVAL=垂直顯示尺寸-1 (2) VCLK信號(hào)的頻率取決于LCDCON1寄存器中的CLKVAL域(CLKVAL的最小值是0) VCLK(Hz)=HCLK/[(CLKVAL+1)x2] (3) 一般情況下,幀頻率就是VSYNC信號(hào)的頻率,它與LCDCON1和LCDCON2/LCDCON3/LCDCON4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL 和CLKVAL都有關(guān)系。大多數(shù)LCD驅(qū)動(dòng)器都需要與顯示器相匹配的幀頻率,幀頻率計(jì)算公式如下: 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) 對(duì)于LQ104V1DG61,寄存器的具體設(shè)置如下: (1)在LCDCON1中,CLKVAL是時(shí)鐘參數(shù),用于計(jì)算VCLK,對(duì)于LQ104V1DG61,域值取0。PNRMODE是顯爾模式參數(shù),域值取3,表示所用模塊是TFT型。BPPMODE足每個(gè)象素的數(shù)據(jù)位數(shù)參數(shù),對(duì)于LQ104V1DG61模塊,設(shè)計(jì)時(shí)可設(shè)咒成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中只需要設(shè)置HSPW即可,它為Hor SyncTime,域值取96。 (5)在LCDCON5中,BPP24BL用于決定24bpp視頻存儲(chǔ)器的大小端模式,域值取0,代表小端模式。FRM565決定16hpp視頻輸入數(shù)據(jù)的格式,取0,代表5:5:5:1模式。INVVLINE決定VSYNC信號(hào)的脈沖極性,對(duì)于LQl04V1DG61選1。INVVFRAME決定VFRAME信號(hào)的脈沖極性,對(duì)于LQ104V1DG61選1。 在基于S3C2410A的硬件平臺(tái)上安裝嵌入式Linux操作系統(tǒng),為了使LCD能夠正常顯示,還需要在嵌入式Linux系統(tǒng)下開發(fā)LCD的驅(qū)動(dòng)程序。 Framebuffer是Linux2.4內(nèi)核的一種顯示驅(qū)動(dòng)程序接口。這種接口將顯示設(shè)備抽象為幀緩沖區(qū),用戶可以將它看成是顯示內(nèi)存的一個(gè)映象。在使用幀緩沖時(shí),Linux將顯卡置于圖形模式下。 根據(jù)基于FrameBuffer機(jī)制的S3C2410Afb驅(qū)動(dòng)程序進(jìn)行調(diào)試,獲得成功,下面是部分代碼,可對(duì)顯示屏幕進(jìn)行初始化并設(shè)置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:{//設(shè)置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 實(shí)驗(yàn)結(jié)果 ![]() 圖3液晶模塊顯示結(jié)果 從圖3可以看到系統(tǒng)顯示的靜態(tài)畫面,畫面清晰穩(wěn)定,達(dá)到預(yù)期效果,從而證明實(shí)驗(yàn)的硬件設(shè)計(jì)和操作系統(tǒng)中的軟件設(shè)計(jì)是成功的,本方案具有可行性。 6 結(jié)論 本文創(chuàng)新點(diǎn)在于:在顯示模塊的選取上充分考慮到處理器顯示接口的特點(diǎn),使得硬件設(shè)計(jì)簡(jiǎn)單明了,搭建了嵌入式液晶開發(fā)底層平臺(tái),成功解決液晶模塊的控制問題。在現(xiàn)實(shí)應(yīng)用中,對(duì)該方案稍加修改就可用于很多不問場(chǎng)合,對(duì)于本系統(tǒng)的研究很有意義。 作者:郭岳峰,蘇宛新 來源:《微計(jì)算機(jī)信息》(嵌入式與SOC)2009年第4-2期 |