LTDC/DMA2D—液晶显示
本章參考資料:《STM32F4xx 參考手冊 2》、《STM32F4xx 規格書》、庫幫助文檔
《stm32f4xx_dsp_stdperiph_lib_um.chm》。
關于開發板配套的液晶屏參數可查閱《5.0 寸液晶屏數據手冊》配套資料獲知。
顯示器簡介
顯示器屬于計算機的 I/O 設備,即輸入輸出設備。它是一種將特定電子信息輸出到屏
幕上再反射到人眼的顯示工具。 常見的有 CRT 顯示器、液晶顯示器、 LED 點陣顯示器及
OLED 顯示器。
液晶顯示器
液晶顯示器,簡稱 LCD(Liquid Crystal Display),相對于上一代 CRT 顯示器(陰極射線
管顯示器), LCD 顯示器具有功耗低、體積小、承載的信息量大及不傷眼的優點,因而它成
為了現在的主流電子顯示設備,其中包括電視、電腦顯示器、手機屏幕及各種嵌入式設備
的顯示器。圖 27-1 是液晶電視與 CRT 電視的外觀對比,很明顯液晶電視更薄,“時尚”
是液晶電視給人的第一印象,而 CRT 電視則感覺很“笨重”。
?
液晶是一種介于固體和液體之間的特殊物質,它是一種有機化合物,常態下呈液態,
但是它的分子排列卻和固體晶體一樣非常規則,因此取名液晶。 如果給液晶施加電場,會
改變它的分子排列, 從而改變光線的傳播方向, 配合偏振光片,它就具有控制光線透過率
的作用,再配合彩色濾光片,改變加給液晶電壓大小,就能改變某一顏色透光量的多少,
圖 27-2 中的就是綠色顯示結構。 利用這種原理,做出可控紅、綠、藍光輸出強度的顯示結
構,把三種顯示結構組成一個顯示單位,通過控制紅綠藍的強度,可以使該單位混合輸出
不同的色彩,這樣的一個顯示單位被稱為像素。
?
注意液晶本身是不發光的,所以需要有一個背光燈提供光源,光線經過一系列處理過
程才到輸出,所以輸出的光線強度是要比光源的強度低很多的,比較浪費能源(當然,比
CRT 顯示器還是節能多了)。而且這些處理過程會導致顯示方向比較窄,也就是它的視角較
小,從側面看屏幕會看不清它的顯示內容。另外,輸出的色彩變換時,液晶分子轉動也需
要消耗一定的時間,導致屏幕的響應速度低。
LED 和 OLED 顯示器
LED 點陣顯示器不存在以上液晶顯示器的問題, LED 點陣彩色顯示器的單個像素點內
包含紅綠藍三色 LED 燈,顯示原理類似我們實驗板上的 LED 彩燈,通過控制紅綠藍顏色
的強度進行混色,實現全彩顏色輸出,多個像素點構成一個屏幕。由于每個像素點都是
LED 燈自發光的,所以在戶外白天也顯示得非常清晰,但由于 LED 燈體積較大,導致屏幕
的像素密度低,所以它一般只適合用于廣場上的巨型顯示器。相對來說,單色的 LED 點陣
顯示器應用得更廣泛,如公交車上的信息展示牌、店招等,見圖 27-3。
新一代的 OLED 顯示器與 LED 點陣彩色顯示器的原理類似,但由于它采用的像素單元
是“有機發光二極管” (Organic Light Emitting Diode),所以像素密度比普通 LED 點陣顯示
器高得多,見圖 27-5。
?
OLED 顯示器不需要背光源、對比度高、輕薄、視角廣及響應速度快等優點。待到生
產工藝更加成熟時,必將取代現在液晶顯示器的地位,見圖 27-5。
?
?顯示器的基本參數
不管是哪一種顯示器,都有一定的參數用于描述它們的特性,各個參數介紹如下:
(1) 像素
像素是組成圖像的最基本單元要素,顯示器的像素指它成像最小的點,即前面講解液
晶原理中提到的一個顯示單元。
(1) 分辨率
一些嵌入式設備的顯示器常常以“行像素值 x 列像素值”表示屏幕的分辨率。如分辨
率 800x480 表示該顯示器的每一行有 800 個像素點,每一列有 480 個像素點,也可理
解為有 800 列, 480 行。
(2) 色彩深度
色彩深度指顯示器的每個像素點能表示多少種顏色,一般用“位” (bit)來表示。如單
色屏的每個像素點能表示亮或滅兩種狀態(即實際上能顯示 2 種顏色),用 1 個數據位
就可以表示像素點的所有狀態,所以它的色彩深度為 1bit,其它常見的顯示屏色深為
16bit、 24bit。
(3) 顯示器尺寸
顯示器的大小一般以英寸表示,如 5 英寸、 21 英寸、 24 英寸等,這個長度是指屏幕對
角線的長度, 通過顯示器的對角線長度及長寬比可確定顯示器的實際長寬尺寸。
(4) 點距
點距指兩個相鄰像素點之間的距離, 它會影響畫質的細膩度及觀看距離,相同尺寸的
屏幕,若分辨率越高,則點距越小,畫質越細膩。如現在有些手機的屏幕分辨率比電
腦顯示器的還大,這是手機屏幕點距小的原因; LED 點陣顯示屏的點距一般都比較大,
所以適合遠距離觀看。
STM32F429 系列的芯片不需要額外的液晶控制器,也就是說它把專用液晶控制器的功能集成到?STM32F429?芯片內部了,節約
了額外的控制器成本。?
(1) RGB 信號線
RGB 信號線各有 8 根,分別用于表示液晶屏一個像素點的紅、綠、藍顏色分量。使用
紅綠藍顏色分量來表示顏色是一種通用的做法,打開 Windows 系統自帶的畫板調色工
具,可看到顏色的紅綠藍分量值,見圖 27-7。常見的顏色表示會在“RGB”后面附帶
各個顏色分量值的數據位數,如 RGB565 表示紅綠藍的數據線數分別為 5、 6、 5 根,
一共為 16 個數據位,可表示 216 種顏色;而這個液晶屏的種顏色分量的數據線都有 8
根,所以它支持 RGB888 格式,一共 24 位數據線,可表示的顏色為 224種。
(2) 同步時鐘信號 CLK
液晶屏與外部使用同步通訊方式,以 CLK 信號作為同步時鐘,在同步時鐘的驅動下,
每個時鐘傳輸一個像素點數據。
(3) 水平同步信號 HSYNC
水平同步信號 HSYNC(Horizontal Sync)用于表示液晶屏一行像素數據的傳輸結束,每
傳輸完成液晶屏的一行像素數據時, HSYNC 會發生電平跳變,如分辨率為 800x480 的
顯示屏(800 列, 480 行),傳輸一幀的圖像 HSYNC 的電平會跳變 480 次。
(4) 垂直同步信號 VSYNC
垂直同步信號 VSYNC(Vertical Sync)用于表示液晶屏一幀像素數據的傳輸結束,每傳
輸完成一幀像素數據時, VSYNC 會發生電平跳變。其中“幀”是圖像的單位,一幅
圖像稱為一幀,在液晶屏中,一幀指一個完整屏液晶像素點。人們常常用“幀/秒”來
表示液晶屏的刷新特性,即液晶屏每秒可以顯示多少幀圖像,如液晶屏以 60 幀/秒的
速率運行時, VSYNC 每秒鐘電平會跳變 60 次。
(5) 數據使能信號 DE
數據使能信號 DE(Data Enable)用于表示數據的有效性,當 DE 信號線為高電平時,
RGB 信號線表示的數據有效。
液晶數據傳輸時序
通過上述信號線向液晶屏傳輸像素數據時,各信號線的時序見圖 27-8。 圖中表示的是
向液晶屏傳輸一幀圖像數據的時序, 中間省略了多行及多個像素點。
液晶屏顯示的圖像可看作一個矩形,結合圖 27-9 來理解。液晶屏有一個顯示指針,它
指向將要顯示的像素。顯示指針的掃描方向方向從左到右、從上到下,一個像素點一個像
素點地描繪圖形。這些像素點的數據通過 RGB 數據線傳輸至液晶屏,它們在同步時鐘
CLK 的驅動下一個一個地傳輸到液晶屏中,交給顯示指針,傳輸完成一行時,水平同步信
號 HSYNC 電平跳變一次,而傳輸完一幀時 VSYNC 電平跳變一次。
顯存
液晶屏中的每個像素點都是數據,在實際應用中需要把每個像素點的數據緩存起來,
再傳輸給液晶屏,這種存儲顯示數據的存儲器被稱為顯存。顯存一般至少要能存儲液晶屏
的一幀顯示數據,如分辨率為 800x480 的液晶屏,使用 RGB888 格式顯示,它的一幀顯示
數據大小為: 3x800x480=1152000 字節;若使用 RGB565 格式顯示,一幀顯示數據大小為:
2x800x480=768000 字節。
常見的顏色表示會在“RGB”后面附帶各個顏色分量值的數據位數,如RGB565
表示紅綠藍的數據線數分別為5、 6、 5根,一共為16個數據位,可表示216
種顏色;而我們這個液晶屏的種顏色分量的數據線都有8根,所以它支持
RGB888格式,一共24位數據線,可表示的顏色為224種。
RGB后面的數值,分別代表其表示顏色的bits。
?
LCD-TFT 控制器 (LTDC)
LTDC 液晶控制器簡介
STM32F429 系列芯片內部自帶一個 LTDC 液晶控制器,使用 SDRAM 的部分空間作為
顯存,可直接控制液晶面板,無需額外增加液晶控制器芯片。 STM32 的 LTDC 液晶控制器
最高支持 800x600 分辨率的屏幕;可支持多種顏色格式,包括 RGB888、 RGB565、
ARGB8888 和 ARGB1555 等(其中的“A”是指透明像素);支持 2 層顯示數據混合,利用這
個特性,可高效地做出背景和前景分離的顯示效果,如以視頻為背景,在前景顯示彈幕。
圖像數據混合
LTDC 外設支持 2 層數據混合,混合前使用 2 層數據源,分別為前景層和背景層,見
圖 27-10。在輸出時,實際上液晶屏只能顯示一層圖像,所以 LTDC 在輸出數據到液晶屏
前需要把 2 層圖像混合成一層,跟 Photoshop 軟件的分層合成圖片過程類似。混合時,直
接用前景層中的不透明像素替換相同位置的背景像素;而前景層中透明像素的位置,則使
用背景的像素數據,即顯示背景層的像素。
?
如果想使用圖像混合功能,前景層必須使用包含透明的像素格式,如 ARGB1555 或
ARGB8888。其中 ARGB1555 使用 1 個數據位表示透明元素,它只能表示像素是透明或不
透明,當最高位(即“A”位)為 1 時,表示這是一個不透明的像素,具體顏色值為 RGB 位
表示的顏色,而當最高位為 0 時,表示這是一個完全透明的像素, RGB 位的數據無效;而
ARGB8888 的像素格式使用 8 個數據位表示透明元素,它使用高 8 位表示“透明度” (即代
表“A”的 8 個數據位),若 A 的值為“0xFF”,則表示這個像素完全不透明,若 A 的值為
“0x00”則表示這個像素完全透明,介于它們之間的值表示其 RGB 顏色不同程度的透明度,
即混合后背景像素根據這個值按比例來表示。
注意液晶屏本身是沒有透明度概念的,如 24 位液晶屏的像素數據格式是 RGB888,
RGB 顏色各有對應的 8 根數據線,不存在用于表示透明度的數據線,所以實際上 ARGB 只
是針對內部分層數據處理的格式,最終經過混合運算得出直接顏色數據 RGB888 才能交給
液晶屏顯示。
?
圖像處理單元
LTDC 框圖標號?表示的是圖像處理單元,它通過“AHB 接口”獲取顯存中的數據,
然后按分層把數據分別發送到兩個“層 FIFO”緩存,每個 FIFO 可緩存 64x32 位的數據,
接著從緩存中獲取數據交給“PFC” (像素格式轉換器),它把數據從像素格式轉換成字
(ARGB8888)的格式,再經過“混合單元”把兩層數據合并起來,最終混合得到的是單層要
顯示的數據,通過信號線輸出到液晶面板。這部分結構與 DMA2D 的很類似,我們在下一
小節詳細講解。
在輸出前混合單元的數據還經過一個“抖動單元”,它的作用是當像素數據格式的色
深大于液晶面板實際色深時,對像素數據顏色進行舍入操作,如向 18 位顯示器上顯示 24
位數據時,抖動單元把像素數據的低 6 位與閾值比較,若大于閾值,則向數據的第 7 位進
1,否則直接舍掉低 6 位。
配置和狀態寄存器
框圖中標號?表示的是 LTDC 的控制邏輯,它包含了 LTDC 的各種配置和狀態寄存器。
如配置與液晶面板通訊時信號線的有效電平、各種時間參數、有效數據寬度、像素格式及
顯存址等等, LTDC 外設根據這些配置控制數據輸出,使用 AHB 接口從顯存地址中搬運數
據到液晶面板。還有一系列用于指示當前顯示狀態和位置的狀態寄存器,通過讀取這些寄
存器可以了解 LTDC 的工作狀態。
時鐘信號
LTDC 外設使用 3 種時鐘信號,包括 AHB 時鐘、 APB2 時鐘及像素時鐘 LCD_CLK。
AHB 時鐘用于驅動數據從存儲器存儲到 FIFO, APB2 時鐘用于驅動 LTDC 的寄存器。而
LCD_CLK 用于生成與液晶面板通訊的同步時鐘,見圖 27-12,它的來源是 HSE(高速外部
晶振),經過“/M”分頻因子分頻輸出到“PLLSAI”分頻器,信號由“PLLSAI”中的倍頻
因子 N 倍頻得到“PLLSAIN”時鐘、然后由“/R”因子分頻得到“PLLCDCLK”時鐘,再
經過“DIV”因子得到“LCD-TFT clock”,“LCD-TFT clock”即通訊中的同步時鐘
LCD_CLK,它使用 LCD_CLK 引腳輸出。
?
??/************************************************2017.7.29***************************************************************/
LTDC 初始化結構體
這里有很多涉及寄存器的東西,如果不是必要,不用自己去配置。
但是卻有幾個值得注意的地方:
第一:關于LTDC的引腳復用:
看到上圖不要以為LCD_G3和LCD_B2可以同時使用一個引腳,LCD_B2還有其他引腳可以使用,只是提醒自己不要以為復用只有AF14的LCD,在AF9處還隱藏著有LCD的復用功能。
有可能是復用AF14也可能是復用AF9,具體如何選擇AF14還是AF9的復用呢?在stm32f4xx_gpio.h中:
期間當然還有更多的復用選擇:
需要注意的是這里LTDC復用不是單純的只有AF14,還有AF9的。
第二點:用sdram寫點刷屏方式:
?
?這樣可能會在屏幕下方有亂碼或者花屏這樣的現象,此時需要更改sdram中的一個配置:
static void SDRAM_InitSequence(void)函數中的:
突發長度如果配置成8可能會出現上面所說的花屏問題,改成4之后,得到了解決。
?/************************************************2017.7.29***************************************************************/
?
轉載于:https://www.cnblogs.com/yangguang-it/p/7227356.html
總結
以上是生活随笔為你收集整理的LTDC/DMA2D—液晶显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无缘无故梦到自己怀孕怎么回事
- 下一篇: Hybris商品图片导入与压缩有关的配置