基于SRAM时序图计算STM32 FSMC的ADDSET与DATAST方法咨询
STM32F407 FSMC访问IS62WV51216 SRAM时序问题
我在用STM32F407的FSMC外设访问外部SRAM IS62WV51216,查阅RM0090和AN2784文档后得到了两个时序计算相关公式,同时获取了tSU和tV的定义说明,也拿到了该SRAM的读、写时序图。现在有以下几个疑问及解答:
问题1:写时序图左侧的WE信号为何存在两个下降沿?
你看到的两个WE#下降沿,对应IS62WV51216的连续写操作场景:
- 第一个下降沿是单次写周期的启动沿:配合
FSMC_NEx(片选)拉低,正式发起写操作,触发SRAM锁存地址和数据; - 第二个下降沿是连续写的触发沿:当保持
FSMC_NEx低电平时,重复拉低WE#可以发起连续的写周期,无需重新拉低片选。
如果是单次写操作,WE#只会有一次下降沿,随后的上升沿结束写周期,时序图的双下降沿是为了展示连续写的时序特性。
问题2:tSU和tV的具体含义是什么,它们在时序图中的位置如何?同时对“Data to FSMC_NEx high setup time + FSMC_NEx low to FSMC_A valid”的表述存在疑问,认为两者存在包含关系存在冲突
tSU与tV的定义及时序位置
- tSU(建立时间,Setup Time):信号在触发沿(如WE#/OE#下降沿、NE#上升沿)到来前,必须保持稳定的最小时间。比如
tSU(D-WE)是写数据在WE#下降沿前需稳定的时长,在时序图中,起点为数据稳定时刻,终点为WE#下降沿。 - tV(有效时间,Valid Time):信号在触发沿到来后,必须保持稳定的最小时间。比如
tV(A-WE)是地址在WE#下降沿后需稳定的时长,在时序图中,起点为WE#下降沿,终点为地址允许变化的时刻。
关于表述冲突的澄清
你提到的两个时间不存在包含关系,是写周期内两个独立的时序阶段:
Data to FSMC_NEx high setup time:对应SRAM的tSU(D-NE),是写数据在FSMC_NEx上升沿(片选关闭)前的建立时间,确保数据在片选断开前已稳定写入SRAM,属于写周期的末尾阶段;FSMC_NEx low to FSMC_A valid:是FSMC_NEx拉低后,地址信号达到稳定的时长,对应FSMC侧的地址建立时间,确保SRAM能正确锁存地址,属于写周期的开头阶段。
二者分属不同时序阶段,不存在包含冲突。
问题3:ADDSET和DATAST在STM32并行访问SRAM的时序图中的位置在哪里,以及如何计算这两个参数?
时序图中的位置
ADDSET(地址建立时间):
读/写操作通用:起点为FSMC_NEx拉低的时刻,终点为FSMC_NOE#(读使能)或FSMC_NWE#(写使能)拉低的时刻。这段时间用于保证地址信号在读写使能触发前稳定。DATAST(数据有效时间):- 读操作:起点为
FSMC_NOE#拉低的时刻,终点为FSMC_NOE#拉高的时刻,对应SRAM输出数据的有效时长; - 写操作:起点为
FSMC_NWE#拉低的时刻,终点为FSMC_NWE#拉高的时刻,对应SRAM锁存数据的有效时长。
- 读操作:起点为
参数计算方法(基于RM0090与AN2784)
所有计算需将SRAM的时序参数转换为FSMC的HCLK周期数,且ADDSET/DATAST寄存器配置值为实际周期数减1(例:配置ADDSET=3对应4个HCLK周期)。
读操作
ADDSET ≥ tSU(A-OE) / HCLK周期 - 1:tSU(A-OE)为SRAM要求的地址在OE#下降沿前的建立时间;DATAST ≥ t(OE) / HCLK周期 - 1:t(OE)为SRAM要求的OE#低电平持续时间(数据有效时长)。
写操作
ADDSET ≥ tSU(A-WE) / HCLK周期 - 1:tSU(A-WE)为SRAM要求的地址在WE#下降沿前的建立时间;DATAST ≥ t(WE) / HCLK周期 - 1:t(WE)为SRAM要求的WE#低电平持续时间。
若FSMC存在输出延迟,需参考AN2784中的延迟补偿规则,对计算结果进行微调。
内容的提问来源于stack exchange,提问作者ethan
相关产品推荐
相关产品推荐

