STM32F407详解FSMC模块控制块功能与信号分析

目录

概述

1. 认识FSMC功能框图

2 AHB 接口

2.1 AHB 接口功能

2.2 AHB 接口的Fault

2.3 通用事务规则

3 外部器件地址映射

3.1 区域划分

3.2 FSMC存储区域框图

​编辑 3.2.1  NOR/PSRAM 地址映射

3.2.2 NAND/PC 卡地址映射

4 外部存储器接口信号

4.1 NOR Flash接口信号

4.2 PSRAM/SRAM接口信号

 4.3 通用时序规则

4.4 NOR Flash/PSRAM 控制器异步事务


概述

本文主要详细分析了FSMC的框架结构,介绍该模块的的内部组成,外部信号地址映射关系,以及存储信号的特点和规则。

1. 认识FSMC功能框图

按照构成结构分类,STM32 FSMC的功能模块可以分为四个部分。

Items 模块介绍
1 AHB 接口(包括 FSMC 配置寄存器)
2 NOR Flash/PSRAM 控制器
3 NAND Flash/PC 卡控制器
4 外部器件接口

其控制部分有分成两个类型:

1)NOR Flash/PSRAM 控制器

2)NAND Flash/PC 卡控制器

注意点:

1)共享信号接口被NOR Flash/PSRAM 控制器和NAND Flash/PC 卡控制器共同使用

2)NAND信号和PC智能卡信号也是不同的

3)配置寄存器为两者共用

框图结构如下:

2 AHB 接口

2.1 AHB 接口功能

CPU 和其它 AHB 总线主设备可通过该 AHB 从设备接口访问外部静态存储器。AHB 事务会转换为外部器件协议。尤其是当所选外部存储器的宽度为 16 位或 8 位时, AHB中的 32 位宽事务将被划分成多个连续的 16 或 8 位访问。片选将在每次访问时进行切换。

2.2 AHB 接口的Fault

出现以下条件时, FSMC 将产生 AHB 错误

● 读取或写入未使能的 FSMC 存储区域
● 在 FSMC_BCRx 寄存器中的 FACCEN 位复位时读取或写入 NOR Flash 存储区域
● 在输入引脚 FSMC_CD( Card Presence Detection)为低电平时读取或写入 PC 卡存储区域

 STM32如何处理这些Fault呢?

AHB 错误的影响具体取决于尝试进行读写访问的 AHB 主设备:

● 如果为 Cortex™-M4F CPU,则会生成硬性故障 (hard fault) 中断
● 如果为 DMA,则会生成 DMA 传输错误,并会自动禁用相应的 DMA 通道AHB 时钟(HCLK) 是 FSMC 的参考时钟。

2.3 通用事务规则

所请求的 AHB 事务传输大小可以是 8、 16 或 32 位,但访问的外部器件具有固定的数据宽度。这可能会导致不一致的数据宽度。因此,必须遵循一些简单的事务规则

情况-1:AHB 事务数据宽度和存储器数据宽度相等

● AHB 事务数据宽度和存储器数据宽度相等在此情况下没有任何问题

情况-2:AHB 事务数据宽度大于存储器宽度

在此情况下, FSMC 会将 AHB 事务分为多个较小的连续存储器访问,以便符合外部数据宽度。

 情况-3:AHB 事务数据宽度小于存储器宽度

异步传送可能一致,也可能不一致,具体取决于外部器件的类型。

1)对具有字节选择功能的器件( SRAM、 ROM、 PSRAM)进行异步访问。
a) FSMC 允许写入事务通过其字节选择通道 NBL[1:0] 访问恰当的数据
b) 允许读取事务。会读取所有存储器字节,并将丢弃无用的存储器字节。 NBL[1:0]在读取事务期间保持为低电平。

2)对不具有字节选择功能的器件( 16 位 NOR 和 NAND Flash)进行异步访问。

当请求对 16 位宽的 Flash 存储器进行字节访问时会发生此情形。显然,不能在字节模式下访问此器件(只能针对 Flash 存储器读取或写入 16 位字),因此:
a) 不允许写入事务
b) 允许读取事务。会读取所有存储器字节,并将丢弃无用的存储器字节。 NBL[1:0]在读取事务期间保持低电平。

3 外部器件地址映射

3.1 区域划分

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

Items 模块介绍
1 存储区域 1 可连接多达 4 个 NOR Flash 或 PSRAM 存储器器件。此存储区域被划分为 4 个NOR/PSRAM 区域,带 4 个专用片选信号。
2 存储区域 2 和 3 用于连接 NAND Flash 器件(每个存储区域一个器件)
3 存储区域 4 用于连接 PC 卡设备

3.2 FSMC存储区域框图

 3.2.1  NOR/PSRAM 地址映射

HADDR[27:26] 位用于从下表中所示的四个存储区域之中选择其中一个存储区域。

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

如果外部存储器的宽度为 16 位, FSMC 将使用内部的 HADDR[25:1] 地址来作为对外部存储器的寻址地址FSMC_A[24:00]。
无论外部存储器的宽度为 16 位还是 8 位, FSMC_A[0] 都应连接到外部存储器地址 A[0]。

3.2.2 NAND/PC 卡地址映射

在此情况下,有三个存储区域,每个存储区域分为各个存储空间,如下表所示。

 对于 NAND Flash 存储器,通用区和特性区存储空间分为三个部分,均位于低位 256 KB 中(见下面的表):

● 数据区域(通用/特性存储空间中的第一个 64 KB)
● 命令区域(通用/特性存储空间中的第二个 64 KB)
● 地址区域(通用/特性存储空间中的下一个 128 KB)

应用程序软件使用这 3 个区域来访问 NAND Flash 存储器:

● 向 NAND Flash 存储器发送命令:软件可以向命令区域中的任意存储器位置写入命令值。
● 指定读取或写入的 NAND Flash 地址:软件可以向地址区域中的任意存储位置写入地址
值。由于地址的长度可以是 4 或 5 个字节(具体取决于实际存储器大小),要指定完整
的地址,需要对地址区域执行多个连续写入操作。
● 读取或写入数据:软件将从数据区域中的任意存储器位置读取数据值,或者向其中写入
数据值。

由于 NAND Flash 存储器会自动递增地址,所以在访问连续存储器位置时,无需递增数据区域的地址。

4 外部存储器接口信号

4.1 NOR Flash接口信号

NOR Flash 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。

1)非复用 I/O NOR Flash

2)复用 I/O NOR Flash

4.2 PSRAM/SRAM接口信号

PSRAM 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。

1)非复用 I/O PSRAM/SRAM

2)复用 I/O PSRAM

 4.3 通用时序规则

信号同步
● 所有的控制器输出信号在内部时钟 (HCLK) 的上升沿变化
● 在同步模式(读取或写入)下,输出的数据在 HCLK 的上升沿变化。无论 CLKDIV 值为
何,所有输出均会按以下方式变化:

1)  当出现 FSMC_CLK 时钟的下降沿时, NOEL/NWEL/NEL/NADVL/NADVH/NBLL/ 地址有效输出可发生变化。

2)当出现 FSMC_CLK 时钟的上升沿时, NOEH/NWEH/NEH/NOEH/NBLH/ 地址有效输出可发生变化。

4.4 NOR Flash/PSRAM 控制器异步事务

异步静态存储器( NOR Flash、 PSRAM、 SRAM)

● 信号通过内部时钟 HCLK 进行同步。不会将此时钟发送到存储器

● FSMC 总是会先对数据进行采样,而后再禁止片选信号 NE。这样可以确保符合存储器数据保持时序的要求(数据转换的芯片使能高电平,通常最低为 0 ns。)

● 如果使能扩展模式(FSMC_BCRx 寄存器中的 EXTMOD 位置 1),则最多可提供四种扩展模式( A、 B、 C 和 D)。可以混合使用 A、 B、 C 和 D 模式来进行读取和写入操作。例如,可以在模式 A 下执行读取操作,而在模式 B 下执行写入操作。

● 如果禁用扩展模式(FSMC_BCRx 寄存器中的 EXTMOD 位复位),则 FSMC 可以在模式 1 或模式 2 下运行,如下所述

1)  当选择 SRAM/CRAM 存储器类型时,模式 1 为默认模式( FSMC_BCRx 寄存器中MTYP = 0x0 或 0x01)。

2) 当选择 NOR 存储器类型时,模式 2 为默认模式( FSMC_BCRx 寄存器中 MTYP =
0x10)。

 

作者:mftang

物联沃分享整理
物联沃-IOTWORD物联网 » STM32F407详解FSMC模块控制块功能与信号分析

发表回复