灵活的静态存储控制器 (FSMC)的介绍(STM32F4)

news2025/1/17 6:17:38

目录

概述

1 认识FSMC

1.1 应用介绍

1.2 FSMC的主要功能

1.2.1 FSMC用途

1.2.2 FSMC的功能

2 FSMC的框架结构

2.1 AHB 接口

2.1.1 AHB 接口的Fault

2.1.2 支持的存储器和事务

2.2 外部器件地址映射

3 地址映射

3.1 NOR/PSRAM地址映射

3.2 NAND/PC卡地址映射


概述

本文主要介绍灵活的静态存储控制器 (FSMC)的基本概念,包括其支持主要器件,架构特点,以及在MCU内部AHB接口的特性,还介绍了其和外部NOR Flash,Nand flash, 以及SRAM的地址映射关系等内容。

1 认识FSMC

1.1 应用介绍

FSMC 能够连接同步、异步存储器和 16 位 PC 存储卡。其主要用途如下:

● 将 AHB 数据通信事务转换为适当的外部器件协议
● 满足外部器件的访问时序要求

所有外部存储器共享地址、数据和控制信号,但有各自的片选信号。 FSMC 一次只能访问一个外部器件。

总结如下:

1)所有的外部存储器共享地址、数据和控制信号

2)通过片选CS使能各自的片选

3)FSMC每一次只能选择一个器件

1.2 FSMC的主要功能

1.2.1 FSMC用途

FSMC 能够连接同步、异步存储器和 16 位 PC 存储卡。其主要用途如下:

● 将 AHB 数据通信事务转换为适当的外部器件协议
● 满足外部器件的访问时序要求

所有外部存储器共享地址、数据和控制信号,但有各自的片选信号。 FSMC 一次只能访问一个外部器件。

1.2.2 FSMC的功能

FSMC 具有以下主要功能:
1)连接静态存储器映射的器件:

— 静态随机访问存储器 (SRAM)
— 只读存储器 (ROM)
— NOR Flash/OneNAND Flash
— PSRAM( 4 个存储区域)

2)外围器件支持

两个带有 ECC 硬件的 NAND Flash 存储区域,可检查多达 8 KB 的数据。16 位 PC 卡兼容设备,支持对同步器件( NOR Flash 和 PSRAM)的突发模式访问;8 或 16 位宽的数据总线;每个存储区域有独立的片选控制,每个存储区域可独立配置。

3) 可对时序进行编程,以支持各种器件:

— 等待周期可编程(最多 15 个时钟周期)
— 总线周转周期可编程(最多 15 个时钟周期)
— 输出使能和写入使能延迟可编程(最多 15 个时钟周期)
— 独立的读和写时序和协议,以支持各种存储器和时序

4)其他功能

● 写使能和字节通道选择输出,可配合 PSRAM 和 SRAM 器件使用
● 将 32 位的 AHB 事务转换为针对外部 16 位或 8 位器件进行的连续 16 位或 8 位访问。
● 用于写入的 FIFO, 2 字长(对于 STM32F42x 和 STM32F43x,为 16 字长),每个字为32 位宽,仅用于存储数据,而不存储地址。因此,此 FIFO 仅会缓冲 AHB 批量写事务。从而可对慢速存储器执行写入操作后能快速释放 AHB,以供其它操作使用。每次仅缓冲一个突发事务:如果在有操作正在进行时发生一个新的 AHB 突发事务或者一个单独事务,则 FIFO 将会清空。 FSMC 将插入等待周期,直至当前存储器访问已完成)。

5)外部异步等待控制
定义外部器件类型和其特性的 FSMC 寄存器通常在启动时进行设置,并且在下次上电或复位前保持不变。但也可随时更改这些设置。

2 FSMC的框架结构

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

2.1 AHB 接口

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

2.1.1 AHB 接口的Fault

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

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

此 AHB 错误的影响具体取决于尝试进行读写访问的 AHB 主设备:
● 如果为 Cortex™-M4F CPU,则会生成硬性故障 (hard fault) 中断
● 如果为 DMA,则会生成 DMA 传输错误,并会自动禁用相应的 DMA 通道AHB 时钟 (HCLK) 是 FSMC 的参考时钟。

2.1.2 支持的存储器和事务

1)通用事务规则

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

AHB 事务数据宽度存储器数据宽度相等没有任何问题。

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

对具有字节选择功能的器件( SRAM、 ROM、 PSRAM)进行异步访问。

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

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

当请求对 16 位宽的 Flash 存储器进行字节访问时会发生此情形。显然,不能在字节模式下访问此器件(只能针Flash 存储器读取或写入 16 位字),因此:

a) 不允许写入事务
b) 允许读取事务。会读取所有存储器字节,并将丢弃无用的存储器字节。 NBL[1:0]在读取事务期间保持低电平。

2)配置寄存器

FSMC 可通过一个寄存器组进行配置。有关 NOR Flash/PSRAM 控制寄存器的详细说明

2.2 外部器件地址映射

从 FSMC 的角度,外部存储器被划分为 4 个固定大小的存储区域,每个存储区域的大小为256 MB(请参见下图 ):

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

对于每个存储区域,所要使用的存储器类型由用户在配置寄存器中定义。

3 地址映射

3.1 NOR/PSRAM地址映射

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

NOR/PSRAM 存储区域选择



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

外部存储器地址

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

NOR Flash/PSRAM 的回卷支持
不支持同步存储器的回绕突发模式。存储器必须按未定义长度的线性突发模式进行配置。

3.2 NAND/PC卡地址映射

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

存储器映射和时序寄存器

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

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

NAND 存储区域选择

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

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

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


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思维导图软件哪个好?5个软件教你自己快速制作思维导图

思维导图软件哪个好?5个软件教你自己快速制作思维导图 思维导图软件在现代生活和工作中扮演着重要的角色,它们可以帮助人们整理思维、规划项目、记录笔记等。以下是五款值得推荐的思维导图软件,它们各有特色,可以帮助您快速制作思…

开发者体验官:参与华为云CodeArts开发实践,赢取千元好礼!

CodeArts携华为云其他六大上云实践项目, 一起给大家送福利啦! 这次我们准备了华为全套电子产品, 包括但不限于华为智能音箱、耳机、摄像头,最高价值1000元! 只要体验完产品,提出相关的产品优化建议即有…

【020】基于JavaWeb实现的批报管理系统

项目介绍 基于jspservlet实现的批报管理系统采用B/S架构,该项目设计了一个角色管理员,管理员实现了我的案件、查询统计、项目维护等三大功能模块 技术栈 开发工具:Idea2020.3 运行环境:jdk1.8tomcat9.0mysql5.7 服务端技术:j…

wireshark_概念

ARP (Address Resolution Protocol)协议,即地址解析协议。该协议的功能就是将IP地址解析成MAC地址。 混杂模式 抓取经过网卡的所有数据包,包括发往本网卡和非发往本网卡的。 非混杂模式 只抓取目标地址是本网卡的数据包,对于发往…

算法练习第21天|216.组合总和|||、17.电话号码的字母组合

216.组合总和 III 216. 组合总和 III - 力扣(LeetCode)https://leetcode.cn/problems/combination-sum-iii/ 题目描述: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一…

历史影像的下载办法总结

最近想要下黄河口的历史影像,试验了几个办法: 1)参考文献1中的办法,用Global Mapper下载World Imagery Wayback网站的历史数据,能下载从2014年至现在的; 2)参考文献1中的办法,用SA…

SSL证书:守护网站安全的必要之选

随着互联网的飞速发展,网络安全问题愈发受到人们的关注。在这个信息爆炸的时代,数据的安全传输和用户的隐私保护成为了每个网站运营者必须面对的重要议题。而SSL证书,作为保障网站安全的重要工具,其重要性不言而喻。本文将详细探讨…

LeetCode416:分割等和子集

题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 解题思想 [1,5,11,5] 和为22,其中一半为 11。如果能寻找到若干数的和为11则成立可以抽象为一个0-1背包问题:容…

【Python 下载大量品牌网站的图片(二)】关于图片的处理和下载,吃满带宽,可多开窗口下载多个网站,DOS窗口类型

写作日期:2024.05.11 使用工具:Python 可修改功能:线程量、UA、Cookie、代理、存储目录、间隔时间、超时时间、图片压缩、图片缩放 默认功能:图片转换、断续下载、图片检测、路径处理、存储文件 GUI:DOS窗口 类型&…

有奖调研 | OpenSCA开源社区用户调研问卷

调研背景: 亲爱的OpenSCA开源社区用户,感谢您一路以来的支持与相伴。随着OpenSCA开源社区的不断发展,我们持续专注安全开发与开源治理实践,为全球用户提供一站式审查治理、SaaS云分析和精准情报预警的开源数字供应链安全赋能。 为…

gcc跟g++ -std=c99跟-std=c++11

报错: myshell.c: In function ‘int doBuildin(char**)’: myshell.c:91:12: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] path "."; 解决方案:这个waring提示我c11,也就是这里…

【csv-parse】使用parse方法的时候来转换为csv字符串时,会导致输出有乱码

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:前端bug记录 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进…

网安面经之文件上传漏洞

一、文件上传漏洞 1、文件上传漏洞的原理?危害?修复? 原理:⽂件上传漏洞是发⽣在有上传功能的应⽤中,如果应⽤程序对⽤户上传的⽂件没有控制或者存在缺陷,攻击者可以利⽤应⽤上传功能存在的缺陷&#xff…

深度学习之激活函数——Tanh

Tanh 双曲正切1函数(tanh),其图像与sigmoid函数十分相近,相当于sigmoid函数的放大版。在实际的使用中,tanh函数要优先于sigmoid函数。 函数表达式 t a n h e x − e − x e x e − x tanh\frac{e^x-e^{-x}}{e^xe^{-x}} tanhexe−xex−e−…

高中数学:平面向量-基本概念

一、定义 有方向,且有大小的量,就叫向量 与之对应的是,数量,只有大小,没有方向 例如 A B → \mathop{AB}\limits ^{\rightarrow} AB→ a → \mathop{a}\limits ^{\rightarrow} a→ 二、相关性质 相等 大小相同…

半监督的GCN:Semi-Supervised Classification With Graph Convolutional Networks

Semi-Supervised Classification With Graph Convolutional Networks -Theophilus Siameh-2017(2023) 思路 使用可扩展方法对图进行半监督学习,其中CNN应用在图数据上,得到GCN。 这种方法是在图的边的数量上进行线性的缩放模型,并学习包含局部图结构和图节点的几个隐藏层…

Django图书馆综合项目-学习(2)

接下来我们来实现一下图书管理系统的一些相关功能 1.在书籍的book_index.html中有一个"查看所有书毂"的超链接按钮,点击进入书籍列表book_list.html页面. 这边我们使用之前创建的命名空间去创建超连接 这里的book 是在根路由创建的namespacelist是在bo…

【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(c语言实现)

实验要求 求n的因子函数 我们将n的因子存入数组中&#xff0c;n的因子就是可以整除n的数&#xff0c;所以我们通过一个for循环来求。返回因子个数。 //求n的因子,返回因子个数 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…

如何创建和运营新版Facebook粉丝专页

在众多平台中&#xff0c;Facebook粉丝专页无疑是连接全球消费者、扩展品牌影响力的重要工具。如果你是初次接触Facebook粉丝专页&#xff0c;可能会感到有些迷茫——毕竟&#xff0c;只是听说过它的好处&#xff0c;却不知道如何开始。 Facebook粉丝专页不仅是一个分享产品信…

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…