S3C2410 TFT LCD顯示原理分析
1、系統(tǒng)結(jié)構(gòu)框圖
2、LCD控制器
由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600組成。
REGBANK有17個可編程寄存器和256×16的調(diào)色板存儲器,用來設(shè)定LCD控制器。LCDCDMA是一個專用DMA,自動從幀存儲器傳輸視頻數(shù)據(jù)到LCD控制器,用這個特殊的DMA,視頻數(shù)據(jù)可不經(jīng)過CPU干涉就顯示在屏幕上。VIDPRCS接受從LCDCDMA來的視頻數(shù)據(jù)并在將其改變到合適數(shù)據(jù)格式后經(jīng)VD[23:0]將之送到LCD驅(qū)動器,如4/8單掃描或4雙掃描顯示模式。TIMEGEN由可編程邏輯組成,以支持不同LCD驅(qū)動器的接口時序和速率的不同要求。TIMEGEN產(chǎn)生VFRAME、VLINE、VCLK、VM信號等。
數(shù)據(jù)流描述如下:FIFO存儲器位于LCDCDMA。當(dāng)FIFO空或部分空時,LCDCDMA要求從基于突發(fā)傳輸模式的幀存儲器中取來數(shù)據(jù),存入要顯示的圖像數(shù)據(jù),而這個幀存儲器是LCD控制器在RAM中開辟的一片緩沖區(qū)。當(dāng)這個傳輸請求被存儲控制器中的總線仲裁器接收到后,從系統(tǒng)存儲器到內(nèi)部FIFO就會成功傳輸4個字。FIFO的總大小是28個字,其中低位FIFOL是12個字,高位FIFOH是16個字。S3C2410有兩個FIFO來支持雙掃描顯示模式。在單掃描模式下,只使用一個FIFO(FIFOH)。
3、LCD控制器輸出信號分析
VFRAME/VSYNC:LCD控制器和LCD驅(qū)動器之間的幀同步信號。該信號告訴LCD屏新一幀開始了。LCD控制器在一幀顯示完成后立即插入一個VFRAME信號,開始新一幀的顯示。VLINE/HSYNC--LCD控制器和LCD驅(qū)動器之間的行同步脈沖信號。該信號用于LCD驅(qū)動器將水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整行數(shù)據(jù)移人LCD驅(qū)動器后,插入一個VLINE信號。VCLK--LCD控制器和LCD驅(qū)動器之間的像素時鐘信號。LCD控制在VCLK的上升沿處送出數(shù)據(jù),LCD驅(qū)動器在VCLK的下降沿處采樣。VM/VDEN--LCD驅(qū)動器的AC信號。VM信號被LCD驅(qū)動器用于改變行和列的電壓極性,從而控制像素點(diǎn)的顯示。VM信號能夠和每幀同步,也能夠和可變數(shù)據(jù)的VLINE信號同步。VD[23:0]--LCD像素數(shù)據(jù)輸出端口。
4、時序分析
需要注意的是:在幀的領(lǐng)域里,我們所說的周期單位是一行;而在行的時候,我們所說的周期單位是VCLK時鐘周期。
以240*320的屏為例,一個VCLK周期傳輸一組VD信號,從而給一個像素著色。要點(diǎn)亮一行,那么要有240個VCLK周期將240個pixel的VD值輸出,而且這240個周期內(nèi) VDEN應(yīng)該一直是有效的。現(xiàn)在我們的思路從點(diǎn)擴(kuò)展到了行,理想情況下,兩行之間不需要間隔,也就是說這一行結(jié)束馬上傳輸下一行的第一個pixel的 VD。但是這樣做并不好,因?yàn)橐粋€點(diǎn)的偏差會造成滿盤皆輸。因此我們引入了行同步HSYNC信號,也就是說在傳輸完一行的數(shù)據(jù)后,先歇一會兒,等待若干個時鐘(我們稱之為后插入等待周期);然后我們送一個行同步信號,當(dāng)然這個信號的有效周期數(shù)我們也能控制(我們稱之為同步周期);之后呢,我們在等一會,讓 LCD驅(qū)動電路準(zhǔn)備好接收,我們在把一行的數(shù)據(jù)發(fā)下去(這個等待時間我們稱之為前插入等待周期)。下圖為證:
從圖中我們可以看到:HSPW+1、HBPD+1、HFPD+1就是我們分別定義了同步周期、前插入等待周期、后插入等待周期。而HOZVAL+1則是一行的有效象素數(shù)目。這些都可以在寄存器里面進(jìn)行設(shè)置。說完行與行之間的顯示,我們就可以擴(kuò)展到幀與幀之間的顯示。我們很容易想到,在幀的領(lǐng)域里面也應(yīng)該是類似于行的結(jié)構(gòu),同樣包含了同步周期、前插入等待周期、后插入等待周期。上圖為證:
經(jīng)過上述的分析,我們可以把TFT LCD的接口歸納到8個參數(shù)上:HSPW、HBPD、HFPD、HOZVAL、VSPW、VBPD、VFPD、LINEVAL。另外,通過上述分析,我們可以看到,顯示一幀圖像總共需要的VCLK周期為:(HSPW+HBPD+HFPD+HOZVAL+4)*(VSPW+VBPD+VFPD+ LINEVAL+4),VCLK是可調(diào)的,因此通過選擇適當(dāng)?shù)姆诸l比保證幀率在60Hz左右就可保證液晶的正常工作了。
舉例說明:YFARM9-EDU-1 采用的是Samsung 公司的1 款3.5 寸TFT 真彩LCD 屏,分辨率為240*320,下圖為該屏的時序要求。
于是:
VSPW+1=2 -> VSPW=1 HSPW+1=4 -> HSPW=3
VBPD+1=2 -> VBPD=1 HBPD+1=7 -> HBPW=6
VFPD+1=3 -> VFPD=2 HFPD+1=31 -> HFPD=30
LINVAL+1=320-> LINVAL=319 HOZVAL+1=240-> HOZVAL=239
5、LCD可編程寄存器
5.1、LCDCON1
LINECNT:行計數(shù)器的狀態(tài)位。只讀,不用配置。
CLKVAL:確定VCLK頻率的參數(shù)。公式為VCLK=HCLK/[(CLKVAL+1)×2],單位為Hz。筆者所用的硬件系統(tǒng)HCLK=100 MHz,640×480的顯示屏需要VCLK=20 MHz,故需配置CLKVAL=1。
MMODE:確定VM的改變速度。在此選擇MMODE=O,為每幀變化模式。PNRMODE:確定掃描方式。選擇PNRMODE=0x3,為TFT LCD面板掃描模式。BPPMODE:確定BPP(每像素位數(shù))模式。在此選擇BPPMODE=0xC,為TFT 16位模式。ENVID:數(shù)據(jù)輸出和邏輯信號使能控制位。選擇ENVID=1,為允許數(shù)據(jù)輸出和邏輯控制。
5.2、LCDCON2
VBPD:確定幀同步信號和幀數(shù)據(jù)傳輸前的一段延遲時間,是幀數(shù)據(jù)傳輸前延遲時間和行同步時鐘間隔寬度的比值。
LINEVAL:確定顯示的垂直方向尺寸。公式:LINEVAL=YSIZE-1=479。
VFPD:確定幀數(shù)據(jù)傳輸完成后到下一幀同步信號到來的一段延遲時間,是幀數(shù)據(jù)傳輸后延遲時間和行同步時鐘間隔寬度的比值。
VSPW:確定幀同步時鐘脈沖寬度,是幀同步信號時鐘寬度和行同步時鐘間隔寬度的比值。
5.3、 LCDCON3
HBPD:確定行同步信號和行數(shù)據(jù)傳輸前的一段延遲時間,描述行數(shù)據(jù)傳輸前延遲時間內(nèi)VCLK脈沖個數(shù)。
HOZAL:確定顯示的水平方向尺寸。公式HOZAL=XSIZE-1。
HFPD:確定行數(shù)據(jù)傳輸完成后到下一行同步信號到來的一段延遲時間,描述行數(shù)據(jù)傳輸后延遲時間內(nèi)VCLK脈沖個數(shù)。
5.4、 LCDCON4寄存器
HSPW:確定行同步時鐘脈沖寬度。描述行同步脈沖寬度時間內(nèi)VCLK脈沖個數(shù)。
5.5、LCDCON5寄存器
VSTATUS:垂直方向狀態(tài)。只讀,不用配置。
HSTATUS:水平方向狀態(tài)。只讀,不用配置。
BPP24BL:確定顯示數(shù)據(jù)存儲格式。此處配置BPP24BL=0x0,為小端模式存放。
FRM565:確定16位數(shù)據(jù)輸出格式。此處配置FRM565=0x1,為5:6:5格式輸出。
INVVCLK:確定VCLK脈沖有效邊沿極性。如INVVCLK=0xl,VCLK上升沿到來時數(shù)據(jù)傳輸開始。
INVVLlNE:確定HSYNC脈沖的極性。
INVVFRAME:確定VSYNC脈沖的極性。
INVVD:確定數(shù)據(jù)輸出的脈沖極性。
INVVDEN:確定VDEN信號極性。
INVPWREN:確定PWREN信號極性。
INVLEND:確定LEND信號極性。
PWREN:PWREN信號輸出允許。
ENLEND:LEND輸出信號允許。
BSWP:字節(jié)交換控制位。如配置BSWP=0x0,禁止字節(jié)交換。
HWSWP:半字交換控制位。如配置HWSWP=0xl,使能半字節(jié)交換。