小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【轉(zhuǎn)】TQ2440的學(xué)習(xí)——TFT LCD控制顯示總結(jié)(硬件概念、初始化相關(guān)配置)

 lchjczw 2012-03-07

TQ2440的學(xué)習(xí)——TFT LCD控制顯示總結(jié)(硬件概念、初始化相關(guān)配置)

源地址:http://nervfzb.blog.163.com/blog/static/314813992011215105432369/

 

嵌入式開發(fā) 2011-03-15 23:18:19 閱讀52 評(píng)論0  字號(hào): 訂閱

TFT LCD是嵌入式中比較常用的顯示器,S3C2440/S3C2410都提供了接口進(jìn)行支持。這里總結(jié)下其接口的相關(guān)特性。

TFT LCD硬件需要的控制信號(hào):

信號(hào)名稱

描述

VSYNC

垂直同步信號(hào)

HSYNC

水平同步信號(hào)

HCLK

像素時(shí)鐘信號(hào)

VD[23:0]

數(shù)據(jù)信號(hào)(TFT LCD的數(shù)據(jù)接口還有串行形式,這里的是并行方式的)

LEND

行結(jié)束信號(hào)(具體操作中不是必須)

PWREN

電源開關(guān)信號(hào)

S3C2440提供的接口情況:

由于S3C2440支持多種屏,所以其很多控制管腳是復(fù)用的。


 

 

由上面的對(duì)應(yīng)關(guān)系,GPC0——GPC4是負(fù)責(zé)TFT LCD控制信號(hào)LENDVCLK、VLINEHSYNC)、VFRAMVSYNC)、VMVDEN)的管腳;S3C2440支持的TFT LCD是采用并行方式的數(shù)據(jù)接口,GPC8——GPC15是負(fù)責(zé)VD0——VD7的數(shù)據(jù)信號(hào);GPD0——GPD15是負(fù)責(zé)VD8——VD23的數(shù)據(jù)信號(hào);GPG4是負(fù)責(zé)TFT LCD電源開關(guān)的信號(hào)管腳。

TFT LCDS3C2440上的初始化:

S3C2440上通過配置寄存器來初始化其LCD控制器,下面主要總結(jié)下TFT LCD初始化所用到的寄存器:

名稱

說明

LCDCON1~LCDCON5

指定使用的LCD類型、設(shè)置LCD各類控制信號(hào)的時(shí)間特性等

LCDSADDR1~LCDSADDR3

用于設(shè)置幀內(nèi)存的地址

S3C2440使用LCDCON1~LCDCON5來初始化LCD控制器的控制功能。下面的圖表展示了各個(gè)寄存器初始化情況:

LCDCON1寄存器

功能名稱

說明

CLKVAL

[17:8]

設(shè)置TFT LCDVCLK(像素時(shí)鐘)的大小

計(jì)算公式:VCLK = HCLK /[(CLKVAL +1) × 2]

PNRMODE

[6:5]

設(shè)置LCD的類型,對(duì)于TFT LCD設(shè)為0x3

BPPMODE

[4:1]

設(shè)置像素模式,對(duì)于TFT LCD可以設(shè)置為如下幾個(gè)值:

0x8 —— 1bpp

0x9 —— 2bpp

0xa —— 4bpp

0xb —— 8bpp

0xc —— 16bpp

0xd —— 24bpp

ENVID

[0]

LCD信號(hào)輸出使能位,0:禁止,1:使能 (打開這個(gè)LCD控制器才能輸出LCD信號(hào),注意區(qū)別電源開關(guān)信號(hào))

LCDCON2寄存器

功能

說明

VBPD

[31:24]

TFT LCD信號(hào)的垂直信號(hào)后肩-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的VsyncBack-Porch參數(shù)得知)

LINEVAL

[23:14]

LCD垂直寬度:(LINEVAL + 1)

VFPD

[13:6]

TFT LCD信號(hào)的垂直信號(hào)前肩-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的VsyncFront-Porch參數(shù)得知)

VSPW

[5:0]

TFT LCD信號(hào)的垂直信號(hào)脈寬-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的VsyncPulse Width參數(shù)得知)

LCDCON3寄存器

功能

說明

HBPD

[25:19]

TFT LCD信號(hào)的水平信號(hào)后肩-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的HsyncBack-Porch參數(shù)得知)

HOZVAL

[18:8]

LCD的水平寬度:(HOZVAL +1)列(像素)

HFPD

[7:0]

TFT LCD信號(hào)的水平信號(hào)前肩-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的HsyncFront-Porch參數(shù)得知)

LCDCON4寄存器

功能

說明

HSPW

[7:0]

TFT LCD信號(hào)的水平信號(hào)脈寬-1(通過查閱對(duì)應(yīng)的TFT LCD生產(chǎn)廠家提供資料中的HsyncPulse Width參數(shù)得知)

LCDCON5寄存器

功能

說明

BPP24BL

[12]

當(dāng)TFT LCDBPPMODE被設(shè)置成為24bpp時(shí),需要設(shè)置這個(gè)表示1個(gè)4字節(jié)數(shù)據(jù)(32位)中哪3個(gè)字節(jié)是像素?cái)?shù)據(jù):0——LSB有效(低地址的3個(gè)字節(jié));1——MSB有效(高地址的3個(gè)字節(jié))

FRM565

[11]

當(dāng)TFT LCDBPPMODE被設(shè)置為16bpp時(shí),一個(gè)像素所使用的數(shù)據(jù)格式:0——5:5:5:1格式;1——5:6:5格式

INVVCLK

[10]

設(shè)置VCLK信號(hào)有效沿的極性:0——VCLK的下降沿讀取數(shù)據(jù);1——VCLK的上升沿讀取數(shù)據(jù)

INVVLINE

[9]

設(shè)置VLINE/HSYNC脈沖的極性:0——正常的極性;1——反轉(zhuǎn)的極性

INVVFRAME

[8]

設(shè)置VFRAME/VSYNC脈沖的極性:0——正常的極性;1——反轉(zhuǎn)的極性

INVVD

[7]

設(shè)置VD數(shù)據(jù)線表示數(shù)據(jù)(0/1)的極性:0——正常的極性;1——反轉(zhuǎn)的極性

INVVDEN

[6]

設(shè)置VDEN信號(hào)的極性:0——正常的極性;1——反轉(zhuǎn)的極性

INVPWREN

[5]

設(shè)置PWREN信號(hào)的極性:0——正常的極性;1——反轉(zhuǎn)的極性

INVLEND

[4]

設(shè)置LEND信號(hào)的極性:0——正常的極性;1——反轉(zhuǎn)的極性

PWREN

[3]

LCD_PWREN信號(hào)輸出使能:0——禁止;1——使能

ENLEND

[2]

LEND信號(hào)輸出使能:0——禁止;1——使能

BSWP

[1]

字節(jié)交換使能:0——禁止;1——使能

HWSWP

[0]

半字(2字節(jié))交換使能:0——禁止;1——使能

S3C2440支持4MB的虛擬屏幕,就是指顯示圖像的大小最大可達(dá)4MB。4MB的圖像,即使使用24bpp的模式也是一個(gè)比較大的圖片(1024×1024)。為了更好的使用這個(gè)特性S3C2440對(duì)于圖像數(shù)據(jù)的讀取處理給出了一個(gè)直觀的圖像,這個(gè)圖像中,可以看到屏幕可以當(dāng)成一個(gè)窗口在這個(gè)4MB的圖像區(qū)域滑動(dòng)。這個(gè)窗口可大可小,但是這個(gè)一般由你的設(shè)備的屏幕決定(TQ2440的屏幕為3.5寸,大小為320×240)。


 

 

上面表示虛擬屏幕的地址空間必須4MB對(duì)齊,所以取其起始地址的[30:22]表示虛擬屏幕的地址。窗口在這個(gè)4MB的空間內(nèi)滑動(dòng),所以窗口的起始地址就取[21:1]就可以了,它們之間的配合是一種偏移量的配合。但是由于內(nèi)存中的數(shù)據(jù)是一行行的存放,所以需要使用偏移量來描述窗口每一行之間的偏移量。

S3C2440使用LCDSADDR1~LCDSADDR3初始化描述圖像數(shù)據(jù)存放處的情況,下面圖表展示如何描述圖像數(shù)據(jù)存放內(nèi)存,這個(gè)區(qū)域中的數(shù)據(jù)會(huì)被自動(dòng)讀取顯示到屏幕上:

LCDSADDR1寄存器

功能

說明

LCDBANK

[29:21]

用來保存幀內(nèi)存其實(shí)地址[30:22],幀內(nèi)存起始地址必須4MB對(duì)齊

LCDBASEU

[20:0]

TFT LCD模式下,這會(huì)用來保存視口(LCD屏幕左上角像素)所對(duì)應(yīng)的內(nèi)存起始地址[21:1],這塊內(nèi)存也稱為LCD的幀緩沖區(qū)

LCDSADDR2寄存器

功能

說明

LCDBASEL

[20:0]

對(duì)于TFT LCD,用來保存LCD的幀緩沖結(jié)束地址[21:1],其值等于下面計(jì)算公式的結(jié)果:

LCDBASEL = LCDBASEU + (PAGEWIDTH + OFFSIZE) × (LINEVAL + 1)

LCDSADDR3寄存器

功能

說明

OFFSIZE

[21:11]

表示上一行最后一個(gè)數(shù)據(jù)和下一行第一個(gè)數(shù)據(jù)地址之間的差值的一半,即以半字為單位的地址差(0表示兩行數(shù)據(jù)是緊接的,1表示它們之間有2個(gè)字節(jié)的偏移,以此類推)

PAGEWIDTH

[10:0]

視口的寬度,以半字為單位

在所有寄存器配置完成后,不要忘記打開電源。將GPG4管腳置1啟動(dòng)LCD顯示。最后開啟整個(gè)的信號(hào)使能。

程序分析:

         具體到程序上,初始化配置可以封裝到一個(gè)函數(shù)中去。函數(shù)盡量增強(qiáng)可擴(kuò)展型,所以在初始化的過程中可以指定要顯示圖像的圖像模式,同時(shí)對(duì)不同圖像模式對(duì)數(shù)據(jù)的不同要求對(duì)幀內(nèi)存的初始化也做了相應(yīng)的封裝。

01  void lcd_init(unsigned char pic_mode) 
02  { 
03      //配置LCD相關(guān)引腳 
04      GPCUP = 0x00000000
05      GPCCON = 0xaaaa02a9
06      GPDUP = 0x00000000
07      GPDCON = 0xaaaaaaaa
08      //配置寄存器確定相關(guān)時(shí)序 
09      LCDCON1 = (CLKVAL << 8) | (MVAL_USED << 7) | (PNRMODE_TFT << 5) / 
10                | (BPPMODE_TFT(pic_mode) << 1) | 0
11      LCDCON2 = (VBPD << 24) | (LINEVAL << 14) | (VFPD << 6) | VSPW; 
12      LCDCON3 = (HBPD << 19) | (HOZVAL << 8) | HFPD; 
13      LCDCON4 = HSPW; 
14      LCDCON5 = (BPP24BL << 12) | (FRM565 << 11) | / 
15                (INVVCLK << 10) | (INVVLINE << 9) | / 
16                (INVVFRAME << 8) | (0 << 7) | (INVVDEN << 6) | / 
17                (PWREN << 3) | (BSWP << 1) | HWSWP; 
18      //配置寄存器指明圖像數(shù)據(jù)的內(nèi)存地址 
19      LCDSADDR1 = ((LCD_BUFFER >> 22) << 21) | / 
20                  M5D(LCD_BUFFER >> 1); 
21      switch(pic_mode) 
22      { 
23      case BPP24: 
24          LCDSADDR2 = M5D((LCD_BUFFER + / 
25                           (LCD_WIDTH * LCD_HEIGHT * 4)) >> 1); 
26          LCDSADDR3 = LCD_WIDTH * 32 / 16;//two half words 
27          break
28      case BPP16: 
29          LCDSADDR2 = M5D((LCD_BUFFER + (LCD_WIDTH * / 
30                                         LCD_HEIGHT * 2)) >> 1); 
31          LCDSADDR3 = LCD_WIDTH * 32 / 32;//one half words 
32          break
33      default
34          break
35      } 
36      LCDINTMSK |= 3;//屏蔽LCD中斷 
37      TCONSEL = 0;//無效LPC3480 
38   
39      GPGUP = (GPGUP & (~(1 << 4))) | (1 << 4);//GPG4上拉電阻無效 
40      GPGCON = (GPGCON & (~(3 << 8))) | (3 << 8);//設(shè)置GPG4LCD_PWREN 
41      GPGDAT = GPGDAT | (1 << 4);//GPG4置1打開電源信號(hào) 
42   
43      LCDCON5 = (LCDCON5 & (~(1 << 3))) | (1 << 3);//有效PWREN信號(hào) 
44      LCDCON5 = (LCDCON5 & (~(1 << 5))) | (0 << 5);//PWREN信號(hào)極性不翻轉(zhuǎn) 
45   
46      LCDCON1 |= 1;//LCD開啟(LCD信號(hào)輸出使能位) 
47  } 

參考書籍:

趙春江的博客:《s3c2440的LCD應(yīng)用》http://blog.csdn.net/zhaocj/archive/2010/03/19/5397180.aspx


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多