STM32 LCD 使用 BSP 與STM32CubeMX
STM32 LCD 使用 BSP 與STM32CubeMX
本文以STM32F469NI Discovery為範例。目標是以STM32F469的BSP lib操作STM32F469 Discovery的TFT-LCD。
STM32CubeMX configuration
先將周邊開啟如以下設定。
LTDC : LCD-TFT Display Controller,硬體優化的LCD控制介面。
DSIHOST: Display Serial Interface Host,由MIPI alliance建立的行動顯示protocol。提供高速的LCD framrate。
DMA2D : Chrom-Art Accelerator™ 用來做圖像操作的DMA,可以做出限定範圍的填滿等記憶體操作。適用AHB bus,可以將結果導入AHB slave端(DSI HOST)。
RCC : LTDC , DSI HOST需要時序。
I2C : 觸控需要。(stm32f469_discovery.c需要I2C)。
FMC : 用BSP時可以選擇使用SDRAM存儲資料。

時脈控制,由於開啟HSE,所以DSI有了clock source。(這部分要注意STM32CubeMX產生出來的程式碼是否會讓clock超過硬體限制)。

選擇RGB565為color mode。

Pixel format選用ARGB8888。
引入Driver
在專案資料夾下的Drivers/BSP/Components/otm8009a 中,將該路徑下的otm8009a.c 加入keil專案。otm8009a為STM32F469_Discovery上的觸控顯示螢幕。
在專案資料夾下的Drivers/BSP/STM32469I_Discovey中,將該路徑下的stm32469i_discovery.c、stm32469i_discovery_lcd.c、stm32469i_sdram.c加入keil專案中。
去下載STM32CubeMX STM32F4 firmware link: http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef4.html
解開來,將Utilities資料夾放入project根目錄。
新增好的檔案架構如下。

在options for target -> C/C++ -> include path中加入那兩個資料夾。如下:

程式撰寫
main.c中include “stm32469i_discovery_lcd.h”
其中的初始流程為:
- 初始化LCD =>以BSP_LCD_Init()
- 選擇LCD layer => BSP_LCD_SelectLayer()
- 啟動LCD => BSP_LCD_DisplayOn()
剩下繪製部分所提供的函式都在stm32469_discovery_lcd.h中。
不過功能僅有基本。
成果

上面印的文字是宅梗,歡迎探究XD