基于ARM芯片S3C2410的TFT-LCD驅(qū)動(dòng)方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
S3C2410是三星公司生產(chǎn)的基于ARM920T內(nèi)核的RISC微處理器,主頻率可達(dá)203MHz,適用于信息家電、Smart Phone、Tablet、手持設(shè)備、移動(dòng)終端等領(lǐng)域。其中,集成的LCD控制器具有通用性,可與大多數(shù)的LCD顯示模塊接口。
PD064VT5是一種用非晶硅TFT作為開(kāi)關(guān)器件的有源矩陣液晶顯示器,該模塊包括TFT-LCD顯示屏、驅(qū)動(dòng)電路和背光源,其接口為T(mén)TL電平。分辨率為640 x480像素,可通過(guò)18bit數(shù)據(jù)信號(hào)顯示262 144種色彩。
1 S3C2410的LCD控制器
S3C2410中的LCD控制器可用于傳輸視頻數(shù)據(jù)并產(chǎn)生必要的控制信號(hào)(像VFRAME、VLINE、VCLK、VM等)。S3C2410的輸出視頻數(shù)據(jù)端口VD [23:0]的示意圖如圖1所示。
通常使用的LCD控制管腳的定義如下:
VCLK:像素時(shí)鐘信號(hào);
VD [23:0]:LCD像素輸出端口;
VM/VDEN/TP:LCD驅(qū)動(dòng)器的AC偏置信號(hào)(STN)/數(shù)據(jù)使能信號(hào)(TFT)/SEC TFT源驅(qū)動(dòng)器數(shù)據(jù)加載脈沖信號(hào)復(fù)用端口。
1.1 S3C2410中的LCD控制寄存器
S3C2410的LCD控制寄存器主要有LCDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器和LCDCON5寄存器。
1.2 控制流程
由圖1可見(jiàn),S3C2410中的LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600組成。其中REGBANK有17個(gè)可編程寄存器組和256x16的調(diào)色板存儲(chǔ)器,可用來(lái)設(shè)定LCD控制器;LCDCDMA是一個(gè)專(zhuān)用DMA,可自動(dòng)從幀存儲(chǔ)器傳輸視頻數(shù)據(jù)到LCD控制器,通過(guò)這個(gè)特殊的DMA,視頻數(shù)據(jù)可不經(jīng)過(guò)CPU處理就在屏幕上顯示;VIDPRCS可接收從LCDCDMA來(lái)的視頻數(shù)據(jù)并將其修改到合適數(shù)據(jù)格式,然后經(jīng)VD[23:0]送到LCD驅(qū)動(dòng)器,如4/8單掃描或4雙掃描顯示模式;TIMEGEN則由可編程邏輯組成,可支持不同LCD驅(qū)動(dòng)器接口時(shí)序和不同的速率,TIMEGEN用于產(chǎn)生VFRAME、VLINE、VCLK、VM等信號(hào)。
FIFO存儲(chǔ)器通常位于LCDCDMA。當(dāng)FIFO為空或部分為空時(shí),LCDCDMA要求從基于突發(fā)傳輸模式的幀存儲(chǔ)器中取出數(shù)據(jù)并存入要顯示的圖像數(shù)據(jù),而這幀存儲(chǔ)器是LCD控制器在RAM中開(kāi)辟的一片緩沖區(qū)。當(dāng)這個(gè)傳輸請(qǐng)求被存儲(chǔ)控制器中的總線(xiàn)仲裁器接收后,系統(tǒng)存儲(chǔ)器就給內(nèi)部FIFO成功傳輸4個(gè)字。FIFO的總大小是28個(gè)字。其中低位FIFOL是12個(gè)字,高位FIFOH是16個(gè)字。S3C2410有兩個(gè)FIFO,可支持雙掃描顯示模式。但在單掃描模式下只使用一個(gè)FIFO (FIFOH)。
1.3 TFT控制器操作
S3C2410可支持STN-LCD和TFT-LCD,這里只介紹其對(duì)TFT-LCD的控制。TIMEGEN可產(chǎn)生LCD驅(qū)動(dòng)器的控制信號(hào)(如VSYNC、HSYNC、VCLK、VDEN和LEND等)。這些控制信號(hào)與REGBANK寄存器組中的LCDCON1/2/3/4/5寄存器的配置關(guān)系相當(dāng)密切?;贚CD控制寄存器中的這些可編程配置,TIMEGEN便可產(chǎn)生可編程控制信號(hào)來(lái)支持不同類(lèi)型的LCD驅(qū)動(dòng)器。而VSYNC和 HSYNC脈沖的產(chǎn)生則依賴(lài)于LCD-CON2/3寄存器的HOZVAL域和LINEVAL域的配置。HOZVAL和L NEVAL的值由LCD屏的尺寸決定:
HOZVAL=水平顯示尺寸-1 (1)
LINEVAL=垂直顯示尺寸-1 (2)
VCLK信號(hào)的頻率取決于LCDCON1寄存器中的CLKVAL域。VCLK和CLKVAL的關(guān)系如下(其中CLKVAL的最小值是0):
VCLK(Hz)=HCLK/[(CLKVAL+1)x2] (3)
一般情況下,幀頻率就是VSYNC信號(hào)的頻率,它與LCDCON1和LCDCON2/3/4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有關(guān)系。大多數(shù)LCD驅(qū)動(dòng)器都需要與顯示器相匹配的幀頻率,幀頻率計(jì)算公式如下:
Frame Rate=1{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (4)
參照PD064VT5的參數(shù)和公式(1)、(2)可得出:HOZVAL=639;LINEVAL=479。其余主要寄存器的值在下面給出。
2 PD064VT5的邏輯時(shí)序
PD064VT5的時(shí)序參數(shù)如表1所列,圖2所示是PD064VT5的主要操作時(shí)序。根據(jù)該時(shí)序要求,設(shè)計(jì)時(shí)可設(shè)定VM/VDEN信號(hào)作為L(zhǎng)CD的ENAB信號(hào),VCLK信號(hào)作為L(zhǎng)CD的NCLK信號(hào)。要想得到合適的VM和VCLK波形,就要正確設(shè)定寄存器的值,并根據(jù)寄存器的值與VM和VCLK波形的關(guān)系設(shè)定如下關(guān)鍵寄存器的值: [!--empirenews.page--]
HSPW=10;HBPD=100;HFPD=47;
VSPW=1;VBPD=37;VFPD=4
由于S3C2410的HCLK工作頻率大多在100MHz左右,因此,根據(jù)公式(3)可設(shè)CLKVAL=1。
3 嵌入式Linux下驅(qū)動(dòng)程序的開(kāi)發(fā)
圖3所示是S3C2410與PD064VTS的硬件連接電路。
開(kāi)發(fā)該嵌入式系統(tǒng)驅(qū)動(dòng)程序時(shí),FrameBuffer可作為出現(xiàn)在Linux2.2.xx內(nèi)核當(dāng)中的一種驅(qū)動(dòng)程序接口。對(duì)應(yīng)的源文件在linux/driver s/video/目錄下,總的抽象設(shè)備文件為fbcon.c。這種接口將顯示設(shè)備抽象為幀緩沖區(qū),用戶(hù)可以將它看成是顯示內(nèi)存的一個(gè)映像。但在使用幀緩沖時(shí),Linux是將顯卡置于圖形模式下的。
根據(jù)以上對(duì)LCD各主要寄存器設(shè)置的分析所得出的結(jié)果,筆者開(kāi)發(fā)了基于FrameBuffer機(jī)制的S3C2410fb驅(qū)動(dòng)程序。下面是調(diào)試成功的部分代碼,作用是初始化顯示屏幕和設(shè)置LCD控制寄存器的值。
4 結(jié)束語(yǔ)
本設(shè)計(jì)經(jīng)過(guò)硬件方面的調(diào)試修改,在S3C2410開(kāi)發(fā)板的VCLK腳和VM腳成功得到了PD064VT5所需的時(shí)鐘信號(hào)和復(fù)合控制信號(hào);同時(shí)通過(guò)在軟件方面修改S3C2410的驅(qū)動(dòng)程序,并經(jīng)編譯整個(gè)系統(tǒng)后再重新寫(xiě)到Flash中,可以在重啟后正確顯示原系統(tǒng)的靜態(tài)啟動(dòng)畫(huà)面,而且畫(huà)面清晰穩(wěn)定,達(dá)到了預(yù)期的效果。該裝置可用于工業(yè)控制和車(chē)載通信等領(lǐng)域的顯示輸出設(shè)備,如再加上適當(dāng)?shù)挠|摸屏,還可組成方便可靠的輸入輸出設(shè)備。