STM32F407ZGT6自带了192K字节的SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合,STM32F4自带的这些内存就不够用了。比如跑算法或者跑GUI等,就可能不太够用,所以STM32F4开发板板载了一颗1M字节容量的SRAM芯片,XM8A51216,满足大内存使用的需求。我们将使用STM32F4来驱动XM8A51216,实现对XM8A51216的访问控制。

XM8A51216是16位宽512K(512*16,即1M字节)容量的CMOS静态内存芯片。该芯片具有如下几个特点:
⚫高速。具有最高访问速度10/12ns。
⚫低功耗。
⚫TTL电平兼容。
⚫全静态操作。不需要刷新和时钟电路。
⚫三态输出。
⚫字节控制功能。支持高/低字节控制。
XM8A51216的功能框图如图1所示:

STM32F4驱动外部SRAM芯片XM8A51216_第1张图片

图1 XM8A51216功能框图

图中A0~18为地址线,总共19根地址线(即2^19=512K,1K=1024);DQ0~15为数据线,总共16根数据线。CEn是芯片使能信号,低电平有效;OEn是输出使能信号,低电平有效;WEn是写使能信号,低电平有效;BLEn和BHEn分别是高字节控制和低字节控制信号;STM32F4开发板使用的是TSOP44封装的XM8A51216芯片,该芯片直接接在STM32F4的FSMC上,XM8A51216原理图如图2所示:

STM32F4驱动外部SRAM芯片XM8A51216_第2张图片

图2 XM8A51216原理图

从原理图可以看出,XM8A51216同STM32F4的连接关系:
A[0:18]接FMSC_A[0:18](不过顺序错乱了)
D[0:15]接FSMC_D[0:15]
UB接FSMC_NBL1
LB接FSMC_NBL0
OE接FSMC_OE
WE接FSMC_WE
CS接FSMC_NE3
上面的连接关系,XM8A51216的A[0:18]并不是按顺序连接STM32F4的FMSC_A[0:18],不过这并不影响我们正常使用外部SRAM,因为地址具有唯一性。所以只要地址线不和数据线混淆,就可以正常使用外部SRAM。这样设计的好处,就是可以方便我们的PCB布线。