s3c2440LCD控制器設(shè)置及代碼詳解_第1頁
s3c2440LCD控制器設(shè)置及代碼詳解_第2頁
s3c2440LCD控制器設(shè)置及代碼詳解_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1. LCD工作的硬件需求:要使一塊LCD正常的顯示文字或圖像,不僅需要LCD驅(qū)動(dòng)器,而且還需要相應(yīng)的LCD®制器。在通常情況下,生產(chǎn)廠商把LCD驅(qū)動(dòng)器會(huì)以COF/CO曲形式與LCD玻璃基板制作在一起,而LCD®制器則是由外部的電路來實(shí)現(xiàn),現(xiàn)在很多的MClrt部都集成了LCD空制器,如S3C2410/2440等。通過LCDS制器就可以產(chǎn)生LCD驅(qū)動(dòng)器所需要的控制信號(hào)來控制STN/TFT屏了。2. S3C2440內(nèi)部LCD空制器結(jié)構(gòu)圖:sy&ienbusLPC36tXJ3timingcontrollogicunMforLTS35OQ1-PD1orLTS350Q1-PD

2、SLCC36MkatimingcontrollogkunitforLTS350G1-PE1orLTS350Q1-PE2我們根據(jù)數(shù)據(jù)手冊來描述一下這個(gè)集成在S3C2440內(nèi)部的LCD控制器:a:LCD空制器由REGBANKLCDCDMATIMEGENVIDPRCSJ存器組成;b:REGBANK17個(gè)可編程的寄存器組和一塊256*16的調(diào)色板內(nèi)存組成,它們用來配置LCD控制器的;c:LCDCDMA一個(gè)專用的DMA它能自動(dòng)地把在偵內(nèi)存中的視頻數(shù)據(jù)傳送到LCD驅(qū)動(dòng)器,通過使用這個(gè)DM/®道,視頻數(shù)據(jù)在不需要CPU勺干預(yù)的情況下顯示在LCD屏上;d:VIDPRC皴收來自LCDCDMA數(shù)據(jù),將數(shù)

3、據(jù)轉(zhuǎn)換為合適的數(shù)據(jù)格式,比如說4/8位單掃,4位雙掃顯示模式,然后通過數(shù)據(jù)端口VD23:0傳送視頻數(shù)據(jù)到LCD驅(qū)動(dòng)器;e:TIMEGEN可編程的邏輯組成,他生成LC削區(qū)動(dòng)器需要的控制信號(hào),比如VSYNCHSYNCVCL圈日LEN牽等,而這些控制信號(hào)乂與REGBANK存器組中的LCDCON1/2/3/4/5的配置密切相關(guān),通過不同的配置,TIMEGE僦能產(chǎn)生這些信號(hào)的不同形態(tài),從而支持不同的LCD驅(qū)動(dòng)器(即不同的STN/TFT屏)。VSYIKHSTOCVDEHHSTffCVCLKVDVDEHLENDTFT屏工作時(shí)序圖LCDS供的外部接口信號(hào):VSYNC/VFRAME/S:TS直同步信號(hào)(TFT)

4、/幀同步信號(hào)(STN)/SECTFT信號(hào);HSYNC/VLINE/CPV水平同步信號(hào)(TFT)/行同步脈沖信號(hào)(STN)/SECTFT信號(hào);VCLK/LCD_HCLK象素時(shí)鐘信號(hào)(TFT/STN)/SECTFT信號(hào);VD23:0:LCD像素?cái)?shù)據(jù)輸出端口(TFT/STN/SECTFT);VDEN/VM/TP數(shù)據(jù)使能信號(hào)(TFT)/LCD驅(qū)動(dòng)交流偏置信號(hào)(STN)/SECTFT信號(hào);LEND/STH行結(jié)束信號(hào)(TFT)/SECTFT信號(hào);LCD_LPCOESECTFT。日言號(hào);LCD_LPCREVSECTFTREV!號(hào);LCD_LPCREVBSECTFTREVB"。所有顯示器顯示圖像的原

5、理都是從上到下,從左到右的。這是什么意思呢?這么說吧,一副圖像可以看做是一個(gè)矩形,由很多排列整齊的點(diǎn)一行一行組成,這些點(diǎn)稱之為像素。那么這幅圖在LCD上的顯示原理就是:A:顯示指針從矩形左上角的第一行第一個(gè)點(diǎn)開始,一個(gè)點(diǎn)一個(gè)點(diǎn)的在LCD上顯示,在上面的時(shí)序圖上用時(shí)間線表示就為VCLK我們稱之為像素時(shí)鐘信號(hào);B:當(dāng)顯示指針一直顯示到矩形的右邊就結(jié)束這一行,那么這一行的動(dòng)作在上面的時(shí)序圖中就稱之為1Line;C:接下來顯示指針乂回到矩形的左邊從第二行開始顯示,注意,顯示指針在從第一行的右邊回到第二行的左邊是需要一定的時(shí)間的,我們稱之為行切換;D:如此類推,顯示指針就這樣一行一行的顯示至矩形的右下角

6、才把一副圖顯示完成。因此,這一行一行的顯示在時(shí)間線上看,就是時(shí)序圖上的HSYNCE:然而,LCD的顯示并不是對一副圖像快速的顯示一下,為了持續(xù)和穩(wěn)定的在LCD上顯示,就需要切換到另一幅圖上(另一幅圖可以和上一副圖一樣或者不一樣,目的只是為了將圖像持續(xù)的顯示在LCD上)。那么這一副一副的圖像就稱之為幀,在時(shí)序圖上就表示為1Frame,因此從時(shí)序圖上可以看出1Line只是1Frame中的一行;F:同樣的,在幀與幀切換之間也是需要一定的時(shí)間的,我們稱之為幀切換,那么LCDft個(gè)顯示的過程在時(shí)間線上看,就可表示為時(shí)序圖上的VSYNC上面時(shí)序圖上各時(shí)鐘延時(shí)參數(shù)的含義如下:(這些參數(shù)的值,LCD產(chǎn)生廠商會(huì)

7、提供相應(yīng)的數(shù)據(jù)手冊)VBPD(verticalbackporch):表示在一幀圖像開始時(shí),垂直同步信號(hào)以后的無效的行數(shù),對應(yīng)驅(qū)動(dòng)中的upper_margin;VFBD(verticalfrontporch):表示在一幀圖像結(jié)束后,垂直同步信號(hào)以前的無效的行數(shù),對應(yīng)驅(qū)動(dòng)中的lower_margin;VSPW(verticalsyncpulsewidth):表示ft直同步脈沖的寬度,用行數(shù)計(jì)算,對應(yīng)驅(qū)動(dòng)中的vsync_len;HBPD(horizontalbackporch):表示從水平同步信號(hào)開始到一行的有效數(shù)據(jù)開始之間的VCLK勺個(gè)數(shù),對應(yīng)驅(qū)動(dòng)中的left_margin;HFPD(horizo

8、ntalfrontporth):表示一行的有效數(shù)據(jù)結(jié)束到下一個(gè)水平'同步信號(hào)開始之間的VCLK勺個(gè)數(shù),對應(yīng)驅(qū)動(dòng)中的right_margin;HSPW(horizontalsyncpulsewidth):表示水平同步信號(hào)的寬度,用VCLK計(jì)算,對應(yīng)驅(qū)動(dòng)中的hsync_len;對丁以上這些參數(shù)的值將分別保存到REGBANK存器組中的LCDCON1/2/3/4/5寄存器中:(對寄存器的操作請查看S3c2440數(shù)據(jù)手冊LCD部分)LCDCON117-8位CLKVAL6-5位掃描模式(對丁STN屏:4位單/雙掃、8位單掃)-1位色位模式(1BPP、8BPR16BPP)LCDCON231-24位V

9、BPD23-14位LINEVAL13-6位VFPD-0位VSPWLCDCON325-19位HBPD18-8位HOZVAL7-0位HFPDLCDCOIN47-0位HSPWLCDCON54.幀緩沖(FrameBuffer):幀緩沖是Linux為顯示設(shè)備提供的一個(gè)接口,它把一些顯示設(shè)備描述成一個(gè)緩沖區(qū),允許應(yīng)用程序通過FrameBuffer定義好的接口訪問這些圖形設(shè)備,從而不用去關(guān)心具體的硬件細(xì)節(jié)。對丁幀緩沖設(shè)備而言,只要在顯示緩沖區(qū)與顯示點(diǎn)對應(yīng)的區(qū)域?qū)懭腩伾?,對?yīng)的顏色就會(huì)自動(dòng)的在屏幕上顯示。下面來看一下在不同色位模式下緩沖區(qū)與顯示點(diǎn)的對應(yīng)關(guān)系:下面看看2440test里面的lcd.c文件sta

10、ticvoidPutPixel(U32x,U32y,U16c)if(x<SCR_XSIZE&&y<SCR_YSIZE)LCD_BUFFER(y)(x)=c;很容易發(fā)現(xiàn)TFTLCD上顯示單個(gè)像素的函數(shù)實(shí)際上很簡潔看來似乎只需要LCD_BUFFER(y)(x)=c這一句話下面就來分析下,是女m可通過這一句話來實(shí)現(xiàn)在LCD上顯示單個(gè)像素的先分析下LCD_Init()即LCD®始化函數(shù)5)|(12<<1);rLCDCON1=(LCD_PIXCLOCK<<8)|(3<<LCDCON10x4d000000#defineLCDWIDT

11、H240#defineLCDHEIGHT320#defineLCDPIXCLOCK4#defineLCD_RIGHT_MARGIN36#defineLCD_LEFT_MARGIN19#defineLCD_HSYNC_LEN5#defineLCD_UPPER_MARGIN1#defineLCD_LOWER_MARGIN5#defineLCD_VSYNC_LEN1CLKVAL17:8=4TFT:VCLK=HCLK/(CLKVAL+1)*2(CLKVAL>=0)MMODE7=0PNRMODE6:5=11TFTLCDpanelBPPMODE4:1=110016bppforTFTDisableEN

12、VID0=0rLCDCON2=(LCD_UPPER_MARGIN<<24)|(LCD_HEIGHT-1)<<14)|(LCD_LOWER_MARGIN<<6)|(LCD_VSYNC_LEN<<0);LCDCON20x4d000004VBPD=1VBPD(verticalbackporch):表示在一幀圖像開始時(shí),垂直同步信號(hào)以后的無效的行數(shù),對應(yīng)驅(qū)動(dòng)中的upper_marginLINVAL=240-1LINVALLCDS的垂直大小VFPD=5VFPD(verticalfrontporch):表示在一幀圖像結(jié)束后,垂直同步信號(hào)以前的無效的行數(shù),對應(yīng)

13、驅(qū)動(dòng)中的lower_marginVSPW=1VSPW(verticalsyncpulsewidth):表示ft直同步脈沖的寬度,用行數(shù)計(jì)算,對應(yīng)驅(qū)動(dòng)中的vsync_lenrLCDCON3=(LCD_RIGHT_MARGIN<<19)|(LCD_WIDTH-1)<<8)|(LCD_LEFT_MARGIN<<0);LCDCON30x4d000008HBPD=36HBPD(horizontalbackporch):表示從水平同步信號(hào)開始到一行的有效數(shù)據(jù)開始之間的VCLKS勺個(gè)數(shù),對應(yīng)驅(qū)動(dòng)中的left_marginHOZVAL=320-1HOZVALLCDS的水平大

14、小HFPD=19HFPD(horizontalfrontporth):表示一行的有效數(shù)據(jù)結(jié)束到下一個(gè)水平同步信號(hào)開始之間的VCLK勺個(gè)數(shù),對應(yīng)驅(qū)動(dòng)中的right_marginrLCDCON4=(13<<8)|(LCD_HSYNC_LEN<<0);LCDCON40x4d00000cMVAL=13HSPW=5HSPW(horizontalsyncpulsewidth):表示水平同步信號(hào)的寬度,用VCLK#算,對應(yīng)驅(qū)動(dòng)中的hsync_len#defineLCD_CON5(1<<11)|(1<<9)|(1<<8)|(1<<3)|(

15、1<<0)rLCDCON5=LCDCON5;HWSWP=1PWREN=1LCDCON50x4d000010SwapEnableEnablePWRENsignalINVVFRAME=1VFRAME/VSYNCpulsepolarityInverted選擇負(fù)極性脈沖INVVLINE=1VLINE/HSYNCpulsepolarityInverted選擇負(fù)極性脈沖FRM565=15:6:5FormatrLCDINTMSK|=3;INT_FrSyn=1LCDframesynchronizedinterruptMaskedINT_FiCnt=1LCDFIFOinterruptMaskedrT

16、CONSEL&=(7);rTCONSEL&=(1<<4)|1);MODE_SEL=0SyncmodeRES_SEL=0320x240LPC_EN=0LPC3600DisablerTPAL=0x0;TemporarypaletteregisterenablebitDisablevolatilestaticunsignedshortLCD_BUFFERSCR_YSIZESCR_XSIZE;#defineLCD_ADDR(U32)LCD_BUFFER)#defineM5D(n)(n)&0x1fffff)rLCDSADDR1=(LCD_ADDR>>22)

17、<<21)|(M5D(LCD_ADDR>>1)<<0);rLCDSADDR2=M5D(LCD_ADDR+LCD_WIDTH*LCD_HEIGHT*2)>>1);rLCDSADDR3=LCD_WIDTH;LCDSADDR10x4d00001眥緩沖起始寄存器1ThesebitsindicateA30:22ofthebanklocationforthevideobufferinthesystemmemory.LCDBANKvaluecannotbechangedevenwhenmovingtheviewport.LCDframebuffershould

18、bewithinaligned4MBregion,whichensuresthatLCDBANKaluewillnotbechangedwhenmovingtheviewport.So,careshouldbetakentousethemalloc()Function系統(tǒng)內(nèi)存地址A30:22處的Bank位置為圖像緩沖。LCDBANK值在視圖移動(dòng)的值在視圖移動(dòng)時(shí)不能改變,LCD幀緩沖應(yīng)該在4MB區(qū)域?qū)R,保證LCDBANK值在移動(dòng)視圖時(shí)不會(huì)改變。LCDBASEU20:0=(U32)LCD_BUFFER>>1)&0x1fffffFordual-scanLCD:Thesebits

19、indicateA21:1ofthestartaddressoftheupperaddresscounter,whichisfortheupperframememoryofdualscanLCDortheframememoryofsinglescanLCD.Forsingle-scanLCD:ThesebitsindicateA21:1ofthestartaddressoftheLCDframebuffer.雙掃描:表明高地址計(jì)數(shù)器的起始地址A21:1,用于LCD雙掃描的上部幀內(nèi)存或者單掃描的幀內(nèi)存單掃描:表明LCD幀緩沖的起始地址A21:1LCDSADDR20x4d0000t8緩沖起始寄存器2LCDBASEL20:0=(LCD_ADDF+LCD_WIDTHLCD_HEIGHT2)>>1)&0x1fffff=(LCD_ADDR>>1+LCD_WIDTH*LCD_HEIGHT)&0x1fffffFordual-scanLCD:ThesebitsindicateA21:1ofthestartaddressofthelowerad

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論