1 FMC STM32芯片特性
1.1 STM32F4xx 系列
- STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器了。扩展内存时一般使用 SRAM 和 SDRAM 存储器,但
STM32F407 系列的芯片不支持扩展SDRAM(STM32F429 系列支持),它仅支持使用 FSMC 外设扩展 SRAM。
- 下图是 Cortex-M4 内核的存储空间分配,右侧是 STM32 FSMC 外设的地址映射。可以看到FSMC 的 NOR/PSRAM/SRAM/NAND FLASH 以及 PC 卡的地址都在 External RAM 地址空间内。
正是因为存在这样的地址映射,使得访问 FSMC 控制的存储器时,就跟访问 STM32 的片上外设寄存器一样(片上外设的地址映射即图中左侧的“Peripheral”区域)。 - FSMC 把整个 External RAM 存储区域分成了 4 个 Bank 区域,并分配了地址范围及适用的存储器类型,如 NOR 及 SRAM 存储器只能使用 Bank1 的地址。在每个 Bank 的内部又分成了 4 个小块,每个小块有相应的控制引脚用于连接片选信号,如 FSMC_NE[4:1] 信号线可用于选择 BANK1 内部的 4 小块地址区域,
当 STM32 访问 0x68000000-0x6BFFFFFF 地址空间时,会访问到Bank1 的第 3 小块区域,相应的 FSMC_NE3 信号线会输出控制信号。
1.2 STM32H743xx 系列
- STM32H743xx 系列芯片都带有 FMC 接口,即可变存储存储控制器,能够与同步或异步存储器、SDRAM 存储器和 NAND FLASH 等连接,STM32H743 的 FMC 接口支持包括 SRAM、SDRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器
- STM32H743 的 FMC 支持 8/16/32 位数据宽度,我们这里用到的 LCD 是 16 位宽度的,所以在设置的时候,选择 16 位宽就 OK 了
- FMC 总共管理 1.5GB 空间,拥有 6 个存储块(Bank),STM32H743 的 FMC 存储块 (Bank1)被分为 4 个区,每个区管理 64M 字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。
2 FMC SRAM 原理
- IS62WV51216 的 SRAM 芯片内部结构框图如下:
IS62WV51216BLL-55ns 型号 SRAM 的时间参数
2.1 计算读时序
2.2 计算写时序
2.3 外设开发
3 FMC SDRAM 扩展
3.1 SDRAM 的信号线
- SDRAM 的驱动需要用到一些命令
3.2 H7 数据手册
3.3 FMC时序开发
3.4 计算读时序
3.5 计算写时序
3.6 SDRAM读写时序参数设置
- tRCD
- 其他时序参数设置
3.7 SDRAM初始化参数设置
3.8 HAL库时序开发
3.8 库函数时序开发
- 参数配置方法
- 1.初始化FMC及SDRAM
- 2.使用指针直接访问 SDRAM映射的地址
- 3.使用编译器强制指定变量定义的地址(必须定义为全局变量)
- 4.使用sct文件实现自动分配变量的地址到SDRAM
3.8 SDRAM使用