1. 程式人生 > >JZ2440 裸機驅動 第13章 LCD控制器(1)

JZ2440 裸機驅動 第13章 LCD控制器(1)

off time sad poi 臨時 接收 一行 類型 組成

本章目標 了解LCD顯示器的接口及時序; 掌握S3C2410/S3C2440 LCD控制器的使用方法; 了解幀緩沖區的概念,掌握如何設置幀緩沖區來顯示圖像; 13.1 LCD和LCD控制器 13.1.1 LCD顯示器 1.LCD的種類 2.LCD的接口 CPU或顯卡發出的圖像數據是TTL信號(0~5V、0~3.3V、0~2.5V或0~1.8V),LCD
本身接收的也是TTL信號。由於TTL信號在高速的長距離傳輸時性能不佳,抗幹擾能力 比較差,後來又剔除多種接口,比如LVDS、TDMS、GVIF、P&D、DVI和DFP等。它 們實際上只是將TTL信號編碼成各種信號以便傳輸,在LCD那邊將接收到的信號進行解 碼得到TTL信號。 由於數字接口標準尚未統一,所以使用LCD時需要根據其數據手冊了解其接口的定 義。也是基於數字接口標準未統一的原因,市場上大多LCD都采用模擬信號接口,LCD 需要先通過ADC將模擬信號轉換為數字信號才能顯示。 但是不管采用何種數字接口,本質上TTL信號是一樣的。 (1)對於STN LCD
STN LCD的數據傳輸方式有3種:4行單掃、4行雙掃、8行單掃。所謂“單掃”是指
對於一整屏的數據,從上到下、從左到右,一個一個地發送出來;“雙掃”是指將一整 屏的數據分為上下兩部分,同時從上到下、從左到右,一個一個地發出來。“4位”、 “8位”是指發送數據時使用多少個數據線。 註意:4位雙掃方式也用到8根數據線,其中4根用於上半屏,4根用於下半屏數據。 出數據信息外,還有其他控制信號,所有TTL信號如表13.1所示。 技術分享 (2)對於TFT LCD。 TFT LCD的TTL信號與STN類似(如表13.2所示),只是其數據線多大24根,對應像素值 中的每一位。 技術分享
13.1.2 S3C2410/S3C2440 LCD控制器介紹 1.S3C2410/S3C2440 LCD控制器的特性與結構 S3C2410/S3C2440 LCD控制器被用來向LCD傳輸圖像數據,並提供必要的控制信號,
比如VFRAME、VLINE、VCLK、VM等。可以支持STN LCD和TFT LCD,其特性如下: (BPP表示bit per pixel,即每個像素使用多少位來表示其顏色)。 (1)STN LCD。 ·支持3種掃描方式:4位單掃、4位雙掃和8位單掃。 ·支持單色(1BPP)、4級灰度(2BPP)和16級灰度(4BPP)屏。 ·支持256色(8BPP)和4096色(12BPP)彩色STN屏(CSTN)。 ·支持分辨率位640x480、320x240、160x160以及其他規格的多種LCD。 ·虛擬屏幕最大可達4MB。 ·對於256色,分辨率有4096x1024、2048x2048、1024x4096等 (2)TFT LCD。
·支持單色(1BPP)、4級灰度(2BPP)、16級灰度(4BPP)、256色(8BPP)的調色板顯示模式。 ·支持64K(16BPP)和16M(24BPP)色非調色板顯示模式。 ·支持分辨率位640x480、320x240及其他多種規格的LCD。 ·虛擬屏幕最大可達4MB。 ·對於64K色,分辨率有2048x1024等多種。 S3C2410/S3C2440 LCD控制器提供了驅動STN LCD、TFT LCD所需要的所有信號(如表 13.1、表13.2所示),另外,還特別提供額外的信號以支持SEC公司生產的TFT LCD。這3類 信號中很大部分是復用的。 S3C2410/S3C2440 LCD控制器的內部結構如圖13.1所示。 技術分享 REGBANK是LCD控制器的寄存器組,含17個寄存器及一塊256x16的調色板內存, 用於設置各項參數。而LCDCDMA則是LCD控制器專用的DMA通道,可以自動地從 系統總線上獲取圖像數據,這使得顯示圖像時不需要CPU幹擾。VIDPRCS將 LCDCDMA中的數據組合成特性格式(比如4位單掃、4位雙掃和8位單掃等),然後從 VD[23:0]發送給LCD屏。同時TIMEGEN和LPC3600負責產生LCD屏所需要的控制時 序,例如VSYNC、HSYNC、VCLK、VDEN,然後從VIDEO MUX送給LCD屏。其 中LPC3600專用於SEC TFTLCD。 LCDCDMA中有兩個FIFO: FIFOH的容量為16(1個字為4字節)個字, FIFOL的容量為12個字。 當使用雙掃方式時,FIFOH、FIFOL分別用於傳輸上半屏、下半屏數據; 當使用單掃方式時,只用到FIFOH。
當FIFO為空或者其中的數據已經減少到設定的閾值時,LCDCDMA自動發起DMA 傳輸從內存中獲得圖像數據。 2.顯示器上數據的組織格式 對於屏幕上的一整幅圖像,它的數據時如何組織的?無論時CRT還是LCD顯示器, 它們都有相同的概念。 一幅圖像被稱為一幀,每幀由多行組成,每行由多個像素組成,每個像素顏色由若幹 位的數據表示。對於單色顯示器,每個像素使用1位來表示,稱為1BPP;對於256色顯 示器,每個像素使用8位來表示,稱為8BPP。 顯示器從屏幕的左上方開始,一行一行第取得每個像素的數據並顯示出來, 當顯示到一行的最右邊時,跳到下一行的最左邊開始顯示下一行; 當顯示完所有行後,跳到左上方開始下一幀。
顯示器沿著“Z”字行的路線進行掃描,使用HSYNC、VSYNC信號來控制掃描路線的 跳轉,HSYNC表示“是跳到最左邊的時候了”,VSYNC表示“是跳到最上邊的時候了”。 在工作中的顯示器上,可以在四周看到黑色的邊框。 上方的黑框是因為當發出VSYNC信號時,需要經過若幹行之後第一行數據才有效; 下方的黑框是因為顯示完所有行的數據時,顯示器還沒有掃描到最下邊(VSYNC信 號還沒有發出),這時數據已經無效; 左邊的黑框是因為當發出HSYNC信號時,需要經過若幹像素之後第一列數據才有效; 右邊的黑框是因為顯示完一行的數據時,顯示器還沒有掃描到最右邊(HSYNC信號還 沒有發出),這時數據已經無效; 顯示器只會根據VSYNC、HSYNC信號取得、顯示數據,並不理會該數據是否有效, 何時發出有效數據由顯卡決定。 VSYNC信號出現的頻率表示一秒鐘內能顯示多少幀圖像,稱為垂直頻率或場頻率,這 就是平時常說的“顯示器的頻率”;HSYNC信號出現的頻率稱為水平頻率。 顯示器上,一幀數據的存放位置與VSYNC、HSYNC信號的關系如圖13.2所示。 技術分享 “有效數據”的行數、列數,即分辨率,它與VSYNC、HSYNC信號之間的“距離”等, 都是可以設置的,這由顯卡完成,這些設置在下一節對TFT LCD的操作中都可以看到。 3.TFT LCD的操作 目前市場上主流的LCD為TFT LCD,本章基於TFT LCD來介紹LCD控制器的使用。 對於STN LCD,它所涉及的操作是類似的。 先了解TFT LCD的時序,這使得我們在設置各個寄存器時有個形象的概念。每個 VSYNC信號表示一幀數據的開始;每個HSYNC信號表示一行數據的開始,無論這 些數據是否有效;每個VCLK信號表示正在傳輸一個像素的數據,無論它是否有效。 數據是否有效只是對CPU的LCD控制器來說的,LCD根據VSYNC、HSYNC、VCLK 不停地讀取總線數據、顯示。 下面講解時序圖,請參考圖13.3。 技術分享 (1)VSYNC信號有效時,表示一幀數據的開始; (2)VSPW表示VSYNC信號的脈沖寬度(VSPW+1)個HSYNC信號周期,即 (VSPW+1)行,這(VSPW+1)行的數據無效; (3)VSYNC信號脈沖之後,還要經過(VBPD+1)個HSYNC信號周期,有效的行數據 才出現。所以,在VSYNC信號有效之後,總共還要經過(VSPW+1+VBPD+1)個無效的 行,它對應圖13.2上方的邊框,第一個有效的行才出現。 (4)隨後即連續發出(LINEVAL+1)行的有效數據。 (5)最後是(VFPD+1)個無效的行,它對應圖13.2下方的邊框,完整的一幀結束,緊 接著時下一幀的數據了(即下一個VSYNC信號)。 現在深入到一行中像素數據的傳輸過程,它與上面行數據的傳輸過程相似。 (1)HSYNC信號有效時,表示一行數據的開始; (2)HSPW表示HSYNC信號的脈沖寬度為(HSPW+1)個VCLK信號周期,即(HSPW+1) 個像素,這(HSPW+1)個像素的數據無效。 (3)HSYNC信號脈沖之後,還要經過(HBPD+1)個VCLK信號周期,有效的像素數據 才會出現。所以,在HSYNC信號有效之後,總共還要經過(HSPW+1+HBPD+1)個無效的 像素,它的頻率可以如下計算: VCLK (Hz) = HCLK/[(CLKVAL+1x2)] VSYNC信號的頻率又稱為幀頻率、垂直頻率、場頻率、顯示器的頻率,它可以如下 計算: Fram Rate = 1 / [ { (VSPW+1) + (VBPD+1) + (LIINEVAL+1) + (VFPD+1) } x { (HSPW+1) + (HBPD+1) + (HFPD+1) + (HOZVAL+1)} x { 2 x (CLKVAL+1) / (HCLK) } ] 將VSYNC、HSYNC、VCLK等信號的時間參數設置好後,並將幀內存(frame memory) 的地址告訴LCD控制器,它即可自動地發起DMA傳輸從幀內存中得到圖像數據,最終在上 述信號的控制下出現在數據總線VD[23:0]上。用戶只需要把要顯示的圖像數據寫入幀內存 中,在這之前,先了解一下各種格式的圖像數據在內存中如何存儲。 顯示器上每個像素的顏色由3部分組成:紅、綠、藍。它們被稱為三原色,這三者的混合 幾乎可以表示人眼能識別的所有顏色。 LCD控制器可以支持單色(1BPP)、4級灰度(2BPP)、16級灰度(4BPP)、256色(8BPP) 的調色板顯示模式,支持64k(16BPP)和16M(24BPP)非調色板顯示模式。下面只介紹256 色(8BPP)、64K(16BPP)、16M(24BPP)色顯示模式下,圖像數據的存儲格式。 (1)16M(24BPP)色。 16M(24BPP)色的顯示模式就是使用24位的數據來表示一個像素的顏色,每種原色使用 8位。LCD控制器從內存中獲得某個像素的24位顏色值後,直接通過VD[23:0]數據線發送 給LCD。為了方便DMA傳輸,在內存中使用4個字節(32)來表示一個像素,其中3字節從高 到低分別表示紅、綠、藍,剩余一個字節數據無效。是最低字節還是最高字節無效,這時 可選擇的,如圖13.4所示。 技術分享 (2)64K(16BPP)色。 64K(16BPP)色的顯示模式就是使用16位的數據來表示一個像素的顏色。這16位數據 的格式又分為兩種:5(紅):6(綠):5(藍)、5(紅):5(綠):5(藍):1(透明度)。5:5:5:1格式也被稱 為RGBA格式(A:Alpha,表示透明度)。 一個4字節可以表示兩個16BPP的像素,使用高2字節還是低2字節表示第一個像素,這 也是可以選擇的。 顯示模式位16BPP時,內存數據與像素位置的關系如圖13.5所示。在5:5:5:1格式下, VD[18]、VD[10]、VD[2]數據線上的值是一樣的,都表示透明度,圖13.5中的“NC”表示 沒有連接(not connect)。 技術分享 (3)256色(8BPP)。 256色(8BPP)的顯示模式就是使用8位的數據來表示一個像素的顏色,但是對三種原 色平均下來,每個原色只能使用不到3位的數據表示,即每個原色最多不過8個級別,這不 足以表示更豐富的顏色。 為了解決8BPP模式顯示能力不足的問題,需要使用調色板(Paette)。每個像素對應 的8位數據不再用來表示RGB三種顏色,而是表示它在調色板中的索引值。 要顯示這個像素時,使用這個索引值從調色板中去其RGB顏色值。所謂調色板就是一 塊內存,可以對每個索引值設置顏色,可以使用24BPP或16BPP。S3C2410/S3C2440中,調色 板是一塊256x16的內存,使用16BPP的格式來表示256色(8BPP)顯示模式下的各個索引值的顏 色。這樣,即使使用256色(8BPP)的顯示模式,最終出現在LCD數據總線上的仍是16BPP的數據。 一個4字節可以表示4個8BPP的像素,字節與像素的對應順序是可以選擇的,如圖 13.6所示。 技術分享 調色板中數據存放的格式與上面所描述的16BPP顯示模式相似,也分兩種格式:5:6:5、 5:5:5:1.調色板中數據的格式及與LCD數據線VD[23:0]的對應關系,如表13.3和表13.4所示。 技術分享 技術分享 註意:① 0x4d00 0400是調色板的起始地址; ② 5:5:5:1格式下,VD18、VD10和VD2三個數據線中都是亮度值1,即最低位的值。 ③ 當LCDCON5寄存器中的VSTATUS、HSTATUS有效時,不能讀寫調色板; 各種模式下用來傳輸紅、綠、藍三種原色的顏色值的VD數據線如表13.5所示。 技術分享
沒有用到的數據線其電平為0,從這個觀點來看,無論是24BPP還是16、8BPP模式, 24根數據線VD[23:0]都被用到了。事實上,一個TFT LCD能處理的像素位寬是固定的,即 它數據線的數目是固定的,紅、藍、綠3類信號線總是連接到各字節中的高位;軟件設置 24、16、8BPP以及調色板等,只會影響到色值的精度。 4.使用TFT LCD時LCD 控制器的寄存器設置 LCD控制器中REGBANK的17個寄存器可以分為6種,如表13.6所示。 技術分享 對於TFT LCD,一般情況下只需要設置前兩種寄存器;在8BPP模式下,如果想快速地 輸出一幀單色圖像,可以借助TPAL寄存器。下面分別介紹。 (1) LCD控制寄存器LCDCON1。 用於選擇LCD類型、設置像素時鐘、使能LCD信號的輸出等,格式如表13.7所示。 技術分享 (2)LCD 控制寄存器LCDCON2。 用於設置垂直方向個信號的時間參數,格式如表13.8所示,請參考圖13.3TFT LCD時序圖。 技術分享 (3)LCD 控制寄存器LCDCON3. 用於設置水平方向各信號的時間參數,格式如下表所示,請參考13.3TFT LCD時序圖。 技術分享 (4)LCD控制寄存器LCDCON4。 對於TFT LCD,這個寄存器只用來設置HSYNC信號的脈沖寬度,位[7:0]的數值稱為 HSPW,表示脈沖寬度位(HSPW+1)個VCLK周期。 (5)LCD控制寄存器LCDCON5。 用於設置各個控制信號的極性,並可從中讀出一些狀態信息,格式列表如表13.10 所示。 技術分享

技術分享

(6)幀內存地址寄存器LCDSADDR1~LCDSADDR3。 幀內存可以很大,而真正要顯示的區域被稱為視口(view point),它處於幀內存之內。 這3個寄存器用於確定幀內存的起始地址,定位視口在幀內存中的位置。 圖13.7給出了幀內存和視口的位置關系:

技術分享

各寄存器格式如表13.11、13.14和13.13所示。 技術分享 技術分享 註:可以修改LCDBASEU、LCDBASEL的值來實現圖像的移動,不過不能在一幀圖像的 結束階段(LCDCON1寄存器的LINECNT為0時)進行修改,因為此時LCD控制器會優先取得下一 幀的數據,之後才改變這些值。這樣的話,這些數據與新的幀緩沖區就不一致。 技術分享 註:OFFSIZE、PAGEWIDTH的值只能在ENVID(LCDCON1寄存器的信號輸出使能位)為0時修改。 (7)臨時調色板寄存器TPAL。 如果要輸出一幀單色的圖像,可以在TPAL寄存器中設定這個顏色值,然後使能TPAL寄存器, 這種方法可以避免修改整個調色板或幀緩沖區。 TPAL寄存器格式如表13.14所示。 技術分享 註:臨時調色板寄存器TPAL可以在任何顯示模式下,並非只能用在8BPP模式下。

JZ2440 裸機驅動 第13章 LCD控制器(1)