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