Thursday, September 7, 2017

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中。
不過功能僅有基本。

成果


No comments:

Post a Comment

精選文章

使用Ardunio Atmega2560 連接 nRF24L01+

使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...