JZ2440 裸機驅動 第13章 LCD控制器(1)
阿新 • • 發佈:2017-10-24
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所示。
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024094003488-302786310.png)
沒有用到的數據線其電平為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
所示。
註:可以修改LCDBASEU、LCDBASEL的值來實現圖像的移動,不過不能在一幀圖像的
結束階段(LCDCON1寄存器的LINECNT為0時)進行修改,因為此時LCD控制器會優先取得下一
幀的數據,之後才改變這些值。這樣的話,這些數據與新的幀緩沖區就不一致。
註:OFFSIZE、PAGEWIDTH的值只能在ENVID(LCDCON1寄存器的信號輸出使能位)為0時修改。
(7)臨時調色板寄存器TPAL。
如果要輸出一幀單色的圖像,可以在TPAL寄存器中設定這個顏色值,然後使能TPAL寄存器,
這種方法可以避免修改整個調色板或幀緩沖區。
TPAL寄存器格式如表13.14所示。
註:臨時調色板寄存器TPAL可以在任何顯示模式下,並非只能用在8BPP模式下。
本身接收的也是TTL信號。由於TTL信號在高速的長距離傳輸時性能不佳,抗幹擾能力 比較差,後來又剔除多種接口,比如LVDS、TDMS、GVIF、P&D、DVI和DFP等。它 們實際上只是將TTL信號編碼成各種信號以便傳輸,在LCD那邊將接收到的信號進行解 碼得到TTL信號。 由於數字接口標準尚未統一,所以使用LCD時需要根據其數據手冊了解其接口的定 義。也是基於數字接口標準未統一的原因,市場上大多LCD都采用模擬信號接口,LCD 需要先通過ADC將模擬信號轉換為數字信號才能顯示。 但是不管采用何種數字接口,本質上TTL信號是一樣的。 (1)對於STN LCD
對於一整屏的數據,從上到下、從左到右,一個一個地發送出來;“雙掃”是指將一整 屏的數據分為上下兩部分,同時從上到下、從左到右,一個一個地發出來。“4位”、 “8位”是指發送數據時使用多少個數據線。 註意:4位雙掃方式也用到8根數據線,其中4根用於上半屏,4根用於下半屏數據。 出數據信息外,還有其他控制信號,所有TTL信號如表13.1所示。
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093137363-1051553679.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093137691-1306927134.png)
比如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。
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093137957-1216769656.png)
當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所示。
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093138254-1196392079.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093138488-1626139217.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093138660-1686257806.jpg)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093138973-1718961817.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093139113-976158474.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093139254-1821146959.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093139832-735000514.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024094003488-302786310.png)
沒有用到的數據線其電平為0,從這個觀點來看,無論是24BPP還是16、8BPP模式, 24根數據線VD[23:0]都被用到了。事實上,一個TFT LCD能處理的像素位寬是固定的,即 它數據線的數目是固定的,紅、藍、綠3類信號線總是連接到各字節中的高位;軟件設置 24、16、8BPP以及調色板等,只會影響到色值的精度。 4.使用TFT LCD時LCD 控制器的寄存器設置 LCD控制器中REGBANK的17個寄存器可以分為6種,如表13.6所示。
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093140113-2081540908.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093140332-524845483.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093140473-1818571419.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093140613-268950207.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093140754-938284901.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093141551-2129243959.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093141785-739870222.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093142098-936220230.png)
![技術分享](http://images2017.cnblogs.com/blog/1201522/201710/1201522-20171024093142394-253003286.png)
JZ2440 裸機驅動 第13章 LCD控制器(1)