日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32中挂载SDRAM内存说明

發布時間:2023/12/20 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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内存说明的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。