新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32的FSMC學(xué)習(xí)手記(一)

STM32的FSMC學(xué)習(xí)手記(一)

作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
FSMC應(yīng)用簡介
FSMC全稱“靜態(tài)存儲器控制器”,STM32可以通過FSMC與SRAM、ROM、PSRAM、Nor Flash和NandFlash存儲器的引腳相連,從而進行數(shù)據(jù)的交換。

一、FSMC的特點:

1、 FSMC的一大特點是支持不同位寬的異步讀寫操作。
2、 FSMC的映射地址空間中,不同的BANK是獨立的,可用于擴展不同類型的存儲器。當(dāng)FSMC同時使用多個外部存儲器時,F(xiàn)SMC會通過總線懸空延時時間參數(shù),來防止訪問沖突發(fā)生。
3、 支持代碼從FSMC擴展的外部存儲器中直接運行。不需要首先調(diào)入內(nèi)部SRAM。

二、FSMC的結(jié)構(gòu)組成:

如圖所示,F(xiàn)SMC主要分為四部分:
1、 FSMC一端連接著AHB高速總線,與Cortex-M3內(nèi)核相連接。
2、 FSMC內(nèi)部實際上包括Nor Flash和Nand/PC Card兩個控制器,支持兩種不同的存儲方式。
3、 外部設(shè)備接口。
4、 配置寄存器,用于選擇FSMC的功能。

三、FSMC的映射空間

FSMC管理1GB的映射地址空間。可以劃分為4個256M的BANK,每個BANK又劃分為4個64M的子BANK,如下表所示。

FAMC對每個存儲塊分配一個唯一的片選信號NE[4:1]。

四、FSMC的初始化

在使用SRAM之前,我們需要對SRAM使用的FSMC BANK進行參數(shù)配置,使之與SRAM芯片的要求相符合。
FSMC所占用的引腳初始化
在STM32技術(shù)手冊中,針對FSMC引腳的GPIO模式配置,已經(jīng)進行了說明,具體FSMC總線配置方法如下。下表指的是整個FSMC接口的引腳初始化配置說明,應(yīng)該根據(jù)實際初始化相關(guān)的引腳。

完成FSMC引腳初始化后,要配置可編程存儲器的參數(shù),包括時序,是否支持非對齊訪問和等待周期管理(只針對突發(fā)模式訪問PSRAM和NOR閃存



p.FSMC_AddressSetupTime = 0; //地址建立時間
p.FSMC_AddressHoldTime = 0; //地址保持時間
p.FSMC_DataSetupTime = 2; //數(shù)據(jù)建立時間
p.FSMC_BusTurnAroundDuration = 0; //總線恢復(fù)時間
p.FSMC_CLKDivision = 0; // 時鐘分頻因子
p.FSMC_DataLatency = 0; //數(shù)據(jù)產(chǎn)生時間
p.FSMC_AccessMode = FSMC_AccessMode_A; //FSMC NOR控制器時序
存儲器類型、RAM數(shù)據(jù)寬度、AM地址范圍、用的FSMC BANK、FSMC工作模式的初始化等。

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3; //使用了FSMC的BANK1的子板塊3
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//禁止地址數(shù)據(jù)線復(fù)用
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //存儲器類型為SRAM
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //存儲器數(shù)據(jù)寬度為16位
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //關(guān)閉突發(fā)模式訪問
//等待信號優(yōu)先級,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
//關(guān)閉Wrapped burst access mode,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
//等待信號設(shè)置,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //使能這個BANK的寫操作
//使能/關(guān)閉等待信息設(shè)置,只在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //關(guān)閉Extend Mode
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //關(guān)閉Write Burst Mode
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; //讀操作時序參數(shù)
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //寫操作時序參數(shù)





關(guān)鍵詞: STM32FSMC學(xué)習(xí)手

評論


技術(shù)專區(qū)

關(guān)閉