《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > STM32-FSMC機(jī)制的NOR Flash存儲(chǔ)器擴(kuò)展技術(shù)
STM32-FSMC機(jī)制的NOR Flash存儲(chǔ)器擴(kuò)展技術(shù)
摘要: Cortex-M3內(nèi)核降低了系統(tǒng)存儲(chǔ)要求,,同時(shí)快速的中斷處理能夠滿足控制領(lǐng)域的高實(shí)時(shí)性要求,,使基于該內(nèi)核設(shè)計(jì)的STM32系列微控制器能夠以更優(yōu)越的性價(jià)比,,面向更廣泛的應(yīng)用領(lǐng)域,。
Abstract:
Key words :

 引言

STM32" title="STM32">STM32是ST(意法半導(dǎo)體)公司推出的基于ARM內(nèi)核Cortex-M3" title="Cortex-M3">Cortex-M3的32位微控制器系列,。Cortex-M3內(nèi)核是為低功耗和價(jià)格敏感的應(yīng)用而專門設(shè)計(jì)的,,具有突出的能效比和處理速度,。通過采用Thumb-2高密度指令集,,Cortex-M3內(nèi)核降低了系統(tǒng)存儲(chǔ)要求,,同時(shí)快速的中斷處理能夠滿足控制領(lǐng)域的高實(shí)時(shí)性要求,,使基于該內(nèi)核設(shè)計(jì)的STM32系列微控制器能夠以更優(yōu)越的性價(jià)比,面向更廣泛的應(yīng)用領(lǐng)域,。

STM32系列微控制器為用戶提供了豐富的選擇,,可適用于工業(yè)控制、智能家電,、建筑安防,、醫(yī)療設(shè)備以及消費(fèi)類電子產(chǎn)品等多方位嵌入式系統(tǒng)設(shè)計(jì)。STM32系列采用一種新型的存儲(chǔ)器擴(kuò)展技術(shù)" title="存儲(chǔ)器擴(kuò)展技術(shù)">存儲(chǔ)器擴(kuò)展技術(shù)——FSMC" title="FSMC">FSMC,,在外部存儲(chǔ)器擴(kuò)展方面具有獨(dú)特的優(yōu)勢(shì),,可根據(jù)系統(tǒng)的應(yīng)用需要,方便地進(jìn)行不同類型大容量靜態(tài)存儲(chǔ)器的擴(kuò)展,。

1FSMC機(jī)制

FSMC(Flexible 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.1FSMC技術(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.2FSMC內(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.3FSMC映射地址空間

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只有一組控制寄存器,。

2FSMC擴(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ā)訪問方式(BURSTEN),;

⑤對(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)行合理的配置,。


3STM32擴(kuò)展S29GL系列NOR Flash實(shí)例

3.1S29GL系列NOR Flash簡(jiǎn)介

Spansion公司的S29GL系列芯片是采用90 nm技術(shù)制造的高集成度NOR Flash存儲(chǔ)芯片,提供16~128 MB可選容量,,支持最快25 ns的頁訪問速度和110 ns的隨機(jī)訪問速度,,帶有最大64字節(jié)的寫緩沖區(qū),以提供更快,、更高效的編程,,是嵌入式系統(tǒng)設(shè)計(jì)中大容量存儲(chǔ)器擴(kuò)展的理想選擇。本文選用的型號(hào)為S29GL512P,,容量為512×64K字(總?cè)萘?4 MB),,擴(kuò)展到NOR Flash控制器管理的BANK1的第2個(gè)子BANK。

3.2 STM32與S29GL512P的電路連接

S25GL512P可通過控制引腳BYTE選擇對(duì)芯片的訪問單位(字/字節(jié)),,區(qū)別在于:

①對(duì)于芯片引腳DQ15,,字模式時(shí)傳送最高數(shù)據(jù)位D15;字節(jié)模式時(shí)傳送最低地址A-1,。

②字模式時(shí),,數(shù)據(jù)引腳D0~D15上傳送數(shù)據(jù)信號(hào);字節(jié)模式時(shí),,只有D0~D7上有信號(hào),。

此處,將BYTE上拉到高電平,,選擇16位的字訪問單位,。FSMC數(shù)據(jù)線FSMC_D[15:0]與S29GL512P的D15~D0對(duì)應(yīng)連接;FSMC地址線FSMC_A[25:0]的低25根與S29GL512P的地址線A[24:0]對(duì)應(yīng)連接,。

由于S29GL512P芯片映射到BANK1的子BANK2,,可確定其片選線應(yīng)連接FSMC片選控制線FSMC_NE2。S29GL512P的RY/BY引腳連接FSMC的FSMC_NWAIT引腳,,提供等待信號(hào),。

3.3 FSMC的配置

根據(jù)S29GL512P的映射位置,需要對(duì)FSMC_BCR2和FSMC_BTR2/BWTR2寄存器進(jìn)行配置,。

(1)FSMC_BCR2

配置S29GL512P的讀/寫采用統(tǒng)一時(shí)間參數(shù),,只需要設(shè)置時(shí)問寄存器FSMC_BTR2,。配置存儲(chǔ)器類型為NOR Flash,數(shù)據(jù)總線寬度為16位(字),,不采用地址/數(shù)據(jù)復(fù)用,,使能BANK1的子BANK2。

(2)FSMC_BTR2

由表2可知,,異步NOR Flash時(shí)序模型Mode2/B需要設(shè)置時(shí)問參數(shù)DATAST和ADDSET,。根據(jù)時(shí)序圖,兩個(gè)參數(shù)的計(jì)算公式如下:

式中:Twc和Trc為所選存儲(chǔ)芯片的寫周期長度和讀操作周期長度,;Twp為所選存儲(chǔ)芯片的寫信號(hào)持續(xù)長度,。

根據(jù)S29GL512P用戶手冊(cè),可知參數(shù)Twc=Trc=130 ns,,Twp=35 ns,。設(shè)STM32微控制器采用72 MHz主頻,則HCLK=(1/72×10-6)s,。通過上述公式計(jì)算,,可取值為:DATAST=2,ADDSET=5,。

為了達(dá)到更好的控制效果,,還應(yīng)考慮FSMC自身延遲問題,使用校正公式:

式中:TAVQV為所選存儲(chǔ)芯片訪問過程中,,從地址有效至數(shù)據(jù)有效的時(shí)間域,;Tsu(Data_NE)為STM32特征參數(shù),從數(shù)據(jù)有效到FSMC_NE(片選)失效時(shí)間域,;Ttv(A_NE)為STM32特征參數(shù),,從FSMC_NE有效至地址有效的時(shí)間域。

TAVQV=130 ns,,Tsu(Data_NE)+Ttv(A_NE)=36 ns,,對(duì)DATAST參數(shù)進(jìn)行校正,可得DATAST=3,。

3.4應(yīng)用STM32固件對(duì)FSMC進(jìn)行初始化配置

ST公司為用戶開發(fā)提供了完整,、高效的工具和固件庫,其中使用C語言編寫的固件庫提供了覆蓋所有標(biāo)準(zhǔn)外設(shè)的函數(shù),,使用戶無需使用匯編操作外設(shè)特性,,從而提高了程序的可讀性和易維護(hù)性。

STM32固件庫中提供的FSMC的NOR Flash控制器操作固件,,主要包括2個(gè)數(shù)據(jù)結(jié)構(gòu)和3個(gè)函數(shù),。數(shù)據(jù)結(jié)構(gòu)FSMC_NORSRAMTimingInitTypeDef對(duì)應(yīng)時(shí)間參數(shù)寄存器FSMC_BTR和FSMC_BWTR的結(jié)構(gòu)定義;FSMC_NORSRAMInitTypeDef對(duì)應(yīng)特征配置寄存器FSMC_BCR的結(jié)構(gòu)定義,,并包含2個(gè)指向?qū)?yīng)BANK的FSMC_BTR和FSMC_BWTR寄存器的FSMC_NORSRAMTimingInitTypeDef結(jié)構(gòu)指針,。

針對(duì)上述S29GL512P芯片擴(kuò)展要求,,利用固件庫進(jìn)行的主要初始化操作如下:

 

結(jié)語

STM32作為新一代ARM Cortex-M3核處理器,其卓越的性能和功耗控制能夠適用于廣泛的應(yīng)用領(lǐng)域,;而其特殊的可變靜態(tài)存儲(chǔ)技術(shù)FSMC具有高度的靈活性,,對(duì)于存儲(chǔ)容量要求較高的嵌入式系統(tǒng)設(shè)計(jì),能夠在不增加外部分立器件的情況下,,擴(kuò)展多種不同類型和容量的存儲(chǔ)芯片,,降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性,提高了系統(tǒng)的可靠性,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。