讓STM32的外部SRAM操作跟內部SRAM一樣

2021-01-21 電子產品世界

前幾天看到開源電子論壇(openedv.com)有人在問這個問題,我特意去做了這個實驗,這樣用外部SRAM就跟用內部SRAM一樣,不用自己去申請內存,也不用考慮什麼內存地址,一切讓編譯器自己去解決。

廢話不多說,我直接拿原子哥的戰艦開發板庫函數版的外部SRAM實驗來修改。在庫函數的system_stm32f10x.c這個初始化文件當中其實就已經有外部SRAM的初始化,我們只要增加「#define DATA_IN_ExtSRAM 1」這句宏定義

本文引用地址:http://www.eepw.com.cn/article/201611/322732.htm

1#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
3#define DATA_IN_ExtSRAM 1

再編譯的時候就會把外部SRAM的初始化編譯進去,初始化的代碼大家可以去看文件中的void SystemInit_ExtMemCtl(void) 這個函數。然後我們在工程設置那裡把外部SRAM地址增加進去,如下圖

修改啟動文件中的中的第39行,把__initial_sp 修改成__initial_spEQU 0x20000000 + Stack_Size

然後我們把Main中的testsram中的地址去掉,讓編譯器自己去指定地址

再把原子哥的外部SRAM的初始化注釋掉,因為前面已經在System_init已經初始化了。其實這裡我們可以把原子的SRAM.c文件去掉不用它了,我這裡沒去掉,其實只是為了能正常調用fsmc_sram_test()來測試實驗結果

到這裡我們可以編譯了,下載到開發板,我們就可以看到實驗結果


相關焦點

  • SRAM的性能介紹以及它的結構解析
    這些電晶體不需要刷新,但停機或斷電時,它們同DRAM一樣,會丟掉信息。SRAM的速度非常快,通常能以20ns或更快的速度工作。靜態ram中所謂的「靜態」,是指這種存儲器只要保持通電,裡面儲存的數據就可以恆常保持。SRAM不需要刷新電路即能保存它內部存儲的數據。 因此SRAM具有較高的性能,SoC隨著工藝進步設計複雜度增加,embeded sram也越來越多。
  • SRAM 12速eTap變速套件預生產型號驚現賽道,豐富諜照深度解讀
    雖然在變速器和牙盤位置的標誌都已經用電工膠帶進行了遮擋,但是還是很容易能就分辨出這是一套sram 的無線傳動系統。2019年sram red etap 12速無線公路變速原型驚現賽場目前從得到的消息來看,安裝了sram12速無線變速系統的車是德國的職業車手Nils Politt的Canyon Aeroad CF SLX公路車。
  • SRAM全新12速eTap AXS版本深度解析,看似一樣又大不一樣
    曲柄組末端的那個時尚的Quarq標誌,其實只是一個蓋子,蓋子下邊是和以前一樣的功能和設計。下邊是TT牙盤組的樣子:大約在一年前sram推出了他們的DUB系統用於他們的山地自行車,現在已經開始使用在公路車上。所以,只有一個選項,而你要做的就是找到合適的可以安裝DUB中軸的車架。
  • 在使用SRAM時如何才能有效節省晶片的面積
    在使用SRAM時如何才能有效節省晶片的面積 是酒窩啊 發表於 2020-06-22 13:36:09 SRAM存儲器是一款不需要刷新電路即能保存它內部存儲數據的靜態隨機存儲器
  • STM32F407 外擴SRAM
    通過以上幾個步驟,完成了FSMC的配置,可以訪問IS62WV51216了,這裡還需要注意,因為我們使用的是BANK1的區域3,所以HADDR[27:26]=10,故外部內存的首地址為0X68000000。
  • SRAM存儲器主板基本設計
    它具有靜止存取功能的存儲器晶片,它不需要刷新電路便能保存它內部存儲的所有數據。 SRAM存儲晶片主要應用於需要緩存比較小或對功耗有要求的系統。例如很多8 BIT 單片機,由於能支持的RAM存儲比較小,內部緩存又不夠;或者16 BIT MCU,支持的RAM比較大,但對低功耗有要求而無法用DRAM的系統。那麼如何設計SRAM存儲主板呢?
  • SRAM AXS網站更新胎壓、齒比、功率、速度等關係程序
    在axs.sram.com網站上,悄然更新了它的數據系統,用戶只需將碼錶與電腦連接,即可將相關數據匹配顯示,為了獲取更多更詳盡的數據,你還可以配對TireWiz獲取胎壓數據。當然除了SRAM AXS電變之外,數據系統也支持Di2數據的關聯。在頁面中,用戶的速度、路線和其他騎行指標與諸如換擋次數、每個齒比上的持續時間、胎壓、心率、功率等數據結合起來顯示。
  • stm32f427外擴sram型號推薦
    stm32f427外擴sram型號推薦
  • STM32基於FSMC的SRAM擴展
    IS61LV51216是ISSI公司生產的常用16位SRAM異步存儲晶片,內部512k存儲容量足以滿足多數場合應用需求,存取時間8~12ns ,全靜態操作,不需時鐘或刷新,兼容TTL標準接口,具有高速,可靠、易操作.低功耗等優點。
  • 詳解SRAM與DRAM的前生今世
    隨機存取存儲器(RAM)是與CPU直接交換數據的內部存儲器,放置在處理器上,為CPU運算存儲變量。RAM為請求數據(寄存器)提供存儲器位置,CPU接收帶有數據存儲器地址或位置的數據讀取指令,將地址發送到RAM控制器。反過來,控制器將地址發送到正確的路徑,打開路徑電晶體並讀取每個電容器值。讀取的數據將傳輸回CPU的緩存。
  • SRAM存儲器寫操作分析
    英尚微電子介紹關於SRAM讀寫中「寫操作」分析。寫操作分析寫操作與讀操作正好相反,它要使存儲單元的狀態按照寫入的數據進行相應的翻轉。如圖3.6 表示了六管單元的寫操作示意圖。位線BIT_在寫操作開始時被驅動到低電平。
  • SRAM工作原理
    SRAM寫操作當bit-cell存儲的內容為1而要寫入0,即Q的電壓值為VDD,此時只需要將WL電壓值提高到VDD且BL為0,那麼Q電壓值將通過M6被拉低,Q』的電壓值將通過M5被拉高,再由M1/M2,M3/M4兩個反相器推挽,bit-cell存儲的內容就從1變成0了。此時WL電壓拉低即可完成數據鎖存。2.
  • IAR for AVR 學習筆記(5)--SRAM操作
    SARM數據類型的具體操作方法 SARM空間是AVR單片機最重要的部分,所有的操作必須依賴該部分來完成。對於程序中的局部變量,編譯器會自動處理的,我們也不可能加什麼儲存屬性,但IAR提供了強大的外部變量定義。
  • stm32屬於arm嗎_arm和stm32的區別
    打開APP stm32屬於arm嗎_arm和stm32的區別 發表於 2017-10-10 11:34:35        stm32
  • 賽普拉斯NV-SRAM解決方案
    圖1.帶微控制器的NV-SRAM接口 高速SRAM單元提供了非常高速的讀寫訪問,並且可以像標準SRAM中一樣無限次地寫入或讀取NV-SRAM。NV-SRAM VCAP引腳上需要的電容器只有幾十 F,典型值為68 F(有關VCAP的允許範圍,並在上電期間通過內部充電電路進行充電。 VCAP上存儲的電荷足以在掉電期間將SRAM數據複製到非易失性元件(稱為存儲操作)。 此存儲操作對應用程式是透明的,因為當VCC電源在閾值水平(VSWITCH)以下故障時會自動執行該存儲操作。
  • 詳細介紹NV-SRAM與電池供電SRAM(BBSRAM)相比所具有的優點
    當供電電壓(VCC)低於指定電壓電平時,內部電池將被打開以維持存儲器中的內容,直到VCC返回到有效條件為止。 NV-SRAM是什麼?賽普拉斯NV-SRAM是一種快速靜態RAM(SRAM),且每個存儲器單元中都包含非易失性單元。採用SONOS技術,可以將嵌入式非易失性單元製造成世界上最可靠的非易失性存儲器。
  • SRAM隨機存儲器的特點及結構
    DRAM 以電容上存儲電荷數的多少來代表所存儲的數據,電路結構十分簡單(採用單管單電容1T-1C的電路形式),因此集成度很高,但是因為電容上的電荷會洩漏,為了能長期保存數據,它需要定期的刷新操作。這不但使DRAM 的讀寫控制變得複雜,而且也降低了它的讀寫速度。DRAM 主要用作主存儲器。