STM32中挂载SDRAM内存说明
SDRAM使用總結
2018-7-9 08:57?2138?4?4?分類:?MCU/ 嵌入式?文集:?stm32
最近stm32學到使用SDRAM了,板載SDRAM為IS42S16400J。
?
SDRAM為一種可以運行存儲在存儲器上的代碼的存儲器,stm32內部有2M的代碼運行空間,一般都是夠用的,如果不夠用的時候就可以用SDRAM擴大代碼運行空間。
?
SDRAM是通過FMC連接后直接映射到stm32內部尋址空間,與IIC和SPI需要操作總線不一樣,操作SDRAM只需要在程序中定義一個指向這個空間的指針,通過指針直接修改存儲單元內容,FMC外設會自動完成數據訪問過程。
?
?
為了使FMC完成這些數據訪問操作,需要在程序一開始進行初始化過程,一共包括對GPIO管腳時鐘的初始化、FMC的初始化、SDRAM時序初始化。
?
SDRAM我覺得最重要的就是初始化過程了,初始化順序一定要注意,一定要按照GPIO->FMC->SDRAM這個順序初始化。
?
使用CubeMX創建的stm32工程需要注意,SDRAM時序初始化不能放在HAL_SDRAM_MspInit里,因為CubeMX生成的程序初始化過程是這樣的,MX_FMC_Init->HAL_SDRAM_Init->HAL_SDRAM_MspInit,如果SDRAM時序初始化放在HAL_SDRAM_MspInit里,會由于FMC還沒有初始化成功而導致SDRAM時序初始化失敗。
?
我一開始就是由于不清楚這個初始化順序,導致程序一直卡在SDRAM讀寫處。
?
?
讀寫SDRAM的話,只需要用一個指向這個空間地址的指針,然后操作這個指針指向的內容就好了。一個簡單的讀的例子如下。
IAR工程中:__no_init ?@ ?來進行實現
uint32_t?*pSDRAM;
#define?SDRAM_BANK_ADDR ? ??((uint32_t)0xD0000000)
__no_init ? uint32_t?RadomBuffer[10000] ? ? ? @ ??SDRAM_BANK_ADDR ? ? ;//這個就是制定內存空間的語法
*pSDRAM=RadomBuffer[count];
總結
以上是生活随笔為你收集整理的STM32中挂载SDRAM内存说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女朋友相片被删除了怎么恢复
- 下一篇: 首汽旗下「GoFun」:共享危机四伏,区