FSMC-灵活的静态存储控制器

2024-08-28 03:32

本文主要是介绍FSMC-灵活的静态存储控制器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

最近在学习SMT32的FSMC模块,现将我自己对FSMC的理解讲解一下,并对学习过程中遇到的疑点和难点进行分享。

0.前言

学习FSMC,我推荐《STM32F4xx中文参考手册》、《STM32F4开发指南-库函数版本_V1.1.pdf》和一些SRAM的技术文档,比如《IS62WV51216.pdf》。如果有STM32开发板那就更好了,如果没有开发板,只是想了解FSMC的工作原理及过程,可以参考STM32F407的程序代码,这些资料可以去正点原子官方网站免费下载:http://www.openedv.com/thread-13912-1-1.html。

本文主要是按照《STM32F4xx中文参考手册》FSMC部分讲解。对我在学习过程中的疑点难点进行补充。

1.FSMC概述

FSMC英文全称为Flexible Static Memory Controller,翻译成中文为:灵活的静态存储控制器。它是STM32的一个外设。

  • 功能:扩展外部SRAM、NOR FLASH、NAND FLASH、ROM、PC卡等。

2.FSMC框图

 

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

也就是说,STM32的FSMC模块可以用来外接静态随机访问存储器 (SRAM)、 只读存储器 (ROM)、 NOR Flash/OneNAND Flash、 PSRAM( 4 个存储区域)。至于如何连接呢?下图是正点原子的开发板STM32F407ZET6连接SRAM的原理图,

图中红色字体对应STM32芯片上的对应引脚,可以看到STM32芯片和SRAM都有相同的一些引脚,包括18根地址总线、16根数据总线、UB、LB、OE、WE、CE。

3.FSMC工作模式

FSMC分为同步模式和异步模式,其中异步模式又分为模式1、模式A、模式2/B、模式C、模式D、复用模式。不同模式的区别在于NBL0,NBL1,NOE,NWE,NEx几根控制信号线的时序不同,具体请参考《STM32F4xx中文参考手册》。

简单来说,对于SRAM芯片的控制就是配置STM32的寄存器,将复杂的时序封装起来,我们用户不用管,选择好模式后,STM32芯片自动按照模式对应的时序进行访问SRAM。

与此同时,被访问的SRAM也要遵循FSMC的工作方式,这样才能识别出是那种方式,才能够响应STM32控制芯片。至于被控制的SRAM采用何种工作模式以及其自身的命令,可参考具体的SRAM资料手册。

4.总结

此文并非详解,这是我个人学习后的一些想法。关于FSMC的细节部分一定要看《STM32F4xx中文参考手册》,这是最权威的资料,也非常详细。一定耐下心多看几遍,最好对照程序源码,会达到事半功倍的效果。

如有疑问可在评论区讨论。

这篇关于FSMC-灵活的静态存储控制器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113606

相关文章

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争