0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F1_ FSMC讀寫外部SRAM

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-04-08 10:02 ? 次閱讀

前言

今天總結(jié)“STM32F103FSMC讀寫外部SRAM”,主要使用FSMC來(lái)控制外部SRAM,對(duì)SRAM進(jìn)行讀寫的操作。本文章提供的工程對(duì)SRAM讀寫從操作類似于對(duì)FLASH讀寫操作。

關(guān)于STM32的FSMC(靈活的靜態(tài)存儲(chǔ)器控制器)這一部分內(nèi)容比較實(shí)用,在實(shí)際應(yīng)用中也是比較重要的(對(duì)于需要實(shí)用FSMC來(lái)說(shuō))。運(yùn)用FSMC來(lái)控制外接器件比運(yùn)用軟件模擬來(lái)控制效率要高的多,而且操作簡(jiǎn)單。

也許對(duì)于初學(xué)者來(lái)說(shuō),對(duì)FSMC不了解,或不感興趣。因?yàn)镕SMC在實(shí)際開發(fā)中主要用于外擴(kuò)RAM和ROM,初學(xué)者對(duì)于RAM和ROM的需求不高,基本上內(nèi)部資源都?jí)蛄?。?duì)于喜歡使用LCD屏的人應(yīng)該了解FSMC,因?yàn)镕SMC控制LCD也是一種很好的方式,市面上很多開發(fā)板上的LCD屏都兼容FSMC。

下載

今天提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒問(wèn)題才上傳至360云盤。

今天的軟件工程下載地址(360云盤):

https://yunpan.cn/cSrN5SYtDcyBA訪問(wèn)密碼 47fb

STM32F10x的資料可以在我360云盤下載:

https://yunpan.cn/crBUdUGdYKam2訪問(wèn)密碼 ca90

內(nèi)容講解

工程概要說(shuō)明: 提供工程是對(duì)外部SRAM讀寫,可以當(dāng)做緩存(如:一個(gè)BUF)來(lái)使用,但并不是芯片的RAM(運(yùn)行內(nèi)存),只是對(duì)SRAM進(jìn)行讀寫操作。

程序運(yùn)行流程:上電寫入外部SRAM數(shù)據(jù)“0 - 262143”(剛好是1M空間,4字節(jié)空間一數(shù)據(jù)),再通讀讀函數(shù)讀出其數(shù)據(jù),通過(guò)串口打印出來(lái)。這里每讀一次串口打印一次數(shù)據(jù),LED變化一次。(請(qǐng)觀測(cè)現(xiàn)象)

提供的工程以簡(jiǎn)單為原則,詳細(xì)中文注釋,方便自己方便大家。

關(guān)于“STM32F103 片內(nèi)FLASH編程”我把重要的幾點(diǎn)在下面分別講述:

一、時(shí)鐘


該函數(shù)位于bsp.c文件下面;

開啟FSMC和需要使用引腳的時(shí)鐘。

二、FSMC引腳配置


該函數(shù)位于fsmc.c文件下面;

使用了FSMC的引腳都須配置為“GPIO_Mode_AF_PP”,否則不能使用(感興趣的可以試試)。對(duì)于NE3就是:NOR/PSRAM3,我測(cè)試的工程是使用FSCM存儲(chǔ)塊1(下圖)的NOR/PSRAM3。所以我測(cè)試工程里面的地址是“0x68000000”,其實(shí)這個(gè)地址有講究的,請(qǐng)看最后重點(diǎn)。


三、FSMC配置


該函數(shù)位于fsmc.c文件下面;

這里的配置和你的SRAM有一點(diǎn)的關(guān)聯(lián)(速度、數(shù)據(jù)寬度等)。

三、外部SRAM寫數(shù)據(jù)


該函數(shù)位于fsmc.c文件下面;

對(duì)1M的SRAM寫數(shù)據(jù)(為了測(cè)試),方便下面讀操作。

四、外部SRAM讀數(shù)據(jù)


該函數(shù)位于fsmc.c文件下面;

對(duì)1M的SRAM讀數(shù)據(jù),通過(guò)串口打印出來(lái)寫入的數(shù)據(jù),每讀一次,打印一次,中間有個(gè)延時(shí),所以整個(gè)讀取的過(guò)程時(shí)間比較長(zhǎng)。

這個(gè)地址可以修改,或者選擇一段來(lái)讀取測(cè)試也行。希望看到的人都親自修改程序來(lái)測(cè)試一下,方便記憶和鞏固。

五、今天的重點(diǎn)

A.關(guān)于地址的問(wèn)題,今天提供的工程外部SRAM地址是“0x68000000”(宏定義在fsmc.h里),善于發(fā)現(xiàn)問(wèn)題和動(dòng)手的人會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,我將這個(gè)地址改為“0x68100000”或“0x68200000”測(cè)試的效果都一樣。我告訴你答案,效果確實(shí)是一樣的,原因就在于外部SRAM容量“SRAM_EXT_SIZE”大小是1M,而“0x00100000”剛好是1M,這里的地址溢出部分剛好抵消了,所以為什么修改地址也是一樣的效果。但地址必須在存儲(chǔ)塊1的NOR/PSRAM3區(qū)域。

B.今天是自己通過(guò)標(biāo)準(zhǔn)庫(kù)來(lái)配置的FSMC,其實(shí)在“system_stm32f10x.c”文件里面有使用寄存器直接配置FSMC的源代碼,感興趣的朋友可以看一下,今天使用標(biāo)準(zhǔn)庫(kù)配置其實(shí)也是希望大家數(shù)據(jù)各個(gè)參數(shù)的功能作用。其實(shí),希望大家在熟悉配置之后還是使用“system_stm32f10x.c”里的配置,畢竟這是官方提供的,它這樣配置效率也比較高。

說(shuō)明

今天提供的軟件工程基于STM32F103大容量芯片,中等及小容量芯片沒有FSMC功能,自然也不能使用,只要修改flash.h文件一個(gè)宏(頁(yè)大小就可以)。其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1有FSCM功能的芯片都適用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • sram
    +關(guān)注

    關(guān)注

    6

    文章

    757

    瀏覽量

    114450
  • STM32F10
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    15583
  • FSMC
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    38056
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十五講 EXMC-外部SRAM讀寫實(shí)驗(yàn)

    MCU的片內(nèi)SRAM空間有限,在做一些大量數(shù)據(jù)處理、GUI顯示等應(yīng)用中片內(nèi)SRAM容量無(wú)法滿足應(yīng)用需求,而外部SRAM器件讀寫速度快,不需要
    的頭像 發(fā)表于 06-25 09:39 ?457次閱讀
    【GD32<b class='flag-5'>F</b>303紅楓派開發(fā)板使用手冊(cè)】第二十五講 EXMC-<b class='flag-5'>外部</b><b class='flag-5'>SRAM</b><b class='flag-5'>讀寫</b>實(shí)驗(yàn)

    stm32fsmc總線上同時(shí)掛載LCD屏和SRAM和單獨(dú)設(shè)置一個(gè)FSMC總線設(shè)備的有哪些區(qū)別?

    我想問(wèn)一下stm32fsmc總線上同時(shí)掛載LCD屏和SRAM和單獨(dú)設(shè)置一個(gè)FSMC總線設(shè)備的有那些區(qū)別(我只做個(gè)單個(gè)設(shè)備的掛載)那位大神和廠家能講一下嗎,有實(shí)例最好,我就是怕不會(huì)出現(xiàn)
    發(fā)表于 05-31 07:31

    STM32F407讀取掛在FSMC上的外部ADC數(shù)據(jù),開啟DMA的Mem to Mem模式時(shí)只能讀取一次FSMC數(shù)據(jù),為什么?

    大家好,我現(xiàn)在使用STM32F407,想要讀取掛在FSMC上的外部ADC的數(shù)據(jù),我利用NOE產(chǎn)生一個(gè)時(shí)鐘信號(hào)給ADC。 現(xiàn)在的問(wèn)題是,當(dāng)我開啟DMA的Mem to Mem 模式時(shí),只能讀取一次
    發(fā)表于 05-29 07:20

    用MDK將UCOS+UCGUI下載到外部SRAM中調(diào)試慢怎么解決?

    寫數(shù)據(jù)。 @@觸摸屏是使用STM32內(nèi)部ADC采樣觸摸數(shù)據(jù),同樣使用了一個(gè)任務(wù)不停的對(duì)于UCGUI的GUI_TOUCH_Exec();) 外部SRAM:512K的IS61LV25616AL-10T
    發(fā)表于 05-17 11:41

    求助,關(guān)于STM32F407VET6 FSMC的地址問(wèn)題求解

    STM32F407VET6FSMC接口驅(qū)動(dòng) DM9000的問(wèn)題,PD7 接做為片選,PD11做為指令與數(shù)據(jù)的 代碼如下: #define DM9000_DATA*(vu16*)((u32
    發(fā)表于 05-15 07:49

    請(qǐng)問(wèn)一個(gè)大數(shù)組是不是不能同時(shí)跨用內(nèi)外部SRAM

    0x2000001cData1stm32f4xx_hal.o(.data) SystemCoreClock0x20000020Data4system_stm32f4xx.o(.data) hsram10x20000024Data 80
    發(fā)表于 03-26 07:06

    FSMC模擬8080刷OLED從F1移植到F4后無(wú)法使用怎么解決?

    1、STM32F103ZET6上配置的FSMC模擬8080用于刷新OLED(256*64),使用正常;2、移植至STM32F412RET6后無(wú)法使用,時(shí)鐘、復(fù)用、
    發(fā)表于 03-19 07:16

    STM32實(shí)例教程,帶你了解FSMC的功能和用法[?]()

    PC 存儲(chǔ)卡。STM32通過(guò)FSMC可以與SRAM、 ROM、 PSRAM、 NOR Flash和NANDFlash等存儲(chǔ)器的引腳直接相連。STM32F1
    發(fā)表于 03-15 15:53

    關(guān)于雅特力AT32F403A XMC復(fù)用模式驅(qū)動(dòng)SRAM芯片

    描述:AT32F403A引腳比較緊張,XMC(類似于STM32 FSMC)只支持復(fù)用模式,就是A0-A15和D0-D15都用一個(gè)引腳,如果要用,只能用鎖存器將地址鎖存,實(shí)現(xiàn)地址線和數(shù)據(jù)線的分離,目前
    發(fā)表于 01-04 10:46

    stm32f1如何將外部中斷關(guān)掉hal庫(kù)

    Layer)來(lái)簡(jiǎn)化芯片和外設(shè)的驅(qū)動(dòng)開發(fā)。在STM32F1中,外部中斷的關(guān)閉是通過(guò)HAL庫(kù)中的相應(yīng)函數(shù)來(lái)實(shí)現(xiàn)的。下面我將詳細(xì)介紹如何使用HAL庫(kù)關(guān)閉外部中斷。 引入必要的頭文件 要使用外部
    的頭像 發(fā)表于 12-22 13:52 ?2569次閱讀

    sram讀寫電路設(shè)計(jì)

    SRAM (Static Random Access Memory)是一種高速、隨機(jī)訪問(wèn)的存儲(chǔ)器,它以其快速的讀寫操作和不需要刷新的特點(diǎn)而受到廣泛使用。本文將詳細(xì)介紹SRAM讀寫電路
    的頭像 發(fā)表于 12-18 11:22 ?1430次閱讀

    使用MM32F3270 FSMC驅(qū)動(dòng)TFT-LCD

    使用MM32F3270 FSMC驅(qū)動(dòng)TFT-LCD
    的頭像 發(fā)表于 09-27 15:34 ?772次閱讀
    使用MM32<b class='flag-5'>F</b>3270 <b class='flag-5'>FSMC</b>驅(qū)動(dòng)TFT-LCD

    使用MM32F3270 FSMC驅(qū)動(dòng)OLED

    使用MM32F3270 FSMC驅(qū)動(dòng)OLED
    的頭像 發(fā)表于 09-27 15:30 ?786次閱讀
    使用MM32<b class='flag-5'>F</b>3270 <b class='flag-5'>FSMC</b>驅(qū)動(dòng)OLED

    STM32F1系列MCU硬件電路FSMC接口設(shè)計(jì)

    FSMCSTM32F1提供的一個(gè)靜態(tài)存儲(chǔ)控制器,是MCU用來(lái)擴(kuò)展存儲(chǔ)器,可用來(lái)驅(qū)動(dòng)SRAM、Nor Flash、NAND Flash。這里先簡(jiǎn)單講解下這三種存儲(chǔ)器的應(yīng)用場(chǎng)合。
    發(fā)表于 09-27 14:33 ?2363次閱讀
    <b class='flag-5'>STM32F1</b>系列MCU硬件電路<b class='flag-5'>FSMC</b>接口設(shè)計(jì)

    請(qǐng)問(wèn)FSMC外擴(kuò)SRAM數(shù)據(jù)之間是怎么傳送的?

    FSMC外擴(kuò)SRAM數(shù)據(jù)之間是怎么傳送的?先保存在FSMC再傳送外擴(kuò)SRAM
    發(fā)表于 09-27 06:03