STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?

发布者:CrystalClear最新更新时间:2024-06-07 来源: elecfans关键字:STM32系列  微控制器  FSMC 手机看文章 扫描二维码
随时随地手机看文章

引言

STM32是ST(意法半导体)公司推出的基于ARM内核Cortex-M3的32位微控制器系列。Cortex-M3内核是为低功耗和价格敏感的应用而专门设计的,具有突出的能效比和处理速度。通过采用Thumb-2高密度指令集,Cortex-M3内核降低了系统存储要求,同时快速的中断处理能够满足控制领域的高实时性要求,使基于该内核设计的STM32系列微控制器能够以更优越的性价比,面向更广泛的应用领域。


STM32系列微控制器为用户提供了丰富的选择,可适用于工业控制、智能家电、建筑安防、医疗设备以及消费类电子产品等多方位嵌入式系统设计。STM32系列采用一种新型的存储器扩展技术——FSMC,在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。


1FSMC机制

FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上Flash,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。

1.1FSMC技术优势

①支持多种静态存储器类型。STM32通过FSMC可以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。

②支持丰富的存储操作方法。FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR/PSRAM/NAND存储器的同步突发访问方式。

③支持同时扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。

④支持更为广泛的存储器型号。通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵活的存储芯片选择空间。

⑤支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。

1.2FSMC内部结构

STM32微控制器之所以能够支持NOR Flash和NAND Flash这两类访问方式完全不同的存储器扩展,是因为FSMC内部实际包括NOR Flash和NAND/PC Card两个控制器,分别支持两种截然不同的存储器访问方式。在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。FSMC起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。

1.3FSMC映射地址空间

FSMC管理1 GB的映射地址空间。该空间划分为4个大小为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK,如表1所列。FSMC的2个控制器管理的映射地址空间不同。NOR Flash控制器管理第1个BANK,NAND/PC Card控制器管理第2~4个BANK。由于两个控制器管理的存储器类型不同,扩展时应根据选用的存储设备类型确定其映射位置。

STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?

其中,BANK1的4个子BANK拥有独立的片选线和控制寄存器,可分别扩展一个独立的存储设备,而BANK2~BANK4只有一组控制寄存器。

2FSMC扩展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),是否采用同步突发访问方式(BURSTEN);

⑤对于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)。

对于异步突发访问方式,FSMC主要设置3个时间参数:地址建立时间(ADDSET)、数据建立时间(DATAST)和地址保持时间(ADDHLD)。FSMC综合了SRAM/ROM、PSRAM和NOR Flash产品的信号特点,定义了4种不同的异步时序模型。选用不同的时序模型时,需要设置不同的时序参数,如表2所列。在实际扩展时,根据选用存储器的特征确定时序模型,从而确定各时间参数与存储器读/写周期参数指标之间的计算关系;利用该计算关系和存储芯片数据手册中给定的参数指标,可计算出FSMC所需要的各时间参数,从而对时间参数寄存器进行合理的配置。

STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?

3STM32扩展S29GL系列NOR Flash实例

3.1S29GL系列NOR Flash简介

Spansion公司的S29GL系列芯片是采用90 nm技术制造的高集成度NOR Flash存储芯片,提供16~128 MB可选容量,支持最快25 ns的页访问速度和110 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。配置存储器类型为NOR Flash,数据总线宽度为16位(字),不采用地址/数据复用,使能BANK1的子BANK2。

(2)FSMC_BTR2

由表2可知,异步NOR Flash时序模型Mode2/B需要设置时问参数DATAST和ADDSET。根据时序图,两个参数的计算公式如下:

式中:Twc和Trc为所选存储芯片的写周期长度和读操作周期长度;Twp为所选存储芯片的写信号持续长度。

根据S29GL512P用户手册,可知参数Twc=Trc=130 ns,Twp=35 ns。设STM32微控制器采用72 MHz主频,则HCLK=(1/72×10-6)s。通过上述公式计算,可取值为:DATAST=2,ADDSET=5。

为了达到更好的控制效果,还应考虑FSMC自身延迟问题,使用校正公式:

式中:TAVQV为所选存储芯片访问过程中,从地址有效至数据有效的时间域;Tsu(Data_NE)为STM32特征参数,从数据有效到FSMC_NE(片选)失效时间域;Ttv(A_NE)为STM32特征参数,从FSMC_NE有效至地址有效的时间域。

TAVQV=130 ns,Tsu(Data_NE)+Ttv(A_NE)=36 ns,对DATAST参数进行校正,可得DATAST=3。

3.4应用STM32固件对FSMC进行初始化配置

ST公司为用户开发提供了完整、高效的工具和固件库,其中使用C语言编写的固件库提供了覆盖所有标准外设的函数,使用户无需使用汇编操作外设特性,从而提高了程序的可读性和易维护性。

STM32固件库中提供的FSMC的NOR Flash控制器操作固件,主要包括2个数据结构和3个函数。数据结构FSMC_NORSRAMTimingInitTypeDef对应时间参数寄存器FSMC_BTR和FSMC_BWTR的结构定义;FSMC_NORSRAMInitTypeDef对应特征配置寄存器FSMC_BCR的结构定义,并包含2个指向对应BANK的FSMC_BTR和FSMC_BWTR寄存器的FSMC_NORSRAMTimingInitTypeDef结构指针。

针对上述S29GL512P芯片扩展要求,利用固件库进行的主要初始化操作如下:

STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?

结语

STM32作为新一代ARM Cortex-M3核处理器,其卓越的性能和功耗控制能够适用于广泛的应用领域;而其特殊的可变静态存储技术FSMC具有高度的灵活性,对于存储容量要求较高的嵌入式系统设计,能够在不增加外部分立器件的情况下,扩展多种不同类型和容量的存储芯片,降低了系统设计的复杂性,提高了系统的可靠性。


关键字:STM32系列  微控制器  FSMC 引用地址:STM32系列微控制器新型存储器扩展技术--FSMC有什么优点?

上一篇:STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处
下一篇:STM32F407V芯片断电的时候FLASH被异常改写的解决方案

推荐阅读最新更新时间:2026-03-20 11:38

MCS96系列单片机的数据存储器扩展技术解析方案
MCS96系列 单片机 是一种16位字长,比MCS51系列单片机功能更全、性能更高的单片机,在仪器仪表、过程控制等领域应用极为广泛。在采用MCS96系列单片机的应用开发中,我们碰到一个难题:当需要大容量的数据存储时,数据 存储器 的扩展如采用与MCS51系列单片机同样的方法则无法工作。因为其内存体系结构采用程序存储器与数据存储器统一编址的普林斯顿结构,程序存储器的地址与数据存储器的地址不能相同;而MCS51系列单片机采用程序存储器与数据存储器分开编址的哈佛结构,程序存储器的地址与数据存储器的地址不冲突,可以相同,因而其数据存储器扩展容易,而且整个数据存储器地址空间连续。MCS96系列单片机的普林斯顿内存体系结构决定了不能简单采
[单片机]
MCS96<font color='red'>系列</font><font color='red'>单片机</font>的数据<font color='red'>存储器</font><font color='red'>扩展</font><font color='red'>技术</font>解析方案
“看门狗“VS“打狗棒”,谁胜谁负?(STM32篇)—MCU抗干扰实验系列专题(3)
在上两期文章和视频中,为了公平起见,所有的MCU使用的是同一个工程程序,(不同的MCU,时钟和GPIO的配置略有不同,使用宏定义区分MCU),除了使用滴答时钟和基本GPIO操作外,没有任何抗干扰手段,全靠MCU内部自身的抗干扰能力进行的测试。结果,只有芯源CW32MCU没有彻底死机外,其它均有死机现象。 这种死机现象,在我们实际开发产品时,是禁止发生的。为了对付这种干扰,除了硬件上有些技术对策,那软件上又有些什么呢? 当然是我们最熟悉的看门狗了。“看门狗”这个神器在“古老的年代”51时期,那是没有的,需要在外面加一个“昂贵”的芯片来实现。当然,现在新时代,所有的ARM MCU基本上都标配了看门狗外设。 看门狗是啥,我们来看一下
[单片机]
“看门狗“VS“打狗棒”,谁胜谁负?(<font color='red'>STM32</font>篇)—<font color='red'>MCU</font>抗干扰实验<font color='red'>系列</font>专题(3)
基于STM32系列MCU使用软件模拟I2C步骤
一、Bit Bang 关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。 这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I2C 模块时布线非常麻烦。坏处是需要写代码模拟时序,根据不同的硬件平台和不同的时钟频率,代码中的部分参数是不一样的。 二、代码分析 以下代码基于 STM32 系列 MCU 使用软件模拟 I2C 的步骤如下: 1、设置 GPI
[单片机]
基于<font color='red'>STM32</font><font color='red'>系列</font><font color='red'>MCU</font>使用软件模拟I2C步骤
STM32单片机FSMC的使用解析
在做项目的过程中遇到了这个问题,感觉文章写得不错,共享给对FSMC的使用怀有疑惑的同伴们! LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Register Select寄存器选择 WR:Write写信号,低电平有效 RD:Read读信号,低电平有效 RESET:重启信号,低电平有效 DB0-DB15:数据线 假如这些线,全部用普通IO口控制。根据LCD控制芯片手册(大部分控制芯片时序差不多): 如果情况如下: DB0-DB15的IO全部为1(表示数据0xff),也可以为其他任意值,这里以0xff为例。 CS为0(表示选上芯片,CS拉低时,芯片对传入的数据才会有效) RS为1(表示DB0-15上传
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font><font color='red'>FSMC</font>的使用解析
STM32系列单片机在破解的过程中常见的几个问题
STM32系列单片机都有全球唯一的ID号,很多设计开发者,在开发的过程中,会嵌入ID绑定验证代码,也就是所说的软加密。 STM32系列 逆向分析 STM32系列单片机在破解的过程中常见的几个问题。 1 通常我们在破解STM32过程中,如果原开发者没有嵌入软加密,那我们只需对芯片进行开片,去除加密锁,然后通过编程器直接读取,读取的BIN文件或HEX文件,完全可以正常使用。 2 在去除加密锁后,提取的程序代码无法工作,存在软加密,很多软加密是通过烧录器选项来绑定ID的,这样的软加密比较简单,通常很快就能搞定。 3 程序内部复杂的软加密,这样的情况也是很常见的,解密完后,检查没有发现ID绑定想象,但烧录新的单片机是无法工
[单片机]
stm32系列MCU芯片选型表
本文为stm32系列32位微控制器选型表,包括STM32F0系列、STM32L1系列、STM32F1系列、STM32F2系列、STM32F3系列、STM32F4系列选型,STM32系列36脚、48脚、64脚、100脚、144脚选型。 TM32系列36脚、48脚、64脚、100脚、144脚选型: STM32系列按内核架构分类产品选型: STM32F0 系列 STM32L1 系列 STM32F1 系列 STM32F2 系列 STM32F3 系列 STM32F4 系列
[单片机]
<font color='red'>stm32</font><font color='red'>系列</font><font color='red'>MCU</font>芯片选型表
基于STM32单片机FSMC协议分析
1. FSMC协议分析 如下为ILI9325的8080接口的协议 从图中可以看出8080接口的协议大概流程是:先发出片选信号,然后发出命令使能或者数据使能信号,待数据建立完成后,在读写信号的上升沿写入数据或者读出数据。 CS(片选信号):低电平片选有效,高电平失能(默认为高:失能) RS(数据/命令):低电平写命令,高电平写数据(默认为高:写数据)FSMC默认为低。。。。 RD(读信号) :低电平有效,上升沿写入数据,高电平失能(默认为高,失能) WR(写信号) :低电平有效,上升沿写入数据,高电平失能(默认为高,失能) FSMC写SRAM模式如下: FSMC对于类RAM存储器的读操作过程一般是:先发出片选信号、读写信号和
[单片机]
基于<font color='red'>STM32</font><font color='red'>单片机</font><font color='red'>FSMC</font>协议分析
KEIL(MDK)同时兼容STM32和51系列单片机的方法
keil4 方法一: 首先安装KEIL4,然后安装KEIL3到MDK相同目录,安装过的就跳过。然后以管理员身份打开KEIL4,用KEIL4的注册机,注册ARM和C51。 破解结果 方法二: 下面这个方法可以让keilMDK兼容51的工程,只要一个keil就都能编译51和stm32的工程了: 1、安装keilC51,并破解,安装目录 T:keilC51 2、安装keilMDK,并破解,安装目录 T:keilMDK 3、把T:keilC51 里面的 C51 文件夹复制到 T:keilMDK 里 4、把 T:keilC51 里面的 UV4 文件夹复制到 T:keilMDK 里,提示有同名文件都不要
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved