FSMC-地址建立时间、地址保持时间、数据建立时间如何确定

2024-08-28 03:32

本文主要是介绍FSMC-地址建立时间、地址保持时间、数据建立时间如何确定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们知道FSMC包括同步和异步两种工作时序。对于异步突发访问方式, FSMC 主要设置 3 个时间参数:地址建立时间(ADDSET)、数据建立时间(DATAST)和地址保持时间(ADDHLD)。这三个参数是怎么来的呢?是因为SRAM/ ROM、 PSRAM 和 NOR Flash 产品的信号时序有这三个参数,FSMC 综合了 SRAM/ ROM、 PSRAM 和 NOR Flash 产品的信号特点,定义了 4 种不同的异步时序模型。选用不同的时序模型时,需要设置不同的时间参数,如下表所示:

那么究竟地址建立时间(ADDSET)、数据建立时间(DATAST)和地址保持时间(ADDHLD)是什么呢?我们需要看SRAM/ ROM、 PSRAM 和 NOR Flash等芯片的时序图。这3个参数是存储芯片的数据手册中给出的,或者是通过存储芯片的数据手册其他参数计算出来的。所以想要知道这3个参数的具体值,一定要看具体存储芯片的数据手册!

我使用STM32F407作为主控芯片,选用IS62WV51216作为片外SRAM。IS62WV51216读写时序及读写参数如下图所示:

IS62WV51216读时序关键特性
IS62WV51216读时序
IS62WV51216写时序关键特性
IS62WV51216写时序

 

使用模式A,读写共用时序(共用时序时,以写时序为准),配置代码如下:

 //系统频率为168MHz,即一个HCLK周期为1/168M=6nsreadWriteTiming.FSMC_AddressSetupTime = 0x00;   //地址建立时间为0HCLK     即0nsreadWriteTiming.FSMC_AddressHoldTime = 0x00;    //地址保持时间 模式A未用到readWriteTiming.FSMC_DataSetupTime = 0x08;      //数据建立时间 为9HCLK    6*9=54ns

为什么地址建立时间是0ns呢?因为从IS62WV51216写时序关键特性中可以看到,Address Setup Time为0,所以配置时,地址建立时间要等于0。

地址保持时间模式A未用到,所以配置为0.

数据建立时间为什么是54ns呢?因为从IS62WV51216写时序关键特性中可以看到,Dataup to Write End最小值为30ns,所以配置时,数据保持时间要大于30ns。至于选择的54ns并不是严格按照手册时间来的,这需要实际调试才能确定具体值。

那为什么数据建立时间配置为8,但却是9个HCLK周期时间呢?从STM32中文参考手册的时序图中可以看到,模式A写入时序的数据建立时间为: 数据建立时间=HCLK周期+1,初始化程序时,如果设置DATAST=0,则实际数据建立周期为1,即实际数据建立周期比DATAST值多1个HCLK周期。

STM32中文参考手册模式A写时序

 

参数确定大体就是这样的思路,其他模式及不同的芯片确定参数的思路是一样的。希望能帮到大家。

最后是在帖子中看到的关于时序的讲解,挺有趣,一并放在文章中。

先搞清逻辑关系。 

这是CPU读存储器的时序。CPU索取,存储器付出。 

我有很多单元,你要读我,至少要把那个单元的门牌号告诉我吧?——这就是地址线,由CPU填写(输出); 
地址线上非1即0,你放不放地址都这样的,所以,你要告诉我什么时候是“地址”,什么时候是“垃圾”吧?——这就是OE线下降沿的作用,也要CPU填写。 
(一般来说,要在地址稳定以后,OE才发出下降沿。上面图没有给出这个差别。) 

好了,CPU该办的手续已经完了,球到了存储器一边。 

我要去这个单元找东西,总需要点时间吧?——这就是OE下降沿以后,RAM发出数据的时间间隔。 
艾玛,累死我了,你要的东西找到了,我放上去了! 

按说,数据放到总线上了,可是CPU如何才能知道数据来了呢?因为不论是数据还是垃圾,那电线上面总有1、0这些东西。 
这时出现不同解决方法了。 
一种方法,由存储器给CPU发出一个通知信号:好了,快来拿!这个信号通常叫做 Data Available,数据可得,简写 DAV,可能有人见过。CPU接到这个信号,自然会做。
另一种方法,有老大强势规定:OE下降沿之后,你丫必须在1秒钟之内把东西交出来!我只管时间到就来拿!这是多数存储器遵守的规定。 
这两种方法,由于是不同的公司提出的,经常以公司名字来命名。Motorola总线,intel总线,听说过吧? 

OK,明白这些意思,稍微想一想,应当就可以理解各种时序的时间了。以后再不用问人了。 

另外,手册里经常可以看到,这些时间一般会有最大值、最小值,有些只给出一项。 
比如上面提到,从OE下降沿到存储器交出数据的时间,在存储器手册里面,这个时间只会给出最大值。 
因为用户必须按“最长时间”操作,不能有侥幸心理。给出最小值没有实际意义。

 

这篇关于FSMC-地址建立时间、地址保持时间、数据建立时间如何确定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5