00. 目录

文章目录

  • 00. 目录
  • 01. FSMC简介
  • 02. FSMC主要特性
  • 03. FSMC框图
  • 04. 外部器件地址映射
    • 4.1 NOR/PSRAM地址映射
    • 4.2 NOR Flash/PSRAM控制器
  • 05. 寄存器描述
    • 5.1 SRAM/NOR-Flash 片选控制寄存器 1..4 (FSMC_BCR1..4)
    • 5.2 SRAM/NOR-Flash 片选时序寄存器 1..4 (FSMC_BTR1..4)
    • 5.3 SRAM/NOR-Flash 写入时序寄存器 1..4 (FSMC_BWTR1..4)
  • 06. 附录
  • 07. 声明

01. FSMC简介

STM32F407 或 STM32F417 系列芯片都带有 FSMC 接口,ALIENTEK 探索者 STM32F4 开发板的主芯片为 STM32F407ZGT6,是带有 FSMC 接口的。

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

02. FSMC主要特性

FSMC 能够连接同步、异步存储器和 16 位 PC 存储卡。其主要用途如下:
● 将 AHB 数据通信事务转换为适当的外部器件协议
● 满足外部器件的访问时序要求
所有外部存储器共享地址、数据和控制信号,但有各自的片选信号。FSMC 一次只能访问一个外部器件。

FSMC 具有以下主要功能:
● 连接静态存储器映射的器件:
— 静态随机访问存储器 (SRAM)
— 只读存储器 (ROM)
— NOR Flash/OneNAND Flash
— PSRAM(4 个存储区域)
● 两个带有 ECC 硬件的 NAND Flash 存储区域,可检查多达 8 KB 的数据
● 16 位 PC 卡兼容设备
● 支持对同步器件(NOR Flash 和 PSRAM)的突发模式访问
● 8 或 16 位宽的数据总线
● 每个存储区域有独立的片选控制
● 每个存储区域可独立配置
● 可对时序进行编程,以支持各种器件,尤其是:
— 等待周期可编程(最多 15 个时钟周期)
— 总线周转周期可编程(最多 15 个时钟周期)
— 输出使能和写入使能延迟可编程(最多 15 个时钟周期)
— 独立的读和写时序和协议,以支持各种存储器和时序
● 写使能和字节通道选择输出,可配合 PSRAM 和 SRAM 器件使用
● 将 32 位的 AHB 事务转换为针对外部 16 位或 8 位器件进行的连续 16 位或 8 位访问。
● 用于写入的 FIFO,2 字长(对于 STM32F42x 和 STM32F43x,为 16 字长),每个字为32 位宽,仅用于存储数据,而不存储地址。因此,此 FIFO 仅会缓冲 AHB 批量写事务。从而可对慢速存储器执行写入操作后能快速释放 AHB,以供其它操作使用。每次仅缓冲一个突发事务:如果在有操作正在进行时发生一个新的 AHB 突发事务或者一个单独事务,则 FIFO 将会清空。FSMC 将插入等待周期,直至当前存储器访问已完成)。
● 外部异步等待控制
定义外部器件类型和其特性的 FSMC 寄存器通常在启动时进行设置,并且在下次上电或复位前保持不变。但也可随时更改这些设置。

03. FSMC框图

FSMC 包含四个主要模块:
● AHB 接口(包括 FSMC 配置寄存器)
● NOR Flash/PSRAM 控制器
● NAND Flash/PC 卡控制器
● 外部器件接口

04. 外部器件地址映射

从 FSMC 的角度,外部存储器被划分为 4 个固定大小的存储区域,每个存储区域的大小为256 MB:
● 存储区域 1 可连接多达 4 个 NOR Flash 或 PSRAM 存储器器件。此存储区域被划分为 4 个NOR/PSRAM 区域,带 4 个专用片选信号。
● 存储区域 2 和 3 用于连接 NAND Flash 器件(每个存储区域一个器件)
● 存储区域 4 用于连接 PC 卡设备
对于每个存储区域,所要使用的存储器类型由用户在配置寄存器中定义。

4.1 NOR/PSRAM地址映射

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

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

4.2 NOR Flash/PSRAM控制器

FSMC 会生成适当的信号时序,以驱动以下类型的存储器:
● 异步 SRAM 和 ROM
— 8 位
— 16 位
— 32 位
● PSRAM(Cellular RAM)
— 异步模式
— 突发模式
— 复用或非复用
● NOR Flash
— 异步模式或突发模式
— 复用或非复用

FSMC 会为每个存储区域输出唯一的片选信号 NE[4:1]。所有其它信号(地址、数据和控制)均为共享信号。

对于同步访问,FSMC 只有在读/写事务期间才会向所选的外部器件发出时钟 (CLK)。HCLK时钟频率是该时钟的整数倍。每个存储区域的大小固定,均为 64 MB。

每个存储区域都通过专用的寄存器进行配置(请参见 第 32.5.6 节 )。

存储器的可编程参数包括访问时序(请参见 表 189)和对等待管理的支持(用于在突发模式下访问 NOR Flash 和 PSRAM)。

05. 寄存器描述

5.1 SRAM/NOR-Flash 片选控制寄存器 1…4 (FSMC_BCR1…4)

SRAM/NOR-Flash chip-select control registers 1…4
偏移地址:0xA000 0000 + 8 * (x — 1),x = 1…4
复位值:0x0000 30DX
该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和异步或突发 NOR Flash。

5.2 SRAM/NOR-Flash 片选时序寄存器 1…4 (FSMC_BTR1…4)

SRAM/NOR-Flash chip-select timing registers 1…4
偏移地址:0xA000 0000 + 0x04 + 8 * (x — 1),x = 1…4
复位值:0x0FFF FFFF
该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和 NOR Flash。如果FSMC_BCRx 寄存器中的 EXTMOD 位置 1,该寄存器将和另外一个寄存器配合来配置写入和读取的时序参数。也就是说有 2 个寄存器可用:一个用于配置读取访问(此寄存器),另一个用于配置写入访问(FSMC_BWTRx 寄存器)。

5.3 SRAM/NOR-Flash 写入时序寄存器 1…4 (FSMC_BWTR1…4)

SRAM/NOR-Flash write timing registers 1…4
偏移地址:0xA000 0000 + 0x104 + 8 * (x — 1),x = 1…4
复位值:0x0FFF FFFF
该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和 NOR Flash。当 FSMC_BCRx
寄存器中的 EXTMOD 位置 1 时,该寄存器将处于有效状态,可以进行写入访问。

06. 附录

6.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

07. 声明

该教程参考了正点原子的《STM32 F4 开发指南》

【STM32】FSMC概述相关推荐

  1. STM32 FSMC学习笔记+补充(LCD的FSMC配置)

    STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD 转载于:https://www.cnblogs.com/LittleTi ...

  2. STM32 FSMC/FMC原理保姆级讲解(二)

    上一话我们说了FSMC的基本原理及控制逻辑,这一讲我们来说下FSMC如何通过HAL库来进行配置,及具体参数 STM32 FSMC/FMC原理保姆级讲解(一) FSMC的初始化 在使用SRAM之前,我们 ...

  3. STM32 FSMC/FMC原理保姆级讲解(一)

    FSMC通俗讲解 FSMC 框图 FMC引脚说明 FMC地址映射 FSMC不同位宽操作 FSMC寄存器 FSMC时钟 FSMC 四种模式 FSMC参数设置 FSMC 控制异步 NOR FLASH 的时 ...

  4. STM32 FSMC接口驱动4.3寸TFT LCD屏

    STM32 FSMC接口驱动4.3寸TFT LCD屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏. 这里以STM32F103VET ...

  5. STM32 FSMC 驱动16脚12864lcd液晶显示屏

    写在前面 在学习了两天STM32 FSMC后,总算是拿这个东西做了第一个应用,关于FSMC是什么东西怎么用,CSDN中有很多介绍,但是,估计新手刚看都是一头雾水(我就是),不过,你仍必须反反复复地看, ...

  6. STM32 FSMC简介(二)

    以下内容整理自<STM32中文参考手册>.正点原子<STM32F1开发指南--库函数版>.野火<零死角玩转STM32F103霸道V2>,仅为个人学习方便所整理 4. ...

  7. 8、STM32 FSMC驱动LCD(ILI93xx)

    本文使用FSMC驱动LCD显示,关于建议先看之前的7.STM32 FSMC驱动SRAM一文 硬件连接: 一.CubeMx配置FSMC驱动LCD ILI93xx 此章只为快速使用LCD,不涉及原理.指令 ...

  8. STM32 FSMC学习笔记

    FSMC全称"静态存储器控制器". 使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线. (1)当 ...

  9. STM32 FSMC 16位寻址 地址移位的解读

    一. 当 Bank1 接的是 16 位宽度存储器的时候:HADDR[25:1] FSMC_A[24:0]. 当 Bank1 接的是 8 位宽度存储器的时候:HADDR[25:0] FSMC_A[2 ...

最新文章

  1. 快速去阴影--Fast Shadow Detection from a Single Image Using a Patched Convolutional Neural Network
  2. jenkins如何在一台机器上开启多个slave
  3. struts2拦截器遇到的问题
  4. 【哈佛商评】关于数据分析,管理者的四个常规错误
  5. 程序员的精力呵护指南!来自十年程序员的精力管理经验
  6. 微服务API模拟框架frock介绍
  7. 字节跳动测试开发4轮面试_字节跳动测试开发工程师一面总结
  8. 计算机学情分析,中职学生的学情分析 《计算机专业》.doc
  9. 基于springboot的考研学习平台
  10. 难道是我洞悉了CSDN网站订阅专栏收益的秘密?带你看看网站专栏一天营收几何?
  11. BSOD分析之空指针引用
  12. 固定效应和随机效应模型
  13. 【centos8】问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:.
  14. python中的in和out是什么意思
  15. html5 摇骰子游戏,html5 canvas掷骰子(简单,学习基础canvas)
  16. Vue中base64编码和解码
  17. 小米笔记本开机提示:no bootable device -- insert boot disk and press any key
  18. 1分钟学会PS背景虚化
  19. go语言复数包_Go语言圣经 2.3-复数
  20. 两个单词之间的编辑距离

热门文章

  1. SQLServer当数据导入平面文件
  2. 基于GDI+用C#编写的.NET流程图控件开发周记(2011-08-28)
  3. 将上传图片打上防伪图片水印并写入数据库
  4. java链表交集并集,一个链表求集合并集交集的异常
  5. C语言简单题-求整数段和
  6. java mvc 获取session_Spring MVC----获取session/request
  7. python dataframe切片_python-如何避免“试图在DataFrame的切片副本上设置值”?
  8. polymer 绑定html元素,使用Polymer扩展本机HTML元素
  9. OpenCV计算机视觉实战(Python版)资源
  10. 查询数据库耗费资源的sql