STM32 FMC

2023-02-10
3分钟阅读时长

SDRAM

SDRAM 概念

  1. STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,例如 STM32F767 的 RAM=512K,FLASH=1024K;
  2. 当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器;
  3. PC 机上的内存条实质是多个内存颗粒(SDRAM)芯片组成的通用标准模块,而 STM32 则直接与 SDRAM 芯片连接;
  4. 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 概念

  1. STM32F7xx 使用 FMC 外设来管理扩展的存储器,FMC 是 Flexible Memory Controller 的缩写,译为可变存储控制器,可变存储控制器是一种接口,可以连接同步或异步存储器,16 位 PC 存储卡和 LCD 模块。其主要作用是: 负责向外部扩展的存储类设备提供控制信号
  2. FMC 可以用于驱动下列类型的存储器

    1. SRAM
    2. SDRAM
    3. NOR FLASH
    4. NAND FLSAH
  3. 特别地:

    1. 在 STM32F1、F3、F4 系列微控制器中,只有 FSMC 控制器 (Flexible Static Memory Controller),译为可变静态存储控制器;
    2. 它们不能驱动 SDRAM 这样的动态存储器,因为驱动 SDRAM 时需要定时刷新;
    3. 仅 STM32F7xx 的 FMC 外设支持该功能,且只支持普通的 SDRAM,不支持 DDR 类型的 SDRAM;

FMC 外设结构

有关 FMC 的外设结构框图可以参考《野火 STM32 HAL 库开发实践指南》

  1. FMC 接口的时钟信号来自 HCLK,连接 FMC 外设配置寄存器
  2. FMC 包含 NOR/PSRAM 存储器控制器、NAND/PC 卡存储器控制器、SDRAM 控制器等。
  3. 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# 列地址选通信号

其中需要注意的,比较特殊的部分是:

  1. FMC_A[15:14] 引脚用作 Bank 的寻址线;FMC_SDCKE 线和 FMC_SDNE 都各有 2 条,FMC_SDCKE 用于控制 SDRAM 的时钟使能,FMC_SDNE 用于控制 SDRAM 芯片的片选使能;
  2. 它们用于控制 STM32 使用不同的存储区域驱动 SDRAM,使用编号为 0 的信号线组会使用 STM32 的存储器区域 1,使用编号为 1 的信号线组会使用存储器区域 2。使用不同存储区域时,STM32 访问 SDRAM 的地址不一样
下一页 STM32 RGBLCD