本应用笔记提供如何在 APM32F4xx系列上配置和应用 SMC外设,从而访问外部 SRAM存储器。
APM32F4XX SMC简介
SMC,全称是 Static Memory Controller ,即静态存储控制器。该外设用于驱动静态存储设备,比如 SRAM、PSRAM、NandFlash、NorFlash、PCCard 。APM32F4xx SMC内部有四个存储块,每个存储块都对应控制不同类型的存储器,通过配置 SMC控制寄存器选择不同的存储器类型;任一时刻只能访问一个外部设备;每个存储块都可以单独配置,SMC控制时序可编程以适用不同的外部存储设备。
SMC的地址映射
使用 APM32F4xx SMC外设外接存储器扩展存储空间时,外部的存储器存储空间会映射到 MCU的内存存储空间,而且不同的外部存储设备对应不同的地址空间,如下表所示:
| 起始地址 | 结束地址 | 存储块 | 支持存储类型 |
|---|---|---|---|
| 0x60000000 | 0x6FFFFFFF | 存储块 1(4*64M) | NOR/PSRAM |
| 0x70000000 | 0x7FFFFFFF | 存储块 2(4*64M) | NAND |
| 0x80000000 | 0x8FFFFFFF | 存储块 3(4*64M) | NAND |
| 0x90000000 | 0x9FFFFFFF | 存储块 4(4*64M) | PC卡 |
SRAM简介
SRAM,全称是 Static Random Access Memory,它是一种静态随机存取存储器,主要应用于 CPU内部的高速缓存(Cache)或者集成在 MCU内部作为数据存储器。SRAM的所谓的“静态”,指的就是只要保持在通电状态,存储在其内部的数据就可以一直保存,一般是和 DRAM ,即动态存储器相比较而言的。
APM32F4xx SMC与 SRAM的信号引脚连接
尽管市面上有各种不同厂商、不同型号的 SRAM芯片,但是 SRAM芯片的引脚信号基本都是一致的,有地址线、数据线、控制线三种类型。
| APM32 SMC信号引脚 | SRAM信号引脚 | APM32端口或引脚 | 信号说明 |
|---|---|---|---|
| A0 – A18 | A0 – A18 | GPIOD/GPIOF/GPIOG | 地址信号 |
| D0 – D15 | D0 – D15 | GPIOD/GPIOE | 数据信号 |
| SMC_NE[1: 4] | CS# | PD7/PG9/PG10/PG12 | 片选信号 |
| SMC_NOE | OE# | PD4 | 读使能信号 |
| SMC_NWE | WE# | PD5 | 写使能信号 |
| SMC_NLB0 | LB# | PE0 | 数据低字节掩码信号 |
| SMC_NLB1 | UB# | PE1 | 数据高字节掩码信号 |
APM32F4xx SMC外设初始化参数说明
通过 APM32 SMC驱动外部 SRAM芯片时,需要配置 SMC的时序寄存器以及控制寄存器,但是 APM32F4xx的固件库中,对 SMC相关的操作已经封装好了,有两个结构体是比较重要的,分别是时序结构体和初始化配置结构体,下面对这些结构体成员变量作一些解释及配置说明。
296
