程靜濤
(山西輕工職業(yè)技術(shù)學(xué)院,山西 太原 030001)
液晶屏(Liquid Crystal Display,LCD)按顯示原理分為STN和TFT兩種,由于TFT(薄膜晶體管,Thin Film Transistor)彩色液晶屏顏色逼真透亮廣泛用于制作成計(jì)算機(jī)、手機(jī)中的液晶顯示。帶有觸摸屏的TFT在嵌入式系統(tǒng)設(shè)計(jì)中越來(lái)越成為設(shè)計(jì)的主流。
文章采用三星公司推出的16/32位RISC微處理器S3C2440A,完成與WXCAT43-TG3#001的接口和程序設(shè)計(jì)。
圖1為S3C2440處理器的LCD控制器[1]主要部分框圖。
圖1 S3C2440處理器的LCD控制器主要部分框圖
如圖1所示,LCDCDMA負(fù)責(zé)自動(dòng)將幀緩沖區(qū)中的顯示數(shù)據(jù)發(fā)往LCD驅(qū)動(dòng)器。通過(guò)DMA傳輸顯示數(shù)據(jù)可以不需要CPU的干涉自動(dòng)地發(fā)送到屏幕上。REGBANK的主要功能是將其中的17個(gè)可編程的寄存器組和256×16調(diào)色板內(nèi)存用于配置LCD控制器。VIDPRCS將LCDCDMA發(fā)送過(guò)來(lái)的數(shù)據(jù)變換為合適的格式(單掃描或雙掃描顯示模式)之后通過(guò)VD[23:0]發(fā)送到LCD驅(qū)動(dòng)器。TMIEGEN的可編程邏輯用于支持不同類(lèi)型的LCD驅(qū)動(dòng)器對(duì)時(shí)序以及速率的需求。S3C2440 LCD控制器輸出接口說(shuō)明如表1所示。
不管是利用開(kāi)發(fā)板設(shè)計(jì)還是自行設(shè)計(jì),都必須首先知道開(kāi)發(fā)板或設(shè)計(jì)板的時(shí)鐘頻率的設(shè)置:在S3C2440的Normal模式下操作中,用戶(hù)可以通過(guò)寫(xiě)P,M,S改變3個(gè)分頻器(FCLK,HCLK,PCLK)的頻率值。Mpll=(2×m ×Fin)/(p×2s),m=M(分頻器M的值)+8,p=P(分頻器P的值)+2。
當(dāng) M=184,P=10,S=0 時(shí) Mpll=384 MHz。當(dāng) Mpll=FCLK時(shí),F(xiàn)CLK用于ARM920T主頻。HCLK用于AHB總線(xiàn),例如用于ARM920T內(nèi)存控制,中斷控制,LCD控制,DMA以及USB主模塊。PCLK用于APB總線(xiàn),用于外圍設(shè)備如看門(mén)狗、IIS、I2C、PWM、MMC 接口、ADC、UART、GPIO、RTC以及SPI等。
表1 S3C2440 LCD控制器輸出接口說(shuō)明
S3C2440支持FCLK,HCLK,PCLK分頻比的選擇。比例由CLKDIVN控制寄存器中的HDIVN,PDIVN位確定。在設(shè)置P,M,S這3個(gè)值后,需要設(shè)置CLKDIVN寄存器的值。CLKDIVN的值設(shè)置在PLL鎖定期后有效。這個(gè)值也對(duì)復(fù)位和改變電源管理模式也是可用的。
該設(shè)計(jì)HDIVN設(shè)置為3,PDIVN設(shè)置為1,HCLK3_HALF設(shè)置為0,HCLK4_HALF設(shè)置為0則分頻比FCLK∶HCLK∶PCLK 為(1∶3∶6),則 FCLK=384 MHz,HCLK=128 MHz,PCLK=64 MHz。
WXCAT43-TG3#001[2]是一種 transmissive 型 a-SiTFTLCD(非晶硅薄膜晶體管液晶顯示模塊),主要由1個(gè)TFTLCD面板,1個(gè)驅(qū)動(dòng)電路,背光燈部件和1個(gè)4-wires模擬電阻式觸摸屏組成。面板尺寸是4.3 in,分辨力是480×272(顯示16∶9)。24位RGB界面,高對(duì)比度、高亮度、低功耗、4-wires模擬電阻式觸摸屏。可以顯示16.7 M種顏色和特別適合便攜式設(shè)備顯示器應(yīng)用。可用于GPS(全球定位系統(tǒng))、DVB(數(shù)字視頻廣播)、DSC(數(shù)碼相機(jī))、PMP(便攜式多媒體播放器)及其他設(shè)備需要高質(zhì)量的顯示器。
1)WXCAT43-TG3#001 電特性[2]
TFT-LCD模塊:電源3.3 V,模擬電壓5 V,時(shí)鐘頻率9 MHz;
背景燈單元:正向電壓25.6 V,電流20 mA,功耗512 mW。
2)TFT-LCD模塊框圖
TFT-LCD模塊如圖2所示,觸摸屏面板如圖3所示。
3)接口規(guī)范如表2所示。
表2 WXCAT43-TG3#001外圍管腳說(shuō)明
4)定時(shí)要求如表3所示。
表3 WXCAT43-TG3#001定時(shí)參數(shù)
5)存儲(chǔ)數(shù)據(jù)格式(TFT)
在S3C2440A里TFT液晶控制器的支持1 bpp(位/像素),2 bpp,4 bpp,8 bpp 的 palettized 彩色顯示器和16 bpp或24 bpp的non-palettized真彩顯示(true-color)。表4為存儲(chǔ)數(shù)據(jù)格式(TFT)顯示模式24 bpp顯示。
表4 顯示儲(chǔ)數(shù)據(jù)格式(TFT)24 bpp顯示模式
6)使用256調(diào)色板(TFT)
S3C2440A的TFT液晶控制,提供256個(gè)顏色的調(diào)色板。用戶(hù)可以從下面2種格式中在64 k的顏色中選擇256種顏色。256顏色調(diào)色板包括256(深度)×16位SPSRAM。支持5∶6∶5 調(diào)色板(R,G,B)的格式和 5∶5∶5∶1(R,G,B∶i)的格式。當(dāng)用戶(hù)使用 5∶5∶5∶1 格式,強(qiáng)度數(shù)據(jù)(i)作為每個(gè)RGB數(shù)據(jù)的一種常見(jiàn)LSB位。所以,5∶5∶5∶i格式等同于 R(5+i)∶G(5+i)∶B(5+i)的格式。
例如,在5∶5∶5∶i格式中,用戶(hù)可以寫(xiě)入調(diào)色板,然后連接VD引腳到TFT液晶面板,R(5+i)=VD[23:19]+VD[18],VD[10]或 VD[2],G(5+i)=VD[15:11]+VD[18],VD[10]或 VD[2],B(5+i)=VD[7:3]+VD[18],VD[10]或VD[2]。并且設(shè)置LCDCON5寄存器的FRM565為0。
0x4D000400是調(diào)色板的開(kāi)始地址。VD10,VD2,VD18有相同的輸出值i。[31:16]數(shù)據(jù)是無(wú)效的。當(dāng)用戶(hù)對(duì)調(diào)色板執(zhí)行讀/寫(xiě)操作時(shí),必須檢查L(zhǎng)CDCON5寄存器的HSTATUS和VSTATUS,因?yàn)閂STATUS和HSTATUS工作狀態(tài)期間,讀/寫(xiě)操作是禁止的。
特別注意:在S3C2440中,大多數(shù)的管腳都復(fù)用,所以必須對(duì)每個(gè)管腳進(jìn)行配置。端口控制寄存器(GPnCON)定義了每個(gè)管腳的功能。
下文將著重介紹TFT LCD的設(shè)計(jì)步驟。
WXCAT43-TG3#001 TFT連接如圖4所示。
圖4 WXCAT43-TG3#001 TFT連接圖
1)LCD背光燈控制
WXCAT43-TG3#001背光燈需要25.6 V的直流電源,該設(shè)計(jì)采用DC-DC直流升壓芯片見(jiàn)圖4。利用S3C2440的GPF4腳可以控制背景燈的開(kāi)啟和關(guān)閉,當(dāng)GPF4腳為高電平時(shí),Q2、Q1導(dǎo)通,25 V電壓加到WXCAT43-TG3#001的2腳,使其點(diǎn)亮LED,如果GPF4腳輸出PWM波,則可以改變其背光亮度。特別在設(shè)備休眠狀態(tài),及時(shí)關(guān)閉LED,可以達(dá)到節(jié)能目的。所以需將對(duì)應(yīng)的GPIO設(shè)置為禁止上拉(GPFUP相應(yīng)位4寫(xiě)入1),選擇output類(lèi)型(GPFCON相應(yīng)位[9:8]寫(xiě)入01),輸出為高電平開(kāi)啟背景燈,低電平關(guān)閉背景燈(GPFDAT相應(yīng)位4寫(xiě)入1或0以控制背景燈的開(kāi)啟和關(guān)閉)。
2)LCD電源控制
可以將GPG4選擇為L(zhǎng)CD_PWREN(GPGCON[9:8]寫(xiě)入10),這時(shí)候LCD電源的打開(kāi)/關(guān)閉可以通過(guò)LCDCON5[3]來(lái)控制。也可以自定義其他GPIO用作LCD電源開(kāi)關(guān),只需將此GPIO設(shè)置為禁止上拉(GPxUP相應(yīng)位寫(xiě)入1),選擇output類(lèi)型(GPxCON相應(yīng)位寫(xiě)入01),輸出為高電平(GPxDAT相應(yīng)位寫(xiě)入1)打開(kāi)LCD電源。該設(shè)計(jì)采用第一種控制方式。
3)信號(hào)線(xiàn)設(shè)置[4]
信號(hào)線(xiàn)包括 VD0~VD23。將LCD的R0~R7,G0~G7,B0~B7等24根管腳和S3C2440的VD0~VD23腳相連,設(shè)置GPCCON[0~31]寫(xiě)入10(其中GPC8~GPC15對(duì)應(yīng)VD0~VD7),GPDCON[0~31]寫(xiě)入10(其中 GPD0~GPD15對(duì)應(yīng)VD8~VD23)構(gòu)成LCD模式。
4)VFRAME(VSYNC),VLINE(HSYNC),VCLK 及VM(VDEN)的設(shè)置
如上所述分別在GPCCON中設(shè)置(10)使GPC4(VM),GPC3(VFRAME),GPC2(VLINE),GPC1(VCLK)處于相應(yīng)功能。
5)設(shè)置LCD的頻率(VCLK)
CLKVAL寄存器的值確定VCLK的頻率和幀速率。對(duì)于TFT LCD,S3C2440提供的VCLK的計(jì)算公式為
VCLK=HCLK/((CLKVAL+1)×2) (1)
幀速率=1/{[(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)]× [(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (2)
LCD的數(shù)據(jù)手冊(cè)上一般會(huì)寫(xiě)有一個(gè)推薦的頻率,該設(shè)計(jì)使用的屏幕推薦頻率為9 MHz,需要通過(guò)一些計(jì)算選擇一個(gè)合適的CLKVAL以產(chǎn)生這個(gè)頻率??梢缘贸?/p>
CLKVAL=HCLK/(VCLK×2)–1 (3)
由前述 FCLK∶HCLK∶PCLK=1∶3∶6,HCLK 是 128 MHz(CPU運(yùn)行在384 MHz),VCLK使用屏幕推薦的9 MHz,得到:CLKVAL=128 MHz/(9 MHz×2)-1=6.1111。選擇最接近的整數(shù)值6,寫(xiě)入LCDCON1[17:8]。
6)各寄存器數(shù)據(jù)設(shè)置
通過(guò)語(yǔ)句:#define項(xiàng)目名(值)進(jìn)行定義。
7)設(shè)置視頻緩沖區(qū)的地址
S3C2440支持虛擬屏幕,可以通過(guò)改變LCD寄存器實(shí)現(xiàn)屏幕快速移動(dòng)。
幀緩沖區(qū)的開(kāi)始地址1寄存器LCDSADDR1,地址0x4D000014,復(fù)位值0x00000000。幀緩沖區(qū)的開(kāi)始地址2寄存器LCDSADDR2,地址0x4D000018,復(fù)位值0x00000000。
8)FRAME緩存開(kāi)始地址寄存器3 LCDSADDR3,地址0x4D00001C,復(fù)位值0x00000000
#define OFFSIZE 0x200 //虛擬屏幕左側(cè)偏移的字節(jié)數(shù)(半字的數(shù)量)計(jì)算方法:虛擬屏幕上一行的半字-LCDpingshang一行的后半字
#define PAGEWIDTH 0x2C0//虛擬屏幕頁(yè)面寬度(半字?jǐn)?shù))。這個(gè)值定義幀的可視端口的寬度。480×8/16=240
9)TCON控制寄存器TCONSEL、地址0x4D000060、復(fù)位值0xF84(取復(fù)位狀態(tài))
10)屏蔽LCD中斷,LCDINTMSK、地址0x4D00005C、復(fù)位值0x3(取復(fù)位狀態(tài))
11)禁止臨時(shí)調(diào)色板TPAL、地址0x4D000050、復(fù)位值0x00000000(取復(fù)位狀態(tài))
S3C2440具有8通道模擬輸入,10位CMOS的ADC(模數(shù)轉(zhuǎn)換器)。最大的轉(zhuǎn)換率是在2.5 MHz轉(zhuǎn)換時(shí)鐘下達(dá)到500 ksample/s。觸摸屏接口XP,XM,YP,YM分別與XR,XL,YU,YD 連接如圖4。供電電壓3.3 V,輸入模擬電壓范圍:0~3.3 V。圖5為AD轉(zhuǎn)換器和觸摸屏接口的功能模塊圖。
當(dāng)觸摸屏接口使用時(shí),XM或PM應(yīng)該接觸摸屏接口的地。當(dāng)觸摸屏設(shè)備不使用時(shí),XM或PM應(yīng)該連接模擬輸入信號(hào)作為普通ADC轉(zhuǎn)換用。
觸摸屏接口模式可根據(jù)需要進(jìn)行選擇,常用的有正常轉(zhuǎn)換模式、分離XY坐標(biāo)轉(zhuǎn)換模式、自動(dòng)(連續(xù))XY坐標(biāo)轉(zhuǎn)換模式、等待中斷模式等。
圖5 S3C2440 AD轉(zhuǎn)換器和觸摸屏接口的功能模塊圖
/*ADC控制寄存器:ADCCON、地址0x58000000、復(fù)位值0x3FC4*/
#define PRSCEN 1//AD轉(zhuǎn)換器預(yù)分頻器(預(yù)定標(biāo)器)使能0:無(wú)效1:有效
#define PRSCVL 32//AD轉(zhuǎn)換器預(yù)分頻器(預(yù)定標(biāo)器)值數(shù)值:0~255
#define SEL_MUX 5//模擬輸入通道選擇000:AIN0 001:AIN1 010:AIN2011:AIN3100:YM 101:YP 110:XM 111:XP
#define STDBM 0//備用操作模式選擇0:普通操作模式1:備用模式
#define START 0//AD轉(zhuǎn)換通過(guò)讀取開(kāi)始。0表示通過(guò)讀取操作開(kāi)始無(wú)效,1表示通過(guò)讀取操作開(kāi)始有效
#define ENABLE_START 0//AD轉(zhuǎn)換開(kāi)始有效。如果READ_START有效,該值無(wú)效。0表示無(wú)操作,1表示AD轉(zhuǎn)換開(kāi)始且該位在開(kāi)始后清零
注:當(dāng)觸摸屏觸點(diǎn)(YM,YP,XM,XP)無(wú)效,這些引腳應(yīng)該用于作為ADC 的模擬輸入引腳(AIN4,AIN5,AIN6,AIN7)。
/*ADC觸摸屏控制寄存器:ADCTSC、地址0x58000004、復(fù)位值0x58*/#define UD_SEN 0//檢測(cè)光標(biāo)上下?tīng)顟B(tài)0:檢測(cè)光標(biāo)按下中斷信號(hào)1:檢測(cè)光標(biāo)抬起中斷信號(hào)
#define PULL_UP 1//上拉開(kāi)關(guān)使能。0表示XP上拉有效,1表示XP上拉無(wú)效。
#define AUTO_PST 1//自動(dòng)連續(xù)轉(zhuǎn)換X坐標(biāo)和Y坐標(biāo):0表示普通ADC轉(zhuǎn)換,1表示自動(dòng)連續(xù)測(cè)量X坐標(biāo)和Y坐標(biāo)
ADC觸摸屏控制寄存器如表5所示。
表5 ADC觸摸屏控制寄存器(ADCTSC)
1)ADC開(kāi)始延時(shí)寄存器:ADCDLY、地址0x58000008、復(fù)位值0x00FF。
2)ADC轉(zhuǎn)換數(shù)據(jù)寄存器0:ADCDAT0、地址0x5800000C。
3)ADC轉(zhuǎn)換數(shù)據(jù)寄存器1:ADCDAT1、地址0x58000010。
ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0/ADCDAT1)如表6所示。
表6 ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0/ADCDAT1)
4)ADC觸摸屏指針上下中斷檢測(cè)寄存器:ADCUPDN、地址0x58000014、復(fù)位值0x0,即
ADC觸摸屏指針上下中斷檢測(cè)寄存器(ADCUPDN)如表7所示。
表7 ADC觸摸屏指針上下中斷檢測(cè)寄存器(ADCUPDN)
除上述初始化程序外,以下是該顯示驅(qū)動(dòng)的主要程序,供讀者參考:
通過(guò)以上對(duì)各寄存器的分析得知,只要根據(jù)所用的TFT觸摸屏的參數(shù),將ARM的LCD控制器與ADC觸摸控制器對(duì)所設(shè)計(jì)的TFT-LCD及觸摸屏項(xiàng)目參數(shù)對(duì)應(yīng)找到修改寄存器的數(shù)值,即可達(dá)到控制的目的。程序編寫(xiě)時(shí)應(yīng)根據(jù)數(shù)據(jù)的寬度適當(dāng)調(diào)整DELAY控制參數(shù)。觸摸屏讀取X,Y數(shù)據(jù)時(shí),應(yīng)適當(dāng)加入延時(shí)程序,防止抖動(dòng)。ARM的LCD控制器允許設(shè)置VCLK,VLINE,VFRAME等信號(hào)的極性(上升沿有效還是下降沿有效),需要對(duì)照設(shè)計(jì)的LCD的說(shuō)明書(shū)進(jìn)行確認(rèn)。如果不是使用三星LPC3600/LCC3600LCD,必須禁止LPC3600/LCC3600模式。
[1]RM9 基礎(chǔ)實(shí)驗(yàn)教程[EB/OL].[2011-11-10].http://www.embedinfo.com/.
[2]Roduct specifications 4.3”FT-LCD with touch panel module Model No.:WXCAT43-TG3#001[EB/OL].[2011- 11-10].http://wenku.baidu.com/view/ae4cac2a3169a4517723a310.html?from=related.
[3]應(yīng)云,曾偉,陳家勝.基于ARM的智能顯示終端[J].電子測(cè)量技術(shù),2008,31(1):160-162.
[4]曉光,王永明,祝明德.基于CPLD的液晶顯示屏與嵌入式處理器的接口設(shè)計(jì)[J]. 電子測(cè)量技術(shù),2006(5):36-38.