STM32 FMC
2023-02-10
3分钟阅读时长
SDRAM
SDRAM 概念
- STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,例如 STM32F767 的 RAM=512K,FLASH=1024K;
- 当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器;
- PC 机上的内存条实质是多个内存颗粒(SDRAM)芯片组成的通用标准模块,而 STM32 则直接与 SDRAM 芯片连接;
- STM32F7 采用的 SDRAM 芯片型号为 W9825G6KH(有些采用 W9825G6JH)。
SDRAM 信号线
SDRAM 芯片控制引脚说明如表。
信号线 | 类型 | 说明 |
---|---|---|
CLK | I | 同步时钟信号,所有输入信号都在 CLK 为上升沿的时候被采集 |
CKE | I | 时钟使能信号,禁止时钟信号时 SDRAM 会启动自刷新操作 |
CS# | I | 片选信号 |
CAS# | I | 列地址选通,为低电平时地址线表示的是列地址 |
RAS# | I | 行地址选通,为低电平时地址线表示的是行地址 |
WE# | I | 写入使能,低电平有效 |
DQM[0:1] | I | 数据输入/输出掩码信号,表示 DQ 信号线的有效部分 |
BA[0:1] | I | Bank 地址输入,选择要控制的 Bank |
A[0:12] | I | 地址输入 |
DQ[0:15] | I/O | 数据输入输出信号 |
FMC 外设概述
FMC 概念
- STM32F7xx 使用 FMC 外设来管理扩展的存储器,FMC 是 Flexible Memory Controller 的缩写,译为可变存储控制器,可变存储控制器是一种接口,可以连接同步或异步存储器,16 位 PC 存储卡和 LCD 模块。其主要作用是: 负责向外部扩展的存储类设备提供控制信号 ;
-
FMC 可以用于驱动下列类型的存储器
- SRAM
- SDRAM
- NOR FLASH
- NAND FLSAH
-
特别地:
- 在 STM32F1、F3、F4 系列微控制器中,只有 FSMC 控制器 (Flexible Static Memory Controller),译为可变静态存储控制器;
- 它们不能驱动 SDRAM 这样的动态存储器,因为驱动 SDRAM 时需要定时刷新;
- 仅 STM32F7xx 的 FMC 外设支持该功能,且只支持普通的 SDRAM,不支持 DDR 类型的 SDRAM;
FMC 外设结构
有关 FMC 的外设结构框图可以参考《野火 STM32 HAL 库开发实践指南》
- FMC 接口的时钟信号来自 HCLK,连接 FMC 外设配置寄存器
- FMC 包含 NOR/PSRAM 存储器控制器、NAND/PC 卡存储器控制器、SDRAM 控制器等。
-
FMC 中与 SRAM 引脚对照表如下
FMC 引脚名 对应 SDRAM 引脚名 说明 FMC_NBL[3:0] DQM[3:0] 数据掩码信号 FMC_A[12:0] A[12:0] 行或列地址线 FMC_A[15:14] BA[1:0] Bank 地址线 FMC_D[31:0] DQ[31:0] 数据线 FMC_SDCLK CLK 同步时钟信号 FMC_SDNWE WE# 写入使能 FMC_SDCKE[1:0] CKE SDCKE0:SDRAM 存储区域 1 时钟使能 SDCKE1:SDRAM 存储区域 2 时钟使能 FMC_SDNE[1:0] – SDNE0:SDRAM 存储区域 1 芯片使能 SDNE1:SDRAM 存储区域 2 芯片使能 FMC_NRAS RAS# 行地址选通信号 FMC_NCAS CAS# 列地址选通信号
其中需要注意的,比较特殊的部分是:
- FMC_A[15:14] 引脚用作 Bank 的寻址线;FMC_SDCKE 线和 FMC_SDNE 都各有 2 条,FMC_SDCKE 用于控制 SDRAM 的时钟使能,FMC_SDNE 用于控制 SDRAM 芯片的片选使能;
- 它们用于控制 STM32 使用不同的存储区域驱动 SDRAM,使用编号为 0 的信号线组会使用 STM32 的存储器区域 1,使用编号为 1 的信号线组会使用存储器区域 2。使用不同存储区域时,STM32 访问 SDRAM 的地址不一样