HAL库+stm32cubeIDE+4.3寸LCD显示器驱动移植
HAL庫+stm32cubeIDE+4.3寸LCD顯示器
開發板:野火霸天虎V2
IDE:stm32CUBEIDE
燒錄工具:openOCD
顯示器基本參數
- 像素
- 分辨率:
- 色彩深度:灰度值分布
- 顯示器尺寸
- 點距
所使用液晶控制器
帶了液晶控制器芯片
所以刷新率會慢一點(沒有DMA)
液晶面板控制信號
| R[7:0] | 紅色數據 |
| G[7:0] | 綠色數據 |
| B[7:0] | 藍色數據 |
| CLK | 像素同步時鐘信號 |
| HSYNC | 水平同步信號 |
| VSYNC | 垂直同步信號 |
| DE | 數據使能信號 |
- RGB信號線
- 代表了RGB的數據
- CLK
- 像素同步信號,每個時鐘需要刷新
- HSYNC
- 屏幕刷新,按行刷;一行刷新的結尾
- VSYNC
- 一幀圖像的結尾標志
液晶時序控制
HBP:表示從水平同步信號開始到一行的有效數據開始之間的 CLK 的個數
HFP:表示一行的有效數據結束到下一個水平同步信號開始之間的 CLK 的個數
VBP :表示在一幀圖像開始時,垂直同步信號以后的無效的行數
VFP:表示在一幀圖像結束后,垂直同步信號以前的無效的行數
VSW :表示垂直同步信號的寬度,單位為行
HSW:表示水平同步信號的寬度,單位為同步時鐘CLK的個數
在這些時間參數控制的區域,數據使能信號線“DE”都為低電平,RGB 數據線的信號無效,當“DE”為高電平時,表示的數據有效,傳輸的數據會直接影響液晶屏的顯示區域。
觸摸屏
觸摸面板引出的信號線引入到GT917S 芯片,該芯片會對觸摸信號進行采集并簡化信號輸出給外部控制器。
觸摸面板的下方就是液晶面板,該液晶控制器使用的是8080接口
液晶屏的信號線及 8080 時序
NT35510 控制器根據自身的 IM[3:0] 信號線電平決定它與MCU 的通訊方式,它本身支持 SPI 及 8080 通訊方式
由圖可知,寫命令時序由片選信號 CSX 拉低開始,對數據/命令選擇信號線 D/CX 也置低電平表示寫入的是命令地址 (可理解為命令編碼,如軟件復位命令:0x01),以寫信號WRX為低,讀信號 RDX 為高表示數據傳輸方向為寫入,同時,在數據線 D[23:0](或 D[15:0]) 輸出命令地址,在 第二個傳輸階段傳送的是命令的參數,所以 D/CX 要置高電平,表示寫入的是命令數據,命令數 據是某些指令帶有的參數,如復位指令編碼為 0x01,它后面可以帶一個參數,該參數表示多少 秒后復位 (實際的復位命令不含參數,此處只是為了講解指令編碼與參數的區別)。 當需要把像素數據寫入GRAM時,過程很類似,把片選信號CSX拉低后,再把數據/命令選擇信 號線 D/CX 置為高電平,這時由 D[23:0] 傳輸的數據則會被 NT35510 保存至它的GRAM中。
stm32-FSMC解讀
注意看下FSMC的框圖,發下NOR和SRAM放一起,說明程序里這倆變量其實是結構是一樣的(為啥單獨拎出來講一下,因為野火給的HAL庫代碼有點坑,首先是變量的定義和生成的有出入-都能用,就是無法理解,其次是忘了開寫使能)
地址映射
野火所使用的LCD的MCU借口是NOR Falsh,所以要選用存儲區域1,我們按照教程選了第3區域
第一個存儲區域的地址
解釋:存儲器要是8位的話,最大支持的外設地址為0~2^26-1個地址,也就是64MB的地址,所以容量就是512Mb
如果是16位的話,最高位不用,也還是支持512Mb(至于原因,存儲器是按照字節,也就是8位來尋址的,16位是要讀兩次)
信號建立時間
信號時序
只針對8080時序
僅僅是FSMC的地址信號線 A[25:0] 與 8080 的數據/命令選擇線 D/CX 有區別。而對于 D/CX 線,它為高電平的時候表示數值,為低電 平的時候表示命令,如果能使用 FSMC 的 A 地址線根據不同的情況產生對應的電平,那么就完 全可以使用 FSMC來產生 8080 接口需要的時序了
由于 FSMC會自動產生地址信號,當使用 FSMC向 0x6xxx xxx1、0x6xxx xxx3、0x6xxx xxx5?這 些奇數地址寫入數據時,地址最低位的值均為1,所以它會控制地址線A0(D/CX)輸出高電平,那 么這時通過數據線傳輸的信號會被理解為數值;若向 0x6xxx xxx0 、0x6xxx xxx2、0x6xxx xxx4? 這些偶數地址寫入數據時,地址最低位的值均為 0,所以它會控制地址線 A0(D/CX) 輸出低電平, 因此這時通過數據線傳輸的信號會被理解為命令,見表 27?6。
對應代碼的話,就是要有一個寫指令命令和讀指令命令。當然,前提是我們要設置A[25:0]只有一位生效,原因,這樣,才會符合D/CX的高低電平
代碼移植
使用野火配套的代碼就把它的GPIO口(會使用到軟件復位)和FSMC口配置一下
解釋:NE3-bank3,類型NOR Flas,地址只要1位,數據位16位,我們是異步傳輸,不需要用到時鐘或者總線
開啟寫方向使能,不需要進行擴展模式使用(就是寫入和讀取用同一個)
接下來生成代碼
在液晶顯示的驅動包里,把GPIO_Config和FSMC_Config注釋掉,就可以用了
接下來生成代碼
在液晶顯示的驅動包里,把GPIO_Config和FSMC_Config注釋掉,就可以用了里面定義的倆全局變量也注釋掉
總結
以上是生活随笔為你收集整理的HAL库+stm32cubeIDE+4.3寸LCD显示器驱动移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人教版初中信息技术电子课本_人教版 九年
- 下一篇: 新起点大学英语综合教程2张伯香第一单元课