STM32驅動LCD原理
TFTLCD即薄膜電晶體液晶顯示器。它與無源TN-LCD、STN-LCD的簡單矩陣不同,它在液晶顯示屏的每一個畫素上都設定有一個薄膜電晶體(TFT),可有效地克服非選通時的串擾,使顯示液晶屏的靜態特性與掃描線數無關,因此大大提高了影象質量。
▲驅動流程
01、使用FSMC驅動LCD
關於FSMC,把資料寫入相應的地址,FSMC就會把地址從FSMC_A出去,寫入的資料會會從FSMC_D發出去。至於片選等訊號線都是自動的。讀的話,直接讀相應的地址,就會拿到改地址上的資料。
FSMC驅動外部SRAM時,外部SRAM的控制一般有:
-
地址線(如A0~A25)
-
資料線(如D0~D15)
-
寫訊號(WE,即WR)
-
讀訊號(OE,即RD)
-
片選訊號(CS)
如果SRAM支援位元組控制,那麼還有UB/LB訊號。
而TFTLCD的訊號包括:RS(命令資料標誌位)、D0~D15、WR、RD、CS、RST和BL等,其中真正在操作LCD的時候需要用到的就只有:
-
CS
-
WR
-
RS
-
D0~D15
-
RD
其操作時序和SRAM的控制完全類似,唯一不同就是TFTLCD有RS訊號,但是沒有地址訊號。
TFTLCD通過RS訊號來決定傳送的資料是資料還是命令,本質上可以理解為一個地址訊號,比如我們把RS接在A0上面,那麼當FSMC控制器寫地址0的時候,會使得A0變為0,對TFTLCD來說,就是寫命令。而FSMC寫地址1的時候,A0將會變為1,對TFTLCD來說,就是寫資料了。這樣,就把資料和命令區分開了,他們其實就是對應SRAM操作的兩個連續地址。當然RS也可以接在其他地址線上。
因此,可以把TFTLCD當成一個SRAM來用,只不過這個SRAM有2個地址,這就是FSMC可以驅動LCD的原理。
02、標準8080介面
8080匯流排又叫Intel匯流排,大致來說,Intel匯流排的控制線有四根,RD寫使能,WR讀使能,ALE地址鎖存,CS片選。
8080中:有RD(read),WR(Write)腳,RD,WR可以同時為高,不能同時為低!!RD為低時表示要從LCD中讀出資料在D0-D7腳上,WR為低時表示:將當前D0-D7上的資料寫入LCD
模組的8080並口讀/寫的過程為:
先根據要寫入/讀取的資料的型別,設定RS為高(資料)/低(命令),然後拉低片選,選中液晶IC,接著我們根據是讀資料,還是要寫資料置RD/WR為低,然後:
1.讀資料:在RD的上升沿,讀取資料線上的資料(D[15:0]);
2.寫資料:在WR的上升沿,使資料寫入到液晶IC裡面;
▲8080並口寫時序
▲8080並口讀時序
在NXP的UsingFlexIO to Drive 8080 Bus Interface LCDModule文件中同樣也提到了8080介面(P6),我找到的介紹8080介面的官方文件,就只有NXP這個文件。文件下載連結見問末尾。
▲寫時序
▲讀時序
03、使用FSMC驅動8080介面
▲讀時序
▲寫時序
04、顏色模式
4.1RGB565
每個畫素用16位元位表示,佔2個位元組,RGB分量分別使用5位、6位、5位
4.1RGB888
每個畫素用8位元位表示,佔1個位元組,注意:在記憶體中RGB各分量的排列順序為:BGRBGR BGR ......
點選檢視本文所在的專輯,STM32F207教程
文件下載連結:
連結:https://pan.baidu.com/s/1oYThPiVnc-_WSAyVy_vG2Q 提取碼: