STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间

时间:2024-03-28 11:23:06

这是本人学习正点原子的外扩SRAM实验的学习笔记,SRAM芯片和FMC的时序图对新手太不友好了,读了好久才搞明白,赶紧记录一下,接下来直奔主题。

读操作

一、FSMC读时序(FSMC输入)

下图是STM32的FMC读时序,最重要的是RD非信号,也就是读使能信号。图中的红色箭头,可以理解为两信号之间有关联,然后中间存在一个时延,而这个时延可以通过编程来设置,从而匹配不同速度的外设;时钟信号可以忽略,我画上去只是便于理解,上升沿触发也是我假设的,实际情况不得而知。
FSMC先送出地址和其他控制信号,然后经(ADDSET+1)个HCLK时钟后,RD非信号发生负跳变,再经(DATASET+1)个HCLK时钟后,此时FSMC从数据总线上读入数据(我们要保证外设在此时刻之前将数据送上数据总线,这样FMC才能读入有效的数据),再经2个HCLK时钟后,RD非信号变为高电平。
STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间

二、SRAM读时序(SRAM输出)

下图分别是SRAM读时序、读时序时间范围、原子哥设置的参数。时序图中同样的红色箭头表示两信号之间有关联,中间存在一个时延。重点看RD非和DOUT信号。我们观察到,从RD非下降沿时刻到DOUT数据有效时刻之间的时差为tDOE,查询数据手册可知,其最小值为25ns。也就是说当SRAM芯片检测到RD非上有下降沿信号后,就开始准备输出地址信号所选中单元的数据,这个准备时间最小为25ns,我们必须在25ns以后读数据才能读到有效的数据;
联系上面FSMC的读时序,原子哥把DATAST设置成3,就是4个HCLK周期,对STM32F1来说,一个HCLK=13.8ns(1/72M),4个周期即56ns,大于25ns,OK;
然后就是RD非高电平持续时间(时序图就是tAA-tDOE那一段),对应FSMC时序图中就是(ADDSET+1)个HCLK时钟周期那一段,由于SRAM对这一段没有特别要求,于是可以设置成0,并且由于SRAM的tRC(读周期)最快为55ns,我们在设置DATAST的时候就满足了这个要求,因此ADDSET可以设置成0,OK。

STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间

STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间
STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间

写操作

一、FSMC写时序(FSMC输出)

STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间
与读操作同理,原子哥配置FSMC读写操作用的相同的时序,把DATAST设置成3,WR非输低电平持续3个HCLK周期,对STM32F1来说,一个HCLK=13.8ns(1/72M),3个周期即42ns;对应到SRAM的读时序中,就是tPWE的时长,大于40ns,因此也是OK的。

二、SRAM写时序(SRAM输入)

STM32FSMC外扩SRAM时序,地址建立时间,数据建立时间