STM32之FSMC-SRAM/NOR原理

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32F4 的 FSMC 接口支持包括 SRAM、 NAND FLASH、 NOR FLASH 和 PSRAM 等存储器。

所有的外部存储器共享地址、数据和控制信号,但有各自的片选信号。FSMC一次只能访问一个外部器件。

STM32的FSMC主要功能:(详情看手册)

● 支持对同步器件(NOR Flash 和 PSRAM)的突发模式访问

● 8 或 16 位宽的数据总线

● 每个存储区域有独立的片选控制

● 每个存储区域可独立配置

● 可对时序进行编程,以支持各种器件

FSMC 包含四个主要模块:

● AHB 接口(包括 FSMC 配置寄存器)

● NOR Flash/PSRAM 控制器

● NAND Flash/PC 卡控制器

● 外部器件接口

外部器件地址映射

从FSMC的角度,外部存储器被划分为4个固定大小的存储区域,每个区域的大小为256MB,如下图:

● 存储区域 1 可连接多达 4 个 NOR Flash 或 PSRAM 存储器器件。此存储区域被划分为 4 个

NOR/PSRAM 区域,带 4 个专用片选信号。

● 存储区域 2 和 3 用于连接 NAND Flash 器件(每个存储区域一个器件)

● 存储区域 4 用于连接 PC 卡设备

从上图可知FSMC总共管理1GB空间,拥有4个存储块(Bank),这里我们讨论存储块1(Bank1),Bank1分为4个区,每个区64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址。

这里HADDR是内部AHB地址总线,其中HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址,如下图:

HARRD[25:0]包含外部存储器地址,由于HARRD为字节地址,而存储器按字寻址,所以根据存储器数据的宽度的不同,实际向存储器发送的地址也将有所不同,如下图:

当 Bank1 接的是 16 位宽度存储器的时候:HADDR[25:1]-->FSMC[24:0]。

当 Bank1 接的是  8 位宽度存储器的时候:HADDR[25:0]-->FSMC[25:0]。

不论外部接 8  位/16  位宽设备,FSMC_A[0] 永远接在外部设备地址 A[0] 。
 

STM32的FSMC支持数据与地址线复用或非复用两种模式

非复用模式:16位数据线及26位地址线分开始用。推荐在144脚及以上的STM32产品上使用该模式。

复用模式:低16位数据/地址线复用。在该模式下,推荐使用地址锁存器以区分数据与地址。

若不使用锁存器:当NADV为低时,ADx(x=0…15)上出现地址信号Ax,当NADV变高时,ADx上出现数据信号Dx。
若使用锁存器:可同时在ADx上得到Ax和Dx。

 FSMC 综合了 SRAM/ROM、 PSRAM 和 NOR Flash 产品的信号特点,定义了不同的异步时序模型。选用不同的时序模型时,需要设置不同的时序参数。在实际扩展时,根据选用存储器的特征确定时序模型,从而确定各时间参数与存储器读/写周期参数指标之间的计算关系;利用该计算关系和存储芯片数据手册中给定的参数指标,可计算出 FSMC 所需要的各时间参数,从而对时间参数寄存器进行合理的配置。

模式1 —— SRAM/CRAM

模式A —— SRAM/PSRAM(CRAM)

模式2/B —— NOR闪存

模式C —— NOR闪存

模式D —— 带地址扩展的异步操作

复用模式—— 地址/数据复用的NOR闪存异步操作

对于NOR FLASH/PSRAM控制器-存储块1,可通过FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器设置(其中x=1~4,对应4个区)。 
通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。

1.SRAM/NOR闪存片选控制寄存器(FSMC_BCRx)

EXTMOD:扩展模式使能位,控制是否允许读写不同的时序,需设置为1
WREN:写使能位。我们要向TFTLCD写数据,需设置为1
MWID[1:0]:存储器数据总线宽度。00,表示8位数据模式;01表示16位数据模式;10和11保留。
MTYP[1:0]:存储器类型。00表示SRAM、ROM;01表示PSRAM;10表示NOR FLASH;11保留。
MBKEN:存储块使能位。需设置为1


2.SRAM/NOR闪存片选时序寄存器(FSMC_BTRx)-读时序控制

ACCMOD[1:0]:访问模式。00:模式A;01:模式B;10:模式C;11:模式D。
DATAST[7:0]:数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。
ADDSET[3:0]:地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大为15。


3.SRAM/NOR闪存写时序寄存器(FSMC_BWTRx)-写时序控制

ACCMOD[1:0]:访问模式。00:模式A;01:模式B;10:模式C;11:模式D。
DATAST[7:0]:数据保持时间,等于: DATAST(+1)个HCLK时钟周期,DATAST最大为255。
ADDSET[3:0]:地址建立时间。表示:ADDSET+1个HCLK周期,ADDSET最大值为1111 = 15。
 

猜你喜欢

转载自blog.csdn.net/lushoumin/article/details/87564687