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

相关文章

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片