STM32F429 如何使用SDRAM

2021-09-27 09:59:41 字數 1622 閱讀 3606

origin:

關於stm32f429 控制sdram( fmc—擴充套件外部sdram )

(1)原理介紹:

》為什麼是fmc 不是 fsmc ?區別在那裡!

stm32f429使用fmc外設來管理擴充套件的儲存器,fmc是flexible memory controller的縮寫,譯為可變儲存控制器。

它可以用於驅動包括sram、sdram、nor flash以及nand flsah型別的儲存器。

在其它系列的stm32控制器中,只有fsmc控制器(flexible static memory controller),譯為可變靜態儲存控制器,

所以它們不能驅動sdram這樣的動態儲存器,因為驅動sdram時需要定時重新整理,stm32f429的fmc外設才支援該功能,

且只支援普通的sdram,不支援ddr型別的sdram。我們只講述fmc的sdram控制功能。

》fmc特點:

fmc連線好外部的儲存器並初始化後,就可以直接通過訪問位址來讀寫資料,這種位址訪問與i2c eeprom、spi flash的不一樣,

後兩種方式都需要控制i2c或spi匯流排給儲存器傳送位址,然後獲取資料;在程式裡,這個位址和資料都需要分開使用不同的變數儲存,

並且訪問時還需要使用**控制傳送讀寫命令。而使用fmc外接儲存器時,其儲存單元是對映到stm32的內部定址空間的;

在程式裡,定義乙個指向這些位址的指標,然後就可以通過指標直接修改該儲存單元的內容,fmc外設會自動完成資料訪問過程,

讀寫命令之類的操作不需要程式控制。12

3456

78910

1112

1314

(2)關於sdram暫存器配置的講解:

(3)sdram的一些學習資料:

在這裡插入描述

(4)sdram的記憶體操作

使用指標的方式訪問sdram儲存器,完成初始化sdram後,我們就可以利用它儲存資料了,由於sdram的儲存空間是被對映到核心的定址區域的,我們可以通過對映的位址直接訪問sdram,訪問這些位址時,fmc外設自動讀寫sdram,程式上無需額外操作。

為方便使用,**中首先定義了巨集sdram_bank_addr表示sdram的起始位址,該位址即fmc對映的儲存區域2的首位址;巨集is42s16400j_size表示sdram的大小,所以從位址(sdram_bank_addr)到(sdram_bank_addr+is42s16400j_size)都表示在sdram的儲存空間,訪問這些位址,直接就能訪問sdram。

配合這些巨集,使用指標的強制轉換以及取指標操作即可讀寫sdram的資料,使用上跟普通的變數無異。

這種方式使用關鍵字"attribute((at()))"來指定變數的位址,**中指定testvalue儲存到sdram的起始位址,從而實現把變數儲存到sdram上。要注意使用這種方法定義變數時,必須在函式外把它定義成全域性變數,才可以儲存到指定位址上。

更常見的是利用這種方法定義乙個很大的陣列,整個陣列都指定到sdram位址上,然後就像使用malloc函式一樣,使用者自定義一些記憶體管理函式,動態地使用sdram的記憶體,我們在使用emwin寫gui應用的時候就是這樣做的。

在本書的《mdk編譯過程及檔案型別全解》章節將會講解使用更簡單的方法從sdram中分配變數,以及使用c語言標準庫的malloc函式來分配sdram的空間,更有效地進行記憶體管理。

STM32F429 如何使用SDRAM

關於stm32f429 控制sdram fmc 擴充套件外部sdram 1 原理介紹 為什麼是fmc 不是 fsmc 區別在那裡!stm32f429使用fmc外設來管理擴充套件的儲存器,fmc是flexible memory controller的縮寫,譯為可變儲存控制器。它可以用於驅動包括sram...

STM32F429 如何使用NAND Flash

1 原理介紹 flash即是儲存晶元的一種,其結合了rom和ram的特點,既具備電可擦除程式設計的效能,又可以快速讀取資料,資料不會因斷電丟失。目前市面上flash主要有nor flash和nand flash。nor flash具有隨機訪問和隨位元組執行寫操作的能力,即可以訪問到儲存器內部的任意乙...

STM32F429 如何使用LCD

1 硬體介面 要明白rgb888控制lcd 和8080控制方式的區別 tft液晶顯示器使用的是rgb介面,rgb介面包含24根rgb訊號線 畫素同步訊號線 水平同步訊號線 垂直同步訊號線和資料使能訊號線。效能一般的晶元,通常不會自帶液晶控制器,需要使用自帶液晶控制器器的液晶屏,這類觸控螢幕通常使用i...