引 言
STM32是ST(意法半导体)公司推出的基于ARM内核Cortex-M3的32位微控制器系列。Cortex-M3内核是为低功耗和价格敏感的应用而专门设计的,具有突出的能效比和处理速度。通过采用Thumb-2高密度指令集,Cortex-M3内核降低了系统存储要求,同时快速的中断处理能够满足控制领域的高实时性要求,使基于该内核设计的STM32系列微控制器能够以更优越的性价比,面向更广泛的应用领域。
STM32系列微控制器为用户提供了丰富的选择,可适用于工业控制、智能家电、建筑安防、医疗设备以及消费类电子产品等多方位嵌入式系统设计。STM32系列采用一种新型的存储器扩展技术——FSMC,在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。
1 FSMC机制
FSMC(Flexihie Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上Flash,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。
1.1 FSMC技术优势
①支持多种静态存储器类型。STM32通过FSMC町以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。
②支持丰富的存储操作方法。FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR/PSRAM/NAND存储器的同步突发访问方式。
③支持同时扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。
④支持更为广泛的存储器型号。通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵活的存储芯片选择空间。
⑤支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。
1.2 FSMC内部结构
STM32微控制器之所以能够支持NOR Flash和NAND Flash这两类访问方式完全不同的存储器扩展,是因为FSMC内部实际包括NOR Flash和NAND/PC Card两个控制器,分别支持两种截然不同的存储器访问方式。在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。FSMC起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。
2 FSMC扩展NOR Flash配置
SRAM/ROM、NOR Flash和PSRAM类型的外部存储器都是由FSMC的NOR Flash控制器管理的,扩展方法基本相同,其中NOR Flash最为复杂。通过FSMC扩展外部存储器时,除了传统存储器扩展所需要的硬件电路外,还需要进行FSMC初始化配置。FSMC提供大量、细致的可编程参数,以便能够灵活地进行各种不同类型、不同速度的存储器扩展。外部存储器能否正常工作的关键在于:用户能否根据选用的存储器型号,对配置寄存器进行合理的初始化配置。
(1)确定映射地址空间
根据选用的存储器类型确定扩展使用的映射地址空间。NOR Flash只能选用BANK1中的4个子BANK。选定映射子BANK后,即可确定以下2方面内容:
①硬件电路中用于选中该存储器的片选线FSMC_NEi(i为子BANK号,i=1,…,4);
②FSMC配置中用于配置该外部存储器的特殊功能寄存器号(如表1所列)。
(2)配置存储器基本特征
通过对FSMC特殊功能寄存器FSMC_BCRi(i为子BANK号,i=1,…,4)中对应控制位的设置,FSMC根据不同存储器特征可灵活地进行工作方式和信号的调整。根据选用的存储器芯片确定需要配置的存储器特征,主要包括以下方面:
①存储器类型(MTYPE)是SRAM/ROM、PSRAM,还是NOR Flash;
②存储芯片的地址和数据引脚是否复用(MUXEN),FSMC可以直接与AD0~AD15复用的存储器相连,不需要增加外部器件;
③存储芯片的数据线宽度(MWID),FSMC支持8位/16位两种外部数据总线宽度;
④对于NOR Flash(PSRAM),是否采用同步突发访问方式(B URSTEN);
⑤对于NOR Flash(PSRAM),NWAIT信号的特性说明(WAITEN、WAITCFG、WAITPOL);
⑥对于该存储芯片的读/写操作,是否采用相同的时序参数来确定时序关系(EXTMOD)。
(3)配置存储器时序参数
FSMC通过使用可编程的存储器时序参数寄存器,拓宽了可选用的外部存储器的速度范围。FSMC的NORFlash控制器支持同步和异步突发两种访问方式。选用同步突发访问方式时,FSMC将HCLK(系统时钟)分频后,发送给外部存储器作为同步时钟信号FSMC_CLK。此时需要的设置的时间参数有2个:
①HCLK与FSMC_CLK的分频系数(CLKDIV),可以为2~16分频;
②同步突发访问中获得第1个数据所需要的等待延迟(DATLAT)。
3 STM2扩展S29GL系列NOR Flash实例
3.1 S29GL系列NOR Flash简介
Spansion公司的S29GL系列芯片是采用90nm技术制造的高集成度NOR Flash存储芯片,提供16~128 MB可选容量,支持最快25 ns的页访问速度和11O ns的随机访问速度,带有最大64字节的写缓冲区,以提供更快、更高效的编程,是嵌入式系统设计中大容量存储器扩展的理想选择。本文选用的型号为S29GL512P,容量为512×64K字(总容量64 MB),扩展到NOR Flash控制器管理的BANK1的第2个子BANK。
3.2 STM32与S29GL512P的电路连接
S25GL512P可通过控制引脚BYTE选择对芯片的访问单位(字/字节),区别在于:
①对于芯片引脚DQ15,字模式时传送最高数据位D15;字节模式时传送最低地址A-1。
②字模式时,数据引脚D0~D15上传送数据信号;字节模式时,只有D0~D7上有信号。
此处,将BYTE上拉到高电平,选择16位的字访问单位。FSMC数据线FSMC_D[15:0]与S29GL512P的D15~D0对应连接;FSMC地址线FSMC_A[25:0]的低25根与S29GL512P的地址线A[24:0]对应连接。
由于S29GL512P芯片映射到BANK1的子BANK2,可确定其片选线应连接FSMC片选控制线FSMC_NE2。S29GL512P的RY/BY引脚连接FSMC的FSMC_NWAIT引脚,提供等待信号。
3.3 FSMC的配置
根据S29GL512P的映射位置,需要对FSMC_BCR2和FSMC_BTR2/BWTR2寄存器进行配置。
(1)FSMC_BCR2
配置S29GL512P的读/写采用统一时间参数,只需要设置时间寄存器FSMC_BTR2。配置存储器类型为NORFlash,数据总线宽度为16位(字),不采用地址/数据复用,使能BANK1的子BANK2。
(2)FSMC_BTR2
由表2可知,异步NOR Flash时序模型Mode2/B需要设置时间参数DATAST和ADDSET。根据时序图,两个参数的计算公式如下:
结 语
STM32作为新一代ARM Cortex-M3核处理器,其卓越的性能和功耗控制能够适用于广泛的应用领域;而其特殊的可变静态存储技术FSMC具有高度的灵活性,对于存储容量要求较高的嵌入式系统设计,能够在不增加外部分立器件的情况下,扩展多种不同类型和容量的存储芯片,降低了系统设计的复杂性,提高了系统的可靠性。
联系客服