1、FSMC引 言 STM32 是 ST(意 法 半 导 体 )公 司 推 出 的 基 于 ARM 内 核 Cortex M3 的 32 位微 控 制 器 系 列 。 Cortex M3 内 核 是 为 低 功 耗 和 价 格 敏 感 的 应 用 而 专 门 设 计 的 ,具 有 突 出 的 能 效 比 和 处 理 速 度 。 通 过 采 用 Thumb 2 高 密 度 指 令 集 ,Cortex M3 内 核 降 低 了 系 统 存 储 要 求 , 同 时 快 速 的 中 断 处 理 能 够 满 足 控 制 领域 的 高 实 时 性 要 求 , 使 基 于 该 内 核 设 计 的 STM32 系
2、 列 微 控 制 器 能 够 以 更 优 越的 性 价 比 , 面 向 更 广 泛 的 应 用 领 域 。 STM32 系 列 微 控 制 器 为 用 户 提 供 了 丰 富 的 选 择 , 可 适 用 于 工 业 控 制 、 智能 家 电 、 建 筑 安 防 、 医 疗 设 备 以 及 消 费 类 电 子 产 品 等 多 方 位 嵌 入 式 系 统 设 计 。STM32 系 列 采 用 一 种 新 型 的 存 储 器 扩 展 技 术 FSMC, 在 外 部 存 储 器 扩 展 方面 具 有 独 特 的 优 势 , 可 根 据 系 统 的 应 用 需 要 , 方 便 地 进 行 不 同 类 型
3、 大 容 量 静态 存 储 器 的 扩 展 。 1 FSMC 机 制 FSMC(Flexible Static Memory Controller, 可 变 静 态 存 储 控 制 器 )是STM32 系 列 中 内 部 集 成 256 KB 以 上 FlaSh, 后 缀 为 xC、 xD 和 xE 的 高 存 储 密度 微 控 制 器 特 有 的 存 储 控 制 机 制 。 之 所 以 称 为 “可 变 ”, 是 由 于 通 过 对 特 殊功 能 寄 存 器 的 设 置 , FSMC 能 够 根 据 不 同 的 外 部 存 储 器 类 型 , 发 出 相 应 的 数 据/地 址 /控 制 信
4、 号 类 型 以 匹 配 信 号 的 速 度 , 从 而 使 得 STM32 系 列 微 控 制 器 不 仅能 够 应 用 各 种 不 同 类 型 、 不 同 速 度 的 外 部 静 态 存 储 器 , 而 且 能 够 在 不 增 加 外部 器 件 的 情 况 下 同 时 扩 展 多 种 不 同 类 型 的 静 态 存 储 器 , 满 足 系 统 设 计 对 存 储容 量 、 产 品 体 积 以 及 成 本 的 综 合 要 求 。 1 1 FSMC 技 术 优 势 支 持 多 种 静 态 存 储 器 类 型 。 STM32 通 过 FSMC 可 以 与SRAM、 ROM、 PSRAM、 NOR
5、 Flash 和 NANDFlash 存 储 器 的 引 脚 直 接 相 连 。 支 持 丰 富 的 存 储 操 作 方 法 。 FSMC 不 仅 支 持 多 种 数 据 宽 度 的 异 步 读 /写操 作 , 而 且 支 持 对 NOR/PSRAM/NAND 存 储 器 的 同 步 突 发 访 问 方 式 。 支 持 同 时 扩 展 多 种 存 储 器 。 FSMC 的 映 射 地 址 空 间 中 , 不 同 的 BANK 是独 立 的 , 可 用 于 扩 展 不 同 类 型 的 存 储 器 。 当 系 统 中 扩 展 和 使 用 多 个 外 部 存 储器 时 , FSMC 会 通 过 总
6、线 悬 空 延 迟 时 间 参 数 的 设 置 , 防 止 各 存 储 器 对 总 线 的 访问 冲 突 。 支 持 更 为 广 泛 的 存 储 器 型 号 。 通 过 对 FSMC 的 时 间 参 数 设 置 , 扩 大 了系 统 中 可 用 存 储 器 的 速 度 范 围 , 为 用 户 提 供 了 灵 活 的 存 储 芯 片 选 择 空 间 。 支 持 代 码 从 FSMC 扩 展 的 外 部 存 储 器 中 直 接 运 行 , 而 不 需 要 首 先 调 入 内部 SRAM。 1 2 FSMC 内 部 结 构 STM32 微 控 制 器 之 所 以 能 够 支 持 NOR Flash
7、和 NAND Flash 这 两 类 访 问方 式 完 全 不 同 的 存 储 器 扩 展 , 是 因 为 FSMC 内 部 实 际 包 括 NOR Flash 和NAND/PC Card 两 个 控 制 器 , 分 别 支 持 两 种 截 然 不 同 的 存 储 器 访 问 方 式 。 在STM32 内 部 , FSMC 的 一 端 通 过 内 部 高 速 总 线 AHB 连 接 到 内 核 Cortex M3,另 一 端 则 是 面 向 扩 展 存 储 器 的 外 部 总 线 。 内 核 对 外 部 存 储 器 的 访 问 信 号 发 送到 AHB 总 线 后 , 经 过 FSMC 转 换
8、 为 符 合 外 部 存 储 器 通 信 规 约 的 信 号 , 送 到 外部 存 储 器 的 相 应 引 脚 , 实 现 内 核 与 外 部 存 储 器 之 间 的 数 据 交 互 。 FSMC 起 到桥 梁 作 用 , 既 能 够 进 行 信 号 类 型 的 转 换 , 又 能 够 进 行 信 号 宽 度 和 时 序 的 调 整 ,屏 蔽 掉 不 同 存 储 类 型 的 差 异 , 使 之 对 内 核 而 言 没 有 区 别 。 1 3 FSMC 映 射 地 址 空 间 FSMC 管 理 1 GB 的 映 射 地 址 空 间 。 该 空 间 划 分 为 4 个 大 小 为 256 MB 的
9、BANK, 每 个 BANK 又 划 分 为 4 个 64 MB 的 子 BANK, 如 表 1 所 列 。 FSMC 的 2个 控 制 器 管 理 的 映 射 地 址 空 间 不 同 。 NOR Flash 控 制 器 管 理 第 1 个BANK, NAND/PC Card 控 制 器 管 理 第 2 4 个 BANK。 由 于 两 个 控 制 器 管 理 的 存储 器 类 型 不 同 , 扩 展 时 应 根 据 选 用 的 存 储 设 备 类 型 确 定 其 映 射 位 置 。 其 中 ,BANK1 的 4 个 子 BANK 拥 有 独 立 的 片 选 线 和 控 制 寄 存 器 , 可
10、分 别 扩 展 一 个 独 立的 存 储 设 备 , 而 BANK2 BANK4 只 有 一 组 控 制 寄 存 器 。 2 FSMC 扩 展 NOR Flash 配 置 SRAM/ROM、 NOR Flash 和 PSRAM 类 型 的 外 部 存 储 器 都 是 由 FSMC 的 NOR Flash 控 制 器 管 理 的 , 扩 展 方 法 基 本 相 同 , 其 中 NOR Flash 最 为 复 杂 。 通 过FSMC 扩 展 外 部 存 储 器 时 , 除 了 传 统 存 储 器 扩 展 所 需 要 的 硬 件 电 路 外 , 还 需 要进 行 FSMC 初 始 化 配 置 。 F
11、SMC 提 供 大 量 、 细 致 的 可 编 程 参 数 , 以 便 能 够 灵 活地 进 行 各 种 不 同 类 型 、 不 同 速 度 的 存 储 器 扩 展 。 外 部 存 储 器 能 否 正 常 工 作 的关 键 在 于 : 用 户 能 否 根 据 选 用 的 存 储 器 型 号 , 对 配 置 寄 存 器 进 行 合 理 的 初 始化 配 置 。 (1)确 定 映 射 地 址 空 间 根 据 选 用 的 存 储 器 类 型 确 定 扩 展 使 用 的 映 射 地 址 空 间 。 NOR Flash 只 能选 用 BANK1 中 的 4 个 子 BANK。 选 定 映 射 子 BAN
12、K 后 , 即 可 确 定 以 下 2 方 面 内容 : 硬 件 电 路 中 用 于 选 中 该 存 储 器 的 片 选 线 FSMC_NEi(i 为 子 BANK 号 ,i=1, , 4); FSMC 配 置 中 用 于 配 置 该 外 部 存 储 器 的 特 殊 功 能 寄 存 器 号 (如 表 1 所 列 )。(2)配 置 存 储 器 基 本 特 征 通 过 对 FSMC 特 殊 功 能 寄 存 器 FSMC_BCRi(i 为 子 BANK 号 , i=1, , 4)中 对 应 控 制 位 的 设 置 , FSMC 根 据 不 同 存 储 器 特 征 可 灵 活 地 进 行 工 作 方
13、式 和 信号 的 调 整 。 根 据 选 用 的 存 储 器 芯 片 确 定 需 要 配 置 的 存 储 器 特 征 , 主 要 包 括 以下 方 面 : 存 储 器 类 型 (MTYPE)是 SRAM/ROM、 PSRAM, 还 是 NOR FlaSh; 存 储 芯 片 的 地 址 和 数 据 引 脚 是 否 复 用 (MUXEN), FSMC 可 以 直 接 与AD0 AD15 复 用 的 存 储 器 相 连 , 不 需 要 增 加 外 部 器 件 ; 存 储 芯 片 的 数 据 线 宽 度 (MWID), FSMC 支 持 8 位 /16 位 两 种 外 部 数 据 总线 宽 度 ; 对
14、 于 NOR Flash(PSRAM), 是 否 采 用 同 步 突 发 访 问 方 式 (B URSTEN); 对 于 NOR Flash(PSRAM), NWAIT 信 号 的 特 性 说 明(WAITEN、 WAITCFG、 WAITPOL); 对 于 该 存 储 芯 片 的 读 /写 操 作 , 是 否 采 用 相 同 的 时 序 参 数 来 确 定 时 序 关系 (EXTMOD)。 (3)配 置 存 储 器 时 序 参 数 FSMC 通 过 使 用 可 编 程 的 存 储 器 时 序 参 数 寄 存 器 , 拓 宽 了 可 选 用 的 外 部 存储 器 的 速 度 范 围 。 FSM
15、C 的 NORFlash 控 制 器 支 持 同 步 和 异 步 突 发 两 种 访 问 方式 。 选 用 同 步 突 发 访 问 方 式 时 , FSMC 将 HCLK(系 统 时 钟 )分 频 后 , 发 送 给 外部 存 储 器 作 为 同 步 时 钟 信 号 FSMC_CLK。 此 时 需 要 的 设 置 的 时 间 参 数 有 2 个 : HCLK 与 FSMC_CLK 的 分 频 系 数 (CLKDIV), 可 以 为 2 16 分 频 ; 同 步 突 发 访 问 中 获 得 第 1 个 数 据 所 需 要 的 等 待 延 迟 (DATLAT)。 对 于 异 步 突 发 访 问 方
16、 式 , FSMC 主 要 设 置 3 个 时 间 参 数 : 地 址 建 立 时 间(ADDSET)、 数 据 建 立 时 间 (DATAST)和 地 址 保 持 时 间 (ADDHLD)。 FSMC 综 合 了SRAM/ROM、 PSRAM 和 NOR Flash 产 品 的 信 号 特 点 , 定 义 了 4 种 不 同 的 异 步 时序 模 型 。 选 用 不 同 的 时 序 模 型 时 , 需 要 设 置 不 同 的 时 序 参 数 , 如 表 2 所 列 。在 实 际 扩 展 时 , 根 据 选 用 存 储 器 的 特 征 确 定 时 序 模 型 , 从 而 确 定 各 时 间 参
17、 数与 存 储 器 读 /写 周 期 参 数 指 标 之 间 的 计 算 关 系 ; 利 用 该 计 算 关 系 和 存 储 芯 片 数据 手 册 中 给 定 的 参 数 指 标 , 可 计 算 出 FSMC 所 需 要 的 各 时 间 参 数 , 从 而 对 时间 参 数 寄 存 器 进 行 合 理 的 配 置 。 3 STM2 扩 展 S29GL 系 列 NOR Flash 实 例 3 1 S29GL 系 列 NOR Flash 简 介 Spansion 公 司 的 S29GL 系 列 芯 片 是 采 用 90nm 技 术 制 造 的 高 集 成 度 NOR Flash 存 储 芯 片 ,
18、 提 供 16 128 MB 可 选 容 量 , 支 持 最 快 25 ns 的 页 访 问 速度 和 11O ns 的 随 机 访 问 速 度 , 带 有 最 大 64 字 节 的 写 缓 冲 区 , 以 提 供 更 快 、更 高 效 的 编 程 , 是 嵌 入 式 系 统 设 计 中 大 容 量 存 储 器 扩 展 的 理 想 选 择 。 本 文 选用 的 型 号 为 S29GL512P, 容 量 为 51264K 字 (总 容 量 64 MB), 扩 展 到 NOR Flash 控 制 器 管 理 的 BANK1 的 第 2 个 子 BANK。 3 2 STM32 与 S29GL512P
19、 的 电 路 连 接 S25GL512P 可 通 过 控 制 引 脚 BYTE 选 择 对 芯 片 的 访 问 单 位 (字 /字 节 ), 区别 在 于 : 对 于 芯 片 引 脚 DQ15, 字 模 式 时 传 送 最 高 数 据 位 D15; 字 节 模 式 时 传 送最 低 地 址 A-1。 字 模 式 时 , 数 据 引 脚 D0 D15 上 传 送 数 据 信 号 ; 字 节 模 式 时 , 只 有D0 D7 上 有 信 号 。 此 处 , 将 BYTE 上 拉 到 高 电 平 , 选 择 16 位 的 字 访 问 单 位 。 FSMC 数 据 线FSMC_D15: 0与 S29G
20、L512P 的 D15 D0 对 应 连 接 ; FSMC 地 址 线FSMC_A25: 0的 低 25 根 与 S29GL512P 的 地 址 线 A24: 0对 应 连 接 。 由 于 S29GL512P 芯 片 映 射 到 BANK1 的 子 BANK2, 可 确 定 其 片 选 线 应 连 接FSMC 片 选 控 制 线 FSMC_NE2。 S29GL512P 的 RY/BY 引 脚 连 接 FSMC 的FSMC_NWAIT 引 脚 , 提 供 等 待 信 号 。 3 3 FSMC 的 配 置 根 据 S29GL512P 的 映 射 位 置 , 需 要 对 FSMC_BCR2 和 FS
21、MC_BTR2/BWTR2 寄存 器 进 行 配 置 。 (1)FSMC_BCR2 配 置 S29GL512P 的 读 /写 采 用 统 一 时 间 参 数 , 只 需 要 设 置 时 间 寄 存 器FSMC_BTR2。 配 置 存 储 器 类 型 为 NORFlash, 数 据 总 线 宽 度 为 16 位 (字 ), 不采 用 地 址 /数 据 复 用 , 使 能 BANK1 的 子 BANK2。 (2)FSMC_BTR2 由 表 2 可 知 , 异 步 NOR Flash 时 序 模 型 Mode2/B 需 要 设 置 时 间 参 数DATAST 和 ADDSET。 根 据 时 序 图
22、, 两 个 参 数 的 计 算 公 式 如 下 : 式 中 : Twc 和 Trc 为 所 选 存 储 芯 片 的 写 周 期 长 度 和 读 操 作 周 期 长 度 ;Twp 为 所 选 存 储 芯 片 的 写 信 号 持 续 长 度 。 根 据 S29GL512P 用 户 手 册 , 可 知 参数 Twc=Trc=130 ns, Twp=35 ns。 设 STM32 微 控 制 器 采 用 72 MHz 主 频 , 则HCLK=(1/7210-6)s。 通 过 上 述 公 式 计 算 , 可 取 值 为 :DATAST=2, ADDSET=5。 为 了 达 到 更 好 的 控 制 效 果
23、, 还 应 考 虑 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 参 数 进 行校 正 ,
24、可 得 DATAST=3。 3 4 应 用 STM32 固 件 对 FSMC 进 行 初 始 化 配 置 ST 公 司 为 用 户 开 发 提 供 了 完 整 、 高 效 的 工 具 和 固 件 库 , 其 中 使 用 C 语言 编 写 的 固 件 库 提 供 了 覆 盖 所 有 标 准 外 设 的 函 数 , 使 用 户 无 需 使 用 汇 编 操 作外 设 特 性 , 从 而 提 高 了 程 序 的 可 读 性 和 易 维 护 性 。 STM32 固 件 库 中 提 供 的 FSMC 的 NOR Flash 控 制 器 操 作 固 件 , 主 要 包 括2 个 数 据 结 构 和 3 个
25、函 数 。 数 据 结 构 FSMC_NORSRAMTimingInitTypeDef 对 应 时 间 参 数 寄 存 器FSMC_BTR 和 FSMC_BWTR 的 结 构 定 义 ; FSMC_NORSRAMinitTypeDef 对 应 特 征 配 置 寄 存 器 FSMC_BCR 的 结 构 定 义 ,并 包 含 2 个 指 向 对 应 BANK 的 FSMC_BTR 和 FSMC_BWTR 寄 存 器 的FSMC_NORSRAMTimingInitTypeDef 结 构 指 针 。 针 对 上 述 S29GL512P 芯 片 扩 展要 求 , 利 用 固 件 库 进 行 的 主 要
26、初 始 化 操 作 如 下 : 结 语 STM32 作 为 新 一 代 ARM Cortex-M3 核 处 理 器 , 其 卓 越 的 性 能 和 功 耗 控 制能 够 适 用 于 广 泛 的 应 用 领 域 ; 而 其 特 殊 的 可 变 静 态 存 储 技 术 FSMC 具 有 高 度的 灵 活 性 , 对 于 存 储 容 量 要 求 较 高 的 嵌 入 式 系 统 设 计 , 能 够 在 不 增 加 外 部 分立 器 件 的 情 况 下 , 扩 展 多 种 不 同 类 型 和 容 量 的 存 储 芯 片 , 降 低 了 系 统 设 计 的复 杂 性 , 提 高 了 系 统 的 可 靠 性 。