STM32(十五)FSMC
一、FSMC简介
FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。它可以用于驱动包括SRAM、NOR FLASH以及NAND FLASH类型的存储器,不能驱动如SDRAM这种动态的存储器而在STM32F429系列中的控制中,它具有FMC外设,支持控制SDRAM存储器
二、FSMC技术优势
-
支持多种静态存储器类型:
STM32通过FSMC可以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。
-
支持丰富的存储操作方法:
FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR/PSRAM/NAND存储器的同步突发访问方式。
-
支持同时扩展多种存储器
FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。
-
支持更为广泛的存储器型号
通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵活的存储芯片选择空间。
-
支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。
三、FSMC内部结构
在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。FSMC起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。
四、FSMC控制异步NOR FLASH的时序
1、读时序
地址总线(输出)
地址、数据线服用时作锁存信号(输出)
片选(输出)
输出使能【输出】
写使能(输出)
输入/输出 双向数据总线
- 在地址建立周期中,地址线发出要访问的地址,
- 数据掩码信号线指示出要读取地址的高、低字节部分。
- 片选信号使能存储器芯片;
- 地址建立周期结束后读使能信号线发出读使能信号。
- 存储器通过数据信号线把目标数据传输给 FSMC,FSMC 把它交给内核。
二、写时序
写时序和读时序类似,区别是它的一个存储器操作周期仅由地址建立周期(ADDSET)和数据建立周期(DATAST)组成。
- 在地址建立周期中,地址线发出要访问的地址,
- 数据掩码信号线指示出要读取地址的高、低字节部分。
- 片选信号使能存储器芯片;
- 地址建立周期结束后写使能信号线发出写使能信号。
-
FSMC 把数据通过数据线传输到存储器中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)