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