新聞中心

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

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

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

一、FSMC的特點(diǎn):

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

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

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

三、FSMC的映射空間

FSMC管理1GB的映射地址空間??梢詣澐譃?個(gè)256M的BANK,每個(gè)BANK又劃分為4個(gè)64M的子BANK,如下表所示。

FAMC對每個(gè)存儲(chǔ)塊分配一個(gè)唯一的片選信號(hào)NE[4:1]。

四、FSMC的初始化

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

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


p.FSMC_AddressSetupTime = 0; //地址建立時(shí)間
p.FSMC_AddressHoldTime = 0; //地址保持時(shí)間
p.FSMC_DataSetupTime = 2; //數(shù)據(jù)建立時(shí)間
p.FSMC_BusTurnAroundDuration = 0; //總線恢復(fù)時(shí)間
p.FSMC_CLKDivision = 0; // 時(shí)鐘分頻因子
p.FSMC_DataLatency = 0; //數(shù)據(jù)產(chǎn)生時(shí)間
p.FSMC_AccessMode = FSMC_AccessMode_A; //FSMC NOR控制器時(shí)序
存儲(chǔ)器類型、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; //存儲(chǔ)器類型為SRAM
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //存儲(chǔ)器數(shù)據(jù)寬度為16位
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //關(guān)閉突發(fā)模式訪問
//等待信號(hào)優(yōu)先級,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
//關(guān)閉Wrapped burst access mode,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
//等待信號(hào)設(shè)置,只有在使能突發(fā)訪問模式才有效
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //使能這個(gè)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í)序參數(shù)
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //寫操作時(shí)序參數(shù)





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

評論


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

關(guān)閉