1. 程式人生 > >STM32f429-SDRAM+LTDC總結

STM32f429-SDRAM+LTDC總結

買了塊STM32F429I-DISC1準備搞點稍微複雜點東西,比如LCD驅動,攝像頭驅動,DSP之類。

先搞得是LCD驅動,F429提供了LTDC介面,就是可以直接可以用RGB的方式驅動螢幕,而用RGB方式就需要有比較大的RAM,但一般MCU的板載RAM都是很小的,都是通過外接SDRAM的方式來進行的,而SDRAM就是跟電腦外接DDR記憶體的原理是一樣的。F429板載了一顆8Mbyte的SDRAM。

關於瞭解SDRAM的一些常識,看了一篇doc,“高手進階,終極記憶體技術指南——完整.doc”,裡面講了很多SDRAM的時序和引數。

SDRAM原理:有行地址,列地址,地址線等等。還有讀取每個區塊就是Bank的時候先定位行地址然後定位列地址等等,已經讀寫的一些時序和一些關鍵引數的設定:

如tRCD、CAS Latency、tRP、tWR等等,這些在程式碼裡都要配置的,根據SDRAM的資料手冊(DISC1用的IS42S16400J)

具體程式碼工程配置:

1.FMC的配置,就是SDRAM的IO配置(地址線、CS訊號、資料線、Bank選擇線、CLK等等)可以用CubeMx直接生成,可以配記憶體地址、Bank數量、多少行多少列,還有CAS,TRCD等都是以時鐘訊號為單位的。

2.時鐘配置FMC_SDRAM_CMD_CLK_ENABLE

3.PALL預充電儲存區域FMC_SDRAM_CMD_PALL

4.自重新整理FMC_SDRAM_CMD_AUTOREFRESH_MODE

5.設定一堆如模式暫存器、突發長度、等等...

6.重新整理率設定(重新整理率是64ms ÷(4096行) = 15.7us SDRAM使用108MHz,重新整理週期為:15.7us × 90MHz count = 1413-20)

就這樣設玩,SDRAM就可以隨意讀寫了。然後就可以給LTDC和DMA2D使用了。

LCD螢幕驅動就是RGB驅動方式的配置,就是配置LTDC介面,這個可以在CubeMX中配置

RGB驅動方式原理其實也挺簡單的,RGB三色,每個最多8位就是RGB888,16位就是RGB565,重新整理方式就是一個VSYNC一個HSYNC一個是一幀,一個是一行。

F429分一個背景層,2個使用者圖層,配置相應的引數即可顯示,若果顯示不全調整引數即可。

但是光設定LTDC是點不亮開發板的螢幕的,原因是STM32F429I-Disc1開發板上LCD帶有驅動IC-ILI9341,所以要用SPI給它下一些初始化的命令,就可以點亮了,這個具體可以參考官方出廠的例程。

我也不明白,為什麼這個屏不能單獨用RGB的方式驅動,用了RGB的方式還是要去初始化驅動IC才行。

最後用ST自帶的工具生成一張image.h用DMA2D顯示到螢幕上,測試OK。

暫時不試STemWim的圖形庫了,接下來搞一下攝像頭驅動OV7640,然後搞下網路協議,CAN協議就先不看了,然後就要研究DSP的使用了。