前言
在整个F4系列的器件,都支持FSMC——灵活的静态存储控制器。而F429支持FMC——可变存储控制器。两者的区别在于,FMC在FMSC的基础上增加了对DRAM的支持。而FSMC和FMC在地址上是重叠的,也就是说,在F429中,是通过FMC直接替代了FSMC,所以,在F429的学习中,直接学习FMC即可,不用两者同时学习。
本文只介绍FMC中SRAM部分,其余的部分待以后补充。
本文主要参考资料为:
- ST.RM0090
- 正点原子.STM32F429开发指南-HAL库版本_V1.1
框图
上图是整个FMC的框图。其中与SRAM相关的管脚,已经用红色标红。具体如下:
- NBL[3:0]:字节控制
- A[25:0]:地址线
- D[31:0]:数据线
- NE[4:1]:片选信号
- NOE:读信号使能
- NWE:写信号使能
- NWAIT:等待
外部器件地址映射
整个FMC划分为6个固定大小的存储区域,如上图所示,每个存储区域的大小为256MB。其中,SRAM在BANK1中。BANK1被划分成4个子区域,带有4个片选信号,上文已经介绍。
其中,映射地址(HADDR)的第26位与第27位用于选择四个存储区域。在上图表格中已经列出。
HADDR[25:0]则对应地址输出管脚,对应外部存储器的地址。HADDR是按照字节编址,即数据宽度为8位。若存储器的数据宽度不同,则FMC向存储器发送的地址也将不同,如下表所示。
注意:
若外部存储器的宽度为16位,FMC将使用HADDR[25:1]地址来作为对外部存储器的寻址地址,即地址线上输出的地址为A[24:0]。 则无论外部存储器的宽度是多少,都应将FMC_A[0] 连接到存储器地址 A[0] 。则每个存储区域的子区域的最大存储容量为512Mb(64MB)。
时序
如果使能扩展模式,则最多可以提供四种扩展模式,并且可以组合不同的模式来分别配置读写操作。
如果禁用扩展模式,则只有两种模式可以选择。
本文不再详细分析每一种模式,而是通过与35510的时序对比的方式,重点介绍拓展模式中的模式A。
上图文档详细介绍了模式A的时序图以及寄存器的配置方法。
其中第一个寄存器是功能配置,这里不再详细介绍,下面重点介绍一下时序的配置。
通过观察时序图,可以发现,共有三个时间可以配置,分别为:
- 存储器事物时间,对应寄存器为:BUSTTURN
- ADDSET时间,对应寄存器为:ADDSET
- DATAST时间,对应寄存器为:DATAST
他们的取值范围为:
若以显示器nt35510为例,该时序为:
很容易找到该时序前6项与FMC的A模式对应关系。