STM32F429驱动SDRAM

∥☆過路亽.° 提交于 2020-11-18 18:44:31

1 FMC

  STM32F429以外的控制器中,只有FSMC(可变静态存储控制器),不能驱动SDRAM这样的动态存储器,因为驱动SDRAM时需要定时刷新。STM32F429的FMC才支持该功能,且只支持普通的SDRAM,不支持DDR类型的SDRAM。

FMC可以用于驱动SRAM、SDRAM、NOR FLASH以及NAND FLASH类型的存储器。

1.1 通信引脚

SDRAM引脚 FMC引脚 说明
CLK FMC_SDCLK 同步时钟信号
CKE FMC_SDCKE1

时钟使能信号

CS FMC_SDNE1 片选信号
CAS FMC_NCAS 列地址选通
RAS FMC_NRAS 行地址选通
WE FMC_SDNWE 写使能
DQM[0:1] FMC_NBL[0:1] 数据输入/输出掩码信号
BA[0:1] FMC_A[14:15] SDRAM芯片内部Bank地址输入
A[0:11] FMC_A[0:11] 地址输入
DQ[0:15] FMC_D[0:15] 数据输入/输出

CKE和CS作用:

FMC_SDCKE0,FMC_SDCLK0:FMC映射的SDRAM的存储区域Bank1

FMC_SDCKE1,FMC_SDCLK1:FMC映射的SDRAM的存储区域Bank2

1.2 地址映射

FMC_SDCKE0,FMC_SDCLK0:FMC映射的SDRAM的存储区域Bank1(0xC000 0000~0xCFFF FFFF)

FMC_SDCKE1,FMC_SDCLK1:FMC映射的SDRAM的存储区域Bank2(0xD000 0000~0xDFFF FFFF)

注意:这里的Bank和上面所讲的SDRAM芯片内部存储区域Bank1~4是不一样的概念。

2 SDRAM控制原理

2.1 SDRAM信号线

 2.2 SDRAM地址线

  SDRAM包含有“A”以及“BA”两类地址线:

A:行(Row)与列(Column)共用的地址线

BA:独立的用于指定SDRAM芯片内部存储阵列号(Bank)

   通讯时,当RAS=0,则“行地址选通器”被选通,地址线A[11:0]表示的地址会被输入到“行地址译码器”中,行地址被选中;同时地址线BA[1:0]表示的Bank也被锁存,选中要操作的Bank号;接着CAS=0,则“列地址选通器”被选通,地址线A[11:0]表示的地址会被输入到“列地址译码及锁存器”中作为列地址,完成寻址过程。

2.3 SDRAM数据线

  IS45s16400J存储阵列的“数据宽度”是16位,但在实际应用中也可能会以8位宽度存取数据,这时我们只需要DQ[7:0]表示数据,而DQ[15:8]数据线表示的数据必须忽略。所以数据输入输出时,还会使用DQM[1:0]来配合,每根DQM线对应8位数据。如DQM0=0,DQM1=1时,数据线DQ[7:0]表示数据有效,而DQ[15:8]表示数据无效。

2.4 SDRAM容量计算

  已知IS45s16400J芯片行地址12根线,列地址8根,4个Bank,位宽16bit。

可以计算出:

SDRAM的总单元数 =(2^行地址选择线)*(2^列地址选择线)*Bank选择线=2^(12+8)*4=2^10*4=1M bits*4

SDRAM总容量 = 单元数*位宽=1M bits*4*16=64M bits = 8MB(Bytes)

2.5 SDRAM的命令

(1)命令禁止

(2)空操作

(3)行有效

(4)列读写

(5)预充电

(6)刷新

(7)加载模式寄存器

2.6 SDRAM初始化流程

(1)给SDRAM上电,并提供稳定的时钟,至少100us

(2)发送“空操作”(NOP)命令

(3)发送“预充电”(PRECHARGE)命令,控制所有Bank进行预充电,并等待tPR时间

(4)发送至少2个“自动刷新”(AUTO REFRESH)命令,每个命令后等待tRFC时间

(5)发送“加载模式寄存器”(LOAD MODE REGISTER)命令,配置SDRAM工作参数,并等待tMRD时间

(6)初始化完成,开始读写数据。

2.7 SDRAM的读写流程

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!