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

相关文章

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

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

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