王永濤,虞 闖
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
嵌入式LCD裸機驅(qū)動的設(shè)計與實現(xiàn)
王永濤,虞 闖
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
設(shè)計一個典型的基于arm架構(gòu)處理器的TFT-LCD顯示系統(tǒng),處理器采用三星公司的S3C2440A,顯示器采用東華的WXCAT43-TG6液晶顯示模塊,通過對S3C2440A處理器中LCD控制寄存器中參數(shù)的分析,以及對WXCAT43-TG6模塊的控制時序和邏輯要求的研究,實現(xiàn)了由S3C2440控制WXCAT43-TG6圖像顯示的設(shè)計。
ARM;S3C2440;TFT-LCD;WXCAT43-TG6
隨著技術(shù)的不斷發(fā)展,嵌入式技術(shù)與顯示技術(shù)越來越受到人們的關(guān)注[1]。目前,國內(nèi)TFT-LCD技術(shù)與嵌入式技術(shù)的結(jié)合還處在初級階段,TFT-LCD主要應(yīng)用與低端處理器與高端智能產(chǎn)品中,在中低端產(chǎn)品中的應(yīng)用還不夠廣泛。本文采用arm9處理器設(shè)計了一種典型的TFT-LCD顯示系統(tǒng)。WXCAT43-TG6是一種有源矩陣液晶顯示器模塊,其由驅(qū)動電路、背光燈和4線電阻觸摸屏組成,分辨率為480×272像素,用24bit數(shù)據(jù)信號能顯示16777216種色,適用于各種終端設(shè)備的顯示。
處理器S3C2440A中的LCD 控制器可以用于傳輸視頻數(shù)據(jù)并且產(chǎn)生必要的控制信號,例如VCLK、VM 、VFRAME和VLINE等。除此之外,S3C2440A處理器還集成了傳輸視頻數(shù)據(jù)的數(shù)據(jù)端口,如圖1所示, 其中VD[23∶0]即為傳輸視頻數(shù)據(jù)的數(shù)據(jù)端口。在LCD控制器中主要包括 LPC3600、VIDPRCS、REGBANK、TIMEGEN 和 LCDCDMA等。其中, LCDCDMA模塊專門用于控制DMA,它可以通過專用DMA自動地把幀存儲器中的視頻數(shù)據(jù)讀取并傳輸;VIDPRCS用來接收LCDCDMA傳來的視頻數(shù)據(jù),然后將數(shù)據(jù)變換為特定的格式,再通過VD[23∶0]數(shù)據(jù)端口將其發(fā)送到LCD驅(qū)動器中,例如4/8位單掃描或4位雙掃描顯示模式;在REGBANK模塊中包含用于配制LCD控制器的256×16個調(diào)色存儲器和17個可編程寄存器集;TIMEGEN模塊由可編程邏輯組成, 該模塊可以用來產(chǎn)生VCLK、VM VFRAME和VLINE信號等[2-3]。
圖1 LCD控制器方框圖
S3C2440A內(nèi)置的LCD控制器提供33個輸出端口,其中包括24個數(shù)據(jù)位和9個控制位,如圖2所示。
VD[23∶0]表示LCD像素數(shù)據(jù)輸出端口; VFRAME/VSYNC可以收發(fā)LCD的控制器和驅(qū)動器之間的幀同步信號,該信號可以控制LCD屏顯示新的一幀的開始;HSYNC/VLINE可以收發(fā)LCD的控制器和驅(qū)動器之間的行同步信號,該信號可用于控制LCD驅(qū)動器將行移位寄存器中的內(nèi)容送給LCD屏顯示;VCLK/DCLK表示像素的時鐘信號;DE/VM可以收發(fā)數(shù)據(jù)使能信號,該信號可用于控制像素點的顯示或熄滅。
TIMEGEN產(chǎn)生控制信號給LCD驅(qū)動器。這些控制信號的控制操作如圖3所示:VSYNC每當發(fā)出一個脈沖時,表示新的一幀(即一屏視頻數(shù)據(jù))開始發(fā)送;每當HSYNC發(fā)出一個脈沖,意味著新的一行數(shù)據(jù)開始發(fā)送;每一個VCLK周期,表示一個像素點,即會通過VD數(shù)據(jù)線發(fā)送一個24位的數(shù)據(jù),如圖所示只有在HOZVAL區(qū)域內(nèi)VD數(shù)據(jù)線上發(fā)送的數(shù)據(jù)才會在屏幕上顯示,每行包含的VCLK周期數(shù)計算表達式為(HOZAL)+(HBPD+1)+(HSPW+1+1)+(HFPD+1),每一幀包含的VCLK周期計算式為(HSPW+HBPD+HOZAL+ HFPD+4)(VSPW+VBPD+LINEVAL+VFPD+4),其中,LCDCON1寄存器的CLKVAL字段可控制VCLK的頻率,其關(guān)系式為VCLK(Hz)=HCLK/[2(CLKVAL+1)],以上表達式中的HSPW、HBPD、HOZAL、HFPD、VSPW、VBPD、LINEVAL和VFPD的值可在LCDCON2/3/4寄存器中設(shè)置[4-6]。
圖3 TFT-LCD控制時序圖
4.1 寄存器設(shè)置
因為S3C2440A處理器的大多數(shù)引腳都是多功能引腳,所以在使用前都需要將其配置成相關(guān)功能才能使用,首先將24個數(shù)據(jù)輸出管腳配置成VD功能,并打開其上拉功能。然后設(shè)置LCD的控制寄存器,其代碼為:
rLCDCON1=(clkval?8)|(mmode?7)|(pnrmode?5)|(bppmode?1);∥右值宏的值依次為4,0,3,13
rLCDCON2=(vbpd?24)|(lineval?14)|(vfpd?6)|(vspw);∥右值宏的值依次為1,9,271,1
rLCDCON3=(hbpd?19)|(hozval?8)|(hfpd);∥右值宏的值依次為1,1,479
rLCDCON4=hspw;∥其值為40
rLCDCON5=(bpp24b1?12)|(1?11)|(invvclk?10)|(invvline?9)(invvframe?8)|(invvd?7)|
(invvden?6)|(bswp?1)|hwswp;∥右值宏的值依次為0,0,1,1,0,0,0,0
其中,語句中的右值字符串為宏定義,分別對應(yīng)各字段的值。除了以上寄存器外,還需要設(shè)置3個寄存器,它們是幀緩沖開始地址寄存器,這些寄存器包含LCDBANK、LCDBASEU、LCDB ASEL、OFFSIZE和PAGEWIDTH字段。對于單掃描模式,LCDBANK字段表示系統(tǒng)存儲器中視頻緩沖器的bank位置的A[30∶22],LCDBASEU字段表示幀緩沖器的開始地址的A[21∶1],LCDBASEL字段表示幀緩沖器的結(jié)束地址的A[21∶1],OFFSIZE字段表示虛擬屏偏移尺寸,PAGEWIDTH字段表示虛擬屏頁寬度。當LCD控制器為打開時,可以通過改變LCDBASEU和LCDBASEL的值來實現(xiàn)滾屏。這三個寄存器的設(shè)置如下:
rLCDSADDR1=(((U32)1cd_buffer?22)?21)|lower21bits((U32)1cd_buffer?1);
rLCDSADDR2=lower21bits(((U32)1cd_buffer+ysize*xsize*4)?1);∥lcdbasel;
rLCDSADDR3=xsize*2;∥其中xsize和ysize480和272
其中l(wèi)cd_buffer定義為“volatile U32 lcd_buffer[ysize][xsize];”;low21bits()函數(shù)的功能是取參數(shù)的低21位;xsize和ysize的值為屏的大小,即為480和272。
4.2 程序設(shè)計
上面的過程已經(jīng)初始化好了LCD的控制寄存器,現(xiàn)在打開LCD屏,操作為將LCDCON1寄存器的第1位置1;顯示圖像的操作為將圖像數(shù)據(jù)寫到視頻緩沖器中,例如顯示函數(shù)為:“void paint_bmp(U32 x0,U32 y0,U32 h,U32 l,const unsigned char bmp[]);”。
參數(shù)x0和y0為顯示圖像的左上角的位置,h和l表示圖像的右下角的位置,bmp即為圖像數(shù)據(jù)。在函數(shù)中要先將圖像數(shù)據(jù)轉(zhuǎn)化為24位表示,然后將其寫入lcd_buffer幀緩沖區(qū)中。LCDCDMA模塊會自動從幀緩沖區(qū)中將數(shù)據(jù)讀取并傳輸。
將一幅圖像數(shù)據(jù)載入并顯示,其結(jié)果見圖4。
圖4 圖像顯示示意圖
對TFT-LCD顯示器顯示原理及控制時序的詳細分析,通過軟件編碼對S3C2440A處理器中LCD控制寄存器中參數(shù)進行設(shè)置,實現(xiàn)了一種基于arm9處理器的LCD裸機驅(qū)動的設(shè)計。
[1]劉增水,胡力剛.基于ARM芯片的TFT-LCD顯示系統(tǒng)設(shè)計[J].儀表技術(shù),2009(5):43-45.
[2]童慶平,劉篤仁.基于ARM芯片S3C2410的TFT-LCD驅(qū)動方法[J].電子元器件應(yīng)用,2007(3):20-22.
[3]趙晶晶.基于Qt的多電飛機電源檢測系統(tǒng)研究及實現(xiàn)[D].南京:南京航空航天大學(xué),2013.
[4]張有迪,張傳勝.基于ARM控制器的TFT-LCD顯示系統(tǒng)[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2012,33(6):681-685.
[5]吳利剛.基于ARM驅(qū)動TFT-LCD模塊研究與應(yīng)用[D].汕頭:汕頭大學(xué),2011.
[6]韋東山.嵌入式linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008:197-221.
(責任編輯:馬金發(fā))
Design and Implementation of an Embedded LCD Bare-metal Driver
WANG Yongtao,YU Chuang
(Shenyang Ligong University,Shenyang 110159,China)
Introduces a typical TFT-LCD display system design based on arm processor.The processor uses Samsung S3C2440A and display adopts the WXCAT43-TG6 liquid display module of Donghua.By analyzing the S3C2440 LCD control register parameters,as well as understanding the control timing and logic requires of WXCAT43-TG6 module,achieved the image displayed design by S3C2440 control WXCAT43-TG6.
ARM;S3C2440;TFT-LCD;WXCAT43-TG6
2015-07-01
王永濤(1988—),男,碩士研究生;通訊作者:虞闖(1967—),女,副教授,研究方向:計算機應(yīng)用。
1003-1251(2016)06-0088-04
TP368
A