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”
其中的初始流程為:

  1. 初始化LCD =>以BSP_LCD_Init()
  2. 選擇LCD layer => BSP_LCD_SelectLayer()
  3. 啟動LCD => BSP_LCD_DisplayOn()

剩下繪製部分所提供的函式都在stm32469_discovery_lcd.h中。

不過功能僅有基本。

成果

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

延伸閱讀: http://www.st.com/content/ccc/resource/technical/document/application_note/85/ad/ef/0f/a3/a6/49/9a/CD00201397.pdf/files/CD00201397.pdf/jcr:content/translations/en.CD00201397.pdf

comments powered by Disqus