参考资料:《stm32f4xx中文参考手册》《stm32f4xx规格书》
使用背景:使用LTDC接口显示大容量图片时,FMC驱动SDRAM用作显存
一、SDRAM基本介绍
SDRAM芯片PIN脚图
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:11] | I | 地址输入 |
DQ[0:15] | I/O | 数据输入输出信号 |
二、FMC接口说明
1.FMC简介
STM32F429使用FMC外设来管理扩展的存储器,FMC是Flexible Memory Controller的缩写,译为可变存储控制器。它可以用于驱动包括SRAM、SDRAM、NOR FLASH以及NAND FLSAH类型的存储器。在其它系列的STM32控制器中,FSMC控制器(Flexible Static Memory Controller),译为可变静态存储控制器,所以它们不能驱动SDRAM这样的动态存储器,因为驱动SDRAM时需要定时刷新,STM32F429的FMC外设才支持该功能,且只支持普通的SDRAM,不支持DDR类型的SDRAM。
2.FMC SDRAM控制器引脚说明
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] | CS# | 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(FMC_SDNE0)的信号线组会使用STM32的Bank1,使用编号为1(FMC_SDNE1)的信号线组会使用存储器区域Bank2。使用不同存储区域时,STM32访问SDRAM的地址不一样,Bank1的起始地址为0xC0000000,Bank2为0xD0000000