新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 網上S3C2440驅動TFT屏資料

        網上S3C2440驅動TFT屏資料

        作者: 時間:2016-11-21 來源:網絡 收藏
        網上資料
        TFT屏
        -支持單色、4級灰度、256色的調色板顯示模式
        -支持64K和16M色非調色板顯示模式
        -支持分辯率為640*480,320*240及其它多種規格的LCD
        對于控制TFT屏來說,除了要給它送視頻資料(VD[23:0])以外,還有以下一些信號是必不可少的,分別是:
        VSYNC(VFRAME) :幀同步信號
        HSYNC(VLINE) :行同步信號
        VCLK :像數時鐘信號
        VDEN(VM) :數據有效標志信號
        一般的TFT屏工作時序

        外部引腳信號:
        VSYNC: 垂直同步信號,表示掃描1幀的開始。
        HSYNC: 水平同步信號,表示掃描1行的開始。
        VDEN:數據使能信號。
        VD[23:0] : LCD像素數據輸出端口。
        VCLK:像素時鐘信號。
        寄存器參數:
        VSPW:垂直同步信號的脈寬,單位為1行(Line)的時間。
        VFPD: 垂直同步信號的前肩,單位為1行(Line)的時間。
        VBPD: 垂直同步信號的后肩,單位為1行(Line)的時間。
        LINEVAL :垂直顯示尺寸-1,即屏行寬-1。
        HBPD:水平同步信號的后肩,單位為1VCLK的時間。
        HFPD:水平同步信號的前肩,單位為1VCLK的時間。
        HSPW:水平同步信號的脈寬,單位為1VCLK的時間。
        HOZVAL:水平顯示尺寸-1,即屏列寬-1。
        由上圖可知:
        掃描一幀所需的時間:
        =((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))個行時間。
        掃描一行所所需的時間:
        = ((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))個VCLK時間。
        而一個VCLK時間由LCD寄存器LCDCON1內的CLKVAL決定:
        =HCLK/[2*(CLKVAL+1)]
        因此掃描一幀所需的時間:
        T=[(VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1)]* [(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* HCLK/[2*(CLKVAL+1)]
        即幀頻率為:1/T

        要想正確使用LCD,必須注意兩點:1、時序;2、顯示緩存區。

        1、時序
        LCD一般需要三個時序信號:VSYNC、HSYNC和VCLK。VSYNC是垂直同步信號,在每進行一個幀(即一個屏)的掃描之前,該信號就有效一次,由該信號可以確定LCD的場頻,即每秒屏幕刷新的次數(單位Hz)。HSYNC是水平同步信號,在每進行一行的掃描之前,該信號就有效一次,由該信號可以確定LCD的行頻,即每秒屏幕從左到右掃描一行的次數(單位Hz)。VCLK是像素時鐘信號。
        s3c2440處理LCD的時鐘源是HCLK,通過寄存器LCDCON1中的CLKVAL可以調整VCLK頻率大小,它的公式為:
        VCLK=HCLK÷[(CLKVAL+1)×2]
        例如,HCLK的頻率為100MHz,要想驅動像素時鐘信號為6.4MHz的LCD屏,則通過上式計算CLKVAL值,結果CLKVAL為6.8,取整后(值為6)放入寄存器LCDCON1中相應的位置即可。由于CLKVAL進行了取整,因此我們把取整后的值代入上式,重新計算VCLK,得到VCLK=7.1MHz。
        按理說,對于一個已知尺寸(即水平顯示尺寸HOZVAL和垂直顯示尺寸LINEVAL已知)的LCD屏,只要確定了VCLK值,行頻和場頻就應該知道了。但這樣還不行的,因為在每一幀時鐘信號中,還會有一些與屏顯示無關的時鐘出現,這就給確定行頻和場頻帶來了一定的復雜性。如在HSYNC信號先后會有水平同步信號前肩(HFPD)和水平同步信號后肩(HBPD)出現,在VSYNC信號先后會有垂直同步信號前肩(VFPD)和垂直同步信號后肩(VBPD)出現,在這些信號時序內,不會有有效像素信號出現,另外HSYNC和VSYNC信號有效時,其電平要保持一定的時間,它們分別叫做水平同步信號脈寬HSPW和垂直同步信號脈寬VSPW,這段時間也不能有像素信號。因此計算行頻和場頻時,一定要包括這些信號。HBPD、HFPD和HSPW的單位是一個VCLK的時間,而VSPW、VFPD和VBPD的單位是掃描一行所用的時間。在s3c2440中,所有的這些信號(VSPW、VFPD、VBPD、LINEVAL、HBPD、HFPD、HSPW和HOZVAL)都是實際值減1的結果。這些值是通過寄存器LCDCON2、LCDCON3和LCDCON4來配置,只要把這些值配置成與所要驅動的LCD中相關內容的數據一致即可。例如,我們所要顯示的LCD屏大小為320×240,因此HOZVAL=320-1,LINEVAL=240-1。水平同步信號的脈寬、前肩和后肩分別為30、20和38,則HSPW=30-1,HFPD=20-1,HBPD=38-1;垂直同步信號的脈寬、前肩和后肩分別為3、12和15,則VSPW=3-1,VFPD=12-1,VBPD=15-1。
        下面我們就具體計算一下行頻(HSF)和場頻(VSF):
        HSF=VCLK÷[(HSPW+1)+(HSPD+1)+(HFPD+1)+(HOZVAL+1)]
        =7.1÷408=17.5kHz
        VSF=HSF÷[(VSPW+1)+(VBPD+1)+(VFPD+1)+(LINEVAL+1)]
        =17.5÷270=64.8Hz
        在有些情況下,s3c2440的LCD時鐘信號的默認極性與所控制的LCD時鐘信號的極性相反,這時可以通過寄存器LCDCON5的相關位來改變某些時鐘信號的極性。

        2、顯示緩存區
        只要把所要顯示的數據放入顯示緩存區內,就可以在屏幕上呈現內容。該緩存區是我們自己編程時開辟的一段內存區。一般我們是通過定義一個與屏幕尺寸大小相同的二維數組來開辟該空間的,這樣控制屏幕內容會方便一些,如當屏幕的尺寸為320×240時,可以定義該緩存區為LCD_BUFFER[240][320]。由于s3c2440支持16位和24位的非調色板真彩色的TFT型LCD模式,而24位顏色模式是用32位數據來表示的,所以前面定義的那個二維數據的數據類型應該是半字整型或全字整型的。例如,在24位顏色模式下,我們想要在尺寸大小為320×240屏幕的中心處設置為白色像素,則:LCD_BUFFER[120][160]=0xffffffff。
        在s3c2440中,寄存器LCDSADDR1和LCDSADDR2用于設置顯示緩存區,即把我們定義的那個二維數組告訴s3c2440。其中LCDBANK的9位數據指定LCD的BANK,即顯示緩存區的第30位到第22位地址;LCDBASEU的21位數據指定了LCD的基址,即顯示緩存區開始地址的第21位到第1位;LCDBASEL的21位數據指定了LCD的尾址,即顯示緩存區結束地址的第21位到第1位。例如,我們想要在尺寸為320×240的屏幕上顯示24位顏色,定義的顯示緩存區數組為LCD_BUFFER[240][320],則LCDBANK等于LCD_BUFFER的第30位到第22位數據值(因為LCD_BUFFER表示的就是數組的首地址),LCDBASEU等于LCD_BUFFER的第21位到第1位數據值,由于是用32位數據表示24為顏色,因此每個像素值是4個字節,所以LCDBASEL等于(LCD_BUFFER+(240×320×4))結果的第21位到第1位的數據值。另外寄存器LCDSADDR3有兩個內容:OFFSIZE和PAGEWIDTH。OFFSIZE用于虛擬屏幕的偏移長度,如果我們不使用虛擬屏幕,就把它置為0;PAGEWIDTH定義了視口的寬,單位是半字,如在上面的例子中,PAGEWIDTH應該為320×32÷16。


        關鍵詞: S3C2440驅動TFT

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乌拉特中旗| 长岭县| 墨江| 西乌珠穆沁旗| 板桥市| 邯郸市| 石台县| 洛隆县| 沁源县| 宝兴县| 灵川县| 墨竹工卡县| 始兴县| 高要市| 吉隆县| 若尔盖县| 靖西县| 田林县| 商城县| 樟树市| 牡丹江市| 玉龙| 大同县| 靖州| 卢氏县| 依安县| 喀什市| 平利县| 修水县| 新疆| 来凤县| 新昌县| 崇左市| 盘山县| 上饶市| 沙坪坝区| 旬邑县| 应用必备| 临湘市| 惠水县| 得荣县|