新聞中心

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

STM32 FSMC 學(xué)習(xí)筆記

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
1.FSMC機(jī)制
FSMC(Flexihie Static Memory Controller,可變靜態(tài)存儲(chǔ)控制器)是STM32系列中內(nèi)部集成256 KB以上FlaSh,后綴為xC、xD和xE的高存儲(chǔ)密度微控制器特有的存儲(chǔ)控制機(jī)制。之所以稱為“可變”,是由于通過對(duì)特殊功能寄存器的設(shè)置,F(xiàn)SMC能夠根據(jù)不同的外部存儲(chǔ)器類型,發(fā)出相應(yīng)的數(shù)據(jù)/地址/控制信號(hào)類型以匹配信號(hào)的速度,從而使得STM32系列微控制器不僅能夠應(yīng)用各種不同類型、不同速度的外部靜態(tài)存儲(chǔ)器,而且能夠在不增加外部器件的情況下同時(shí)擴(kuò)展多種不同類型的靜態(tài)存儲(chǔ)器,滿足系統(tǒng)設(shè)計(jì)對(duì)存儲(chǔ)容量、產(chǎn)品體積以及成本的綜合要求
1.1 FSMC技術(shù)優(yōu)勢(shì)
①支持多種靜態(tài)存儲(chǔ)器類型。STM32通過FSMC町以與SRAM、ROM、PSRAM、NOR Flash和NANDFlash存儲(chǔ)器的引腳直接相連。
②支持豐富的存儲(chǔ)操作方法。FSMC不僅支持多種數(shù)據(jù)寬度的異步讀/寫操作,而且支持對(duì)NOR/PSRAM/NAND存儲(chǔ)器的同步突發(fā)訪問方式。
③支持同時(shí)擴(kuò)展多種存儲(chǔ)器。FSMC的映射地址空間中,不同的BANK是獨(dú)立的,可用于擴(kuò)展不同類型的存儲(chǔ)器。當(dāng)系統(tǒng)中擴(kuò)展和使用多個(gè)外部存儲(chǔ)器時(shí),F(xiàn)SMC會(huì)通過總線懸空延遲時(shí)間參數(shù)的設(shè)置,防止各存儲(chǔ)器對(duì)總線的訪問沖突。
④支持更為廣泛的存儲(chǔ)器型號(hào)。通過對(duì)FSMC的時(shí)間參數(shù)設(shè)置,擴(kuò)大了系統(tǒng)中可用存儲(chǔ)器的速度范圍,為用戶提供了靈活的存儲(chǔ)芯片選擇空間。
⑤支持代碼從FSMC擴(kuò)展的外部存儲(chǔ)器中直接運(yùn)行,而不需要首先調(diào)入內(nèi)部SRAM。
1.2 FSMC內(nèi)部結(jié)構(gòu)
STM32微控制器之所以能夠支持NOR Flash和NAND Flash這兩類訪問方式完全不同的存儲(chǔ)器擴(kuò)展,是因?yàn)镕SMC內(nèi)部實(shí)際包括NOR Flash和NAND/PC Card兩個(gè)控制器,分別支持兩種截然不同的存儲(chǔ)器訪問方式。在STM32內(nèi)部,F(xiàn)SMC的一端通過內(nèi)部高速總線AHB連接到內(nèi)核Cortex-M3,另一端則是面向擴(kuò)展存儲(chǔ)器的外部總線。內(nèi)核對(duì)外部存儲(chǔ)器的訪問信號(hào)發(fā)送到AHB總線后,經(jīng)過FSMC轉(zhuǎn)換為符合外部存儲(chǔ)器通信規(guī)約的信號(hào),送到外部存儲(chǔ)器的相應(yīng)引腳,實(shí)現(xiàn)內(nèi)核與外部存儲(chǔ)器之間的數(shù)據(jù)交互。FSMC起到橋梁作用,既能夠進(jìn)行信號(hào)類型的轉(zhuǎn)換,又能夠進(jìn)行信號(hào)寬度和時(shí)序的調(diào)整,屏蔽掉不同存儲(chǔ)類型的差異,使之對(duì)內(nèi)核而言沒有區(qū)別。
1.3 FSMC映射地址空間
FSMC管理1 GB的映射地址空間。該空間劃分為4個(gè)大小為256 MB的BANK,每個(gè)BANK又劃分為4個(gè)64 MB的子BANK,如表1所列。FSMC的2個(gè)控制器管理的映射地址空間不同。NOR Flash控制器管理第1個(gè)BANK,NAND/PC Card控制器管理第2~4個(gè)BANK。由于兩個(gè)控制器管理的存儲(chǔ)器類型不同,擴(kuò)展時(shí)應(yīng)根據(jù)選用的存儲(chǔ)設(shè)備類型確定其映射位置。其中,BANK1的4個(gè)子BANK擁有獨(dú)立的片選線和控制寄存器,可分別擴(kuò)展一個(gè)獨(dú)立的存儲(chǔ)設(shè)備,而BANK2~BANK4只有一組控制寄存器。
2 FSMC擴(kuò)展NOR Flash配置
SRAM/ROM、NOR Flash和PSRAM類型的外部存儲(chǔ)器都是由FSMC的NOR Flash控制器管理的,擴(kuò)展方法基本相同,其中NOR Flash最為復(fù)雜。通過FSMC擴(kuò)展外部存儲(chǔ)器時(shí),除了傳統(tǒng)存儲(chǔ)器擴(kuò)展所需要的硬件電路外,還需要進(jìn)行FSMC初始化配置。FSMC提供大量、細(xì)致的可編程參數(shù),以便能夠靈活地進(jìn)行各種不同類型、不同速度的存儲(chǔ)器擴(kuò)展。外部存儲(chǔ)器能否正常工作的關(guān)鍵在于:用戶能否根據(jù)選用的存儲(chǔ)器型號(hào),對(duì)配置寄存器進(jìn)行合理的初始化配置。
(1)確定映射地址空間
根據(jù)選用的存儲(chǔ)器類型確定擴(kuò)展使用的映射地址空間。NOR Flash只能選用BANK1中的4個(gè)子BANK。選定映射子BANK后,即可確定以下2方面內(nèi)容:
①硬件電路中用于選中該存儲(chǔ)器的片選線FSMC_NEi(i為子BANK號(hào),i=1,…,4);
②FSMC配置中用于配置該外部存儲(chǔ)器的特殊功能寄存器號(hào)(如表1所列)。
(2)配置存儲(chǔ)器基本特征
通過對(duì)FSMC特殊功能寄存器FSMC_BCRi(i為子BANK號(hào),i=1,…,4)中對(duì)應(yīng)控制位的設(shè)置,F(xiàn)SMC根據(jù)不同存儲(chǔ)器特征可靈活地進(jìn)行工作方式和信號(hào)的調(diào)整。根據(jù)選用的存儲(chǔ)器芯片確定需要配置的存儲(chǔ)器特征,主要包括以下方面:
①存儲(chǔ)器類型(MTYPE)是SRAM/ROM、PSRAM,還是NOR FlaSh;
②存儲(chǔ)芯片的地址和數(shù)據(jù)引腳是否復(fù)用(MUXEN),F(xiàn)SMC可以直接與AD0~AD15復(fù)用的存儲(chǔ)器相連,不需要增加外部器件;
③存儲(chǔ)芯片的數(shù)據(jù)線寬度(MWID),F(xiàn)SMC支持8位/16位兩種外部數(shù)據(jù)總線寬度;
④對(duì)于NOR Flash(PSRAM),是否采用同步突發(fā)訪問方式(B URSTEN);
⑤對(duì)于NOR Flash(PSRAM),NWAIT信號(hào)的特性說明(WAITEN、WAITCFG、WAITPOL);
⑥對(duì)于該存儲(chǔ)芯片的讀/寫操作,是否采用相同的時(shí)序參數(shù)來確定時(shí)序關(guān)系(EXTMOD)。
(3)配置存儲(chǔ)器時(shí)序參數(shù)
FSMC通過使用可編程的存儲(chǔ)器時(shí)序參數(shù)寄存器,拓寬了可選用的外部存儲(chǔ)器的速度范圍。FSMC的NORFlash控制器支持同步和異步突發(fā)兩種訪問方式。選用同步突發(fā)訪問方式時(shí),F(xiàn)SMC將HCLK(系統(tǒng)時(shí)鐘)分頻后,發(fā)送給外部存儲(chǔ)器作為同步時(shí)鐘信號(hào)FSMC_CLK。此時(shí)需要的設(shè)置的時(shí)間參數(shù)有2個(gè):
①HCLK與FSMC_CLK的分頻系數(shù)(CLKDIV),可以為2~16分頻;
②同步突發(fā)訪問中獲得第1個(gè)數(shù)據(jù)所需要的等待延遲(DATLAT)。
對(duì)于異步突發(fā)訪問方式,F(xiàn)SMC主要設(shè)置3個(gè)時(shí)間參數(shù):地址建立時(shí)間(ADDSET)、數(shù)據(jù)建立時(shí)間(DATAST)和地址保持時(shí)間(ADDHLD)。FSMC綜合了SRAM/ROM、PSRAM和NOR Flash產(chǎn)品的信號(hào)特點(diǎn),定義了4種不同的異步時(shí)序模型。選用不同的時(shí)序模型時(shí),需要設(shè)置不同的時(shí)序參數(shù),如表2所列。在實(shí)際擴(kuò)展時(shí),根據(jù)選用存儲(chǔ)器的特征確定時(shí)序模型,從而確定各時(shí)間參數(shù)與存儲(chǔ)器讀/寫周期參數(shù)指標(biāo)之間的計(jì)算關(guān)系;利用該計(jì)算關(guān)系和存儲(chǔ)芯片數(shù)據(jù)手冊(cè)中給定的參數(shù)指標(biāo),可計(jì)算出FSMC所需要的各時(shí)間參數(shù),從而對(duì)時(shí)間參數(shù)寄存器進(jìn)行合理的配置。



FSMC全稱“靜態(tài)存儲(chǔ)器控制器”。
使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作為地址線,而把FSMC提供的FSMC_D[15:0]作為數(shù)據(jù)總線。
(1)當(dāng)存儲(chǔ)數(shù)據(jù)設(shè)為8位時(shí),(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b)
地址各位對(duì)應(yīng)FSMC_A[25:0],數(shù)據(jù)位對(duì)應(yīng)FSMC_D[7:0]
(2)當(dāng)存儲(chǔ)數(shù)據(jù)設(shè)為16位時(shí),(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b)
地址各位對(duì)應(yīng)FSMC_A[24:0],數(shù)據(jù)位對(duì)應(yīng)FSMC_D[15:0]
FSMC 包括4個(gè)模塊:
(1)AHB接口(包括FSMC配置寄存器)
(2)NOR閃存和PSRAM控制器(驅(qū)動(dòng)LCD的時(shí)候LCD就好像一個(gè)PSRAM的里面只有2個(gè)16位的存儲(chǔ)空間,一個(gè)是DATA RAM 一個(gè)是CMD RAM)
(3)NAND閃存和PC卡控制器
(4)外部設(shè)備接口
注:FSMC可以請(qǐng)求AHB進(jìn)行數(shù)據(jù)寬度的操作。如果AHB操作的數(shù)據(jù)寬度大于外部設(shè)(NOR或NAND或LCD)的寬度,此時(shí)FSMC將AHB操作分割成幾個(gè)連續(xù)的較小的數(shù)據(jù)寬度,以適應(yīng)外部設(shè)備的數(shù)據(jù)寬度。


FSMC對(duì)外部設(shè)備的地址映像從0x6000 0000開始,到0x9FFF FFFF結(jié)束,共分4個(gè)地址塊,每個(gè)地址塊256M字節(jié)??梢钥闯觯總€(gè)地址塊又分為4個(gè)分地址塊,大小64M。對(duì)NOR的地址映像來說,我們可以通過選擇HADDR[27:26]來確定當(dāng)前使用的是哪個(gè)64M的分地址塊,如下頁(yè)表格。而這四個(gè)分存儲(chǔ)塊的片選,則使用NE[4:1]來選擇。數(shù)據(jù)線/地址線/控制線是共享的。

上一頁(yè) 1 2 下一頁(yè)

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

評(píng)論


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

關(guān)閉