FSMC的NOR Flash/PSRAM 控制器功能介绍(STM32F4)

目录

概述

1 FSMC支持的类型

1.1 信号类型概述

1.2 FSMC的应用

2 外部存储器接口信号

2.1  I/O NOR Flash

2.2  PSRAM/SRAM

3 支持的存储器和事务

 4 通用时序规则

5 NOR Flash/PSRAM 控制器异步事务

5.1 模式 1 - SRAM/PSRAM (CRAM)

5.2  模式 A - SRAM/PSRAM (CRAM) OE 切换

5.3 模式 D - 扩展地址异步访问

5.4 复用模式 - 复用异步访问 NOR Flash

5.5 异步访问中的 WAIT 管理


概述

本文主要讲述FSMC的NOR Flash/PSRAM 控制器功能,包括FSMC支持的信号类型以及应用方法,还介绍外部接口信号的特性、存储器类型,以及控制模式等类型。

1 FSMC支持的类型

1.1 信号类型概述

FSMC 会生成适当的信号时序,以驱动以下类型的存储器:

● 异步 SRAM 和 ROM
— 8 位
— 16 位
— 32 位

● PSRAM( Cellular RAM)
— 异步模式
— 突发模式
— 复用或非复用

● NOR Flash
— 异步模式或突发模式
— 复用或非复用

1.2 FSMC的应用

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

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

每个存储区域都通过专用的寄存器进行配置。

NOR/PSRAM 控制寄存器


NOR/PSRAM 控制寄存器必须按字( 32 位)进行访问。
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。

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

NOR/PSRAM 的可编程访问参数

2 外部存储器接口信号

2.1  I/O NOR Flash

1) 非复用 I/O NOR Flash

NOR Flash 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。

2)复用 I/O NOR Flash

NOR-Flash 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。

2.2  PSRAM/SRAM

1)非复用 I/O PSRAM/SRAM

PSRAM 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。

2) 复用 I/O PSRAM

 PSRAM 存储器采用 16 位字寻址。最大容量为 512 Mb( 26 个地址线)。


3 支持的存储器和事务

下面的表显示的是当 NOR、 PSRAM 和 SRAM 的存储器数据总线为 16 位时所支持的设备、访问模式和事务的示例。在此示例中, FSMC 不允许(或不支持)的事务显示为灰色。

 4 通用时序规则

信号同步

● 所有的控制器输出信号在内部时钟 (HCLK) 的上升沿变化
● 在同步模式(读取或写入)下,输出的数据在 HCLK 的上升沿变化。无论 CLKDIV 值为何,所有输出均会按以下方式变化:

— 当出现 FSMC_CLK 时钟的下降沿时, NOEL/NWEL/NEL/NADVL/NADVH/NBLL/ 地址有效输出可发生变化。

— 当出现 FSMC_CLK 时钟的上升沿时, NOEH/NWEH/NEH/NOEH/NBLH/ 地址有效输出可发生变化。

5 NOR Flash/PSRAM 控制器异步事务

异步静态存储器( NOR Flash、 PSRAM、 SRAM)

1) 信号通过内部时钟 HCLK 进行同步。不会将此时钟发送到存储器

2)FSMC 总是会先对数据进行采样,而后再禁止片选信号 NE。这样可以确保符合存储器数据保持时序的要求(数据转换的芯片使能高电平,通常最低为 0 ns。)

3)如果使能扩展模式(FSMC_BCRx 寄存器中的 EXTMOD 位置 1),则最多可提供四种扩展模式( A、 B、 C 和 D)。可以混合使用 A、 B、 C 和 D 模式来进行读取和写入操作。

例如,可以在模式 A 下执行读取操作,而在模式 B 下执行写入操作。


4)如果禁用扩展模式(FSMC_BCRx 寄存器中的 EXTMOD 位复位),则 FSMC 可以在模
式 1 或模式 2 下运行,如下所述:

— 当选择 SRAM/CRAM 存储器类型时,模式 1 为默认模式( FSMC_BCRx 寄存器中
MTYP = 0x0 或 0x01)。
— 当选择 NOR 存储器类型时,模式 2 为默认模式( FSMC_BCRx 寄存器中 MTYP =
0x10)。

 5.1 模式 1 - SRAM/PSRAM (CRAM)

1)模式 1 读取访问

NBL[1:0] 在进行读取访问时为低电平。

2)  模式 1 写入访问

位于写入事务末尾的一个 HCLK 周期有助于确保 NWE 上升沿之后的地址和数据保持时间。
由于存在此 HCLK 周期, DATAST 值必须大于零 (DATAST > 0)。

5.2  模式 A - SRAM/PSRAM (CRAM) OE 切换

1)模式 A 读取访问

NBL[1:0] 在进行读取访问时为低电平。

2)模式 A 写入访问

与模式 1 的不同之处在于 NOE 的切换与独立的读取和写入时序。 

5.3 模式 D - 扩展地址异步访问

1)模式 D 读取访问

2)模式 D 写入访问
 

与模式 1 的不同之处在于 NADV 变化后 NOE 的切换与独立的读取和写入时序。 

5.4 复用模式 - 复用异步访问 NOR Flash

1)复用读取访问

2)复用写入访问

5.5 异步访问中的 WAIT 管理

如果异步存储器发出 WAIT 信号,指示尚未准备好接受或提供数据,则 FSMC_BCRx 寄存器中的 ASYNCWAIT 位必须置 1。

如果 WAIT 信号处于有效状态(电平高低取决于 WAITPOL 位),则由 DATAST 位控制的第二个访问阶段(数据建立阶段)将延长,直到 WAIT 变为无效状态。与数据建立阶段不同,由 ADDSET 和 ADDHLD 位控制的第一个访问阶段(地址建立和地址保持阶段)对WAIT 不敏感,因此第一个访问阶段不会延长。

必须配置数据建立阶段(FSMC_BTRx 寄存器中的 DATAST),以便在存储器事务结束前 4 个HCLK 周期检测到 WAIT。必须考虑以下情况:

1)存储器发出的 WAIT 信号和 NOE/NWE 信号对齐:

2)存储器发出的 WAIT 信号和 NEx 对齐(或者 NOE/NWE 信号不翻转): 

if 如下条件:

do:

 

else:

     

参数

其中, max_wait_assertion_time 是在 NEx/NOE/NWE 变为低电平后存储器使能 WAIT
信号所花费的最长时间。

图 1和 图2显示了异步存储器释放 WAIT 之后,在存储器访问过程中增加的 HCLK 时钟周期的个数(与上述情况无关)。

图1:读取访问期间的异步等待

 图2:写入访问期间的异步等待


 

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

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

相关文章

Golang | Leetcode Golang题解之第90题子集II

题目&#xff1a; 题解&#xff1a; func subsetsWithDup(nums []int) (ans [][]int) {sort.Ints(nums)n : len(nums) outer:for mask : 0; mask < 1<<n; mask {t : []int{}for i, v : range nums {if mask>>i&1 > 0 {if i > 0 && mask>&…

[HUBUCTF 2022 新生赛]ezsql

测试无结果 扫描目录&#xff0c;得到源码 找到注入点 思路&#xff1a;更新资料的时候可以同时更新所有密码 我们需要知道密码的字段名 爆库 nicknameasdf&age111,description(select database())#&descriptionaaa&token31ad6e5a2534a91ed634aca0b27c14a9 爆表…

运维别卷系列 - 云原生监控平台 之 08.prometheus grafana 实践

文章目录 [toc]部署 Grafana准备配置文件grafana.iniprovisioning/datasources/prometheus.yamlprovisioning/dashboards/dashboards.yamlprovisioning/dashboards/views 创建 svc创建 deployment Grafana 是一个图形化界面&#xff0c;配置 Prometheus 作为数据源&#xff0c;…

网络库-POCO介绍

1.简介 POCO C Libraries 提供一套 C 的类库用以开发基于网络的可移植的应用程序&#xff0c;它提供了许多模块&#xff0c;包括网络编程、文件系统访问、线程和并发、数据库访问、XML处理、配置管理、日志记录等功能。Poco库的设计目标是易于使用、高度可定制和可扩展。 包含…

Postman的简介,安装,注册。

一、安装 1.Chrome应用商品搜索Postman安装。(翻墙) 2.客户端安装官网地址:https://www.postman.com/downloads/ 3.Postman的注册和登录。 4.Postman的界面介绍 Home主页 workspaces 工作空间 Collections 集合&#xff0c;项目集合。 Apis api文档 EnViromments …

Oracle如何加密解密sha256

在Oracle数据库中&#xff0c;您可以使用内建的加密函数或者通过PL/SQL扩展来实现SHA-256加密。但请注意&#xff0c;SHA-256是一个哈希算法&#xff0c;它主要用于生成数据的哈希值&#xff0c;而不是用于加密和解密数据。哈希算法是单向的&#xff0c;即它只能从原始数据生成…

基于MSWA相继加权平均的交通流量分配算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于MSWA相继加权平均的交通流量分配算法matlab仿真.如图所示交通网络中&#xff0c;包含6个节点、11各路段、9个OD对。经枚举可得每个OD对间存在3条无折返有效路…

elasticsearch使用Ngram实现任意位数手机号搜索

文章目录 Ngram自定义分词案例实战问题拆解 Ngram分词器定义Ngram分词定义Ngram分词示例Ngram分词应用场景 Ngram分词实战 Ngram自定义分词案例 当对keyword类型的字段进行高亮查询时&#xff0c;若值为123asd456&#xff0c;查询sd4&#xff0c;则高亮结果是&#xff1c;em&a…

python项目连接数据库(mysql,postgresql)

在实际开发过程中&#xff0c;对于项目的数据查询和数据统计&#xff0c;那python是相当好用&#xff0c;相信很多后端工程师是java语言入门的&#xff0c;对于python呢是有一点陌生&#xff0c;我自己也是&#xff0c;不过当你操作起来呢发现其实还是蛮好上手的。以下就是一些…

C语言基础-标准库函数

C语言的标准库函数是由C语言标准库&#xff08;如C99、C11等&#xff09;提供的一系列预定义函数&#xff0c;这些函数通常用于执行常见的编程任务&#xff0c;如字符串操作、内存管理、数学计算、文件操作等。通过使用标准库函数&#xff0c;程序员可以更加高效地编写C语言程序…

在ubuntu上创建WiFi热点

要在 wlan0 无线网卡上发射热点&#xff08;即创建 WiFi 热点&#xff09;&#xff0c;可以使用 hostapd 和 dnsmasq 这两个工具。hostapd 用于创建热点&#xff0c;而 dnsmasq 用于提供 DHCP 和 DNS 服务&#xff0c;以便连接到热点的设备可以获取 IP 地址并访问互联网。 下面…

【AI】DeepStream(03):deepstream_test1_app

1、简介 deepstream-test1:演示各种 DeepStream 插件构建 GStreamer 管道。从文件中获取视频、解码、批处理,然后进行对象检测,最后在屏幕上渲染框。 源码路径:/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test1 先看下效果 2、编译 1)…

Qt将ffmpeg解码出来的数据保存为文件

具体代码如下: QImage image(m_pAVPicture.data[0], m_videoWidth, m_videoHeight, QImage::Format_RGB888);QString currrentTime = QDateTime::currentDateTime().

重写muduo网络库之调用流程的梳理

目录 1、流程叙述 2、我们看看TcpServer的构造都做了什么&#xff1f; 3、start() 3.1 开启loop 3.2 连接的建立 3.3 数据的收发 4、连接的关闭 muduo网络库各组件梳理见此博客 重写muduo库之组件梳理 1、流程叙述 首先&#xff0c;我们是怎么使用的&#xff1f; 1.定…

MTP协议中文翻译第一二三四章

1 简介 ​ 媒体传输协议(MTP)是一种协议,旨在与瞬态存储设备进行内容交换以及命令和控制。它是作为PTP或图像传输协议的扩展而开发的,主要针对便携式数码相机媒体播放器和手机。 1.1 目标 ​ 这个协议的主要目的是促进具有瞬时连接性和显著存储容量的媒体设备之间的通信…

【iOS】工厂模式

文章目录 前言设计模式的三大原则简单工厂模式工厂方法模式抽象工厂模式关于三兄弟的升级与降级注意 前言 上文讲完了iOS的架构模式&#xff0c;接下来聊一聊设计模式&#xff0c;设计模式有许多&#xff0c;主要介绍一下工厂模式 设计模式的三大原则 S 单一职责原则 告诉我…

PBR系列-光之简史

作者&#xff1a;游梦 ​ 欢迎进入官网体验使用&#xff1a;Mapmost——让人与机器联合创作成为新常态 ​说到PBR理论分为三大理论&#xff1a;物理光源、物理材质与物理相机&#xff0c;三者都与光有着千丝万缕的关系&#xff0c;原打算这期讲解物理材质&#xff0c;在梳理知…

MySQL:某字段追加随机数

在MySQL中&#xff0c;你可以使用UPDATE语句结合随机函数RAND()来为某个字段追加随机数。以下是一个示例&#xff0c;假设我们有一个表my_table&#xff0c;其中有一个字段my_field&#xff0c;我们想要为这个字段追加一个介于1到100之间的随机数&#xff1a; UPDATE my_table…

OpenHarmony 3.1 Release实战开发 + Linux 原厂内核Launcher起不来问题分析报告

1、关键字 Launcher 无法启动&#xff1b;原厂内核&#xff1b;Access Token ID&#xff1b; 2、问题描述 芯片&#xff1a;rk3566&#xff1b;rk3399 内核版本&#xff1a;Linux 4.19&#xff0c;是 RK 芯片原厂发布的 rk356x 4.19 稳定版内核 OH 版本&#xff1a;OpenHa…

Java Spring的远程调用方式(如RMI、Hessian、Burlap等)

Spring框架提供了对多种远程调用技术的集成&#xff0c;使得开发者可以方便地在分布式系统中实现远程服务调用。以下是Spring支持的一些常见远程调用方式&#xff1a; 1. RMI (Remote Method Invocation) RMI是一种Java特有的远程调用技术&#xff0c;允许一个Java虚拟机上的…