关于SDRAM在STM32系统中的应用
-
SDRAM(以W9825G6KH为例)
CLK:时钟 System clock used to sample inputs on the rising edge of clock.
CKE:时钟使能 CKE controls the clock(时钟) activation and deactivation. When CKE is low, Power Down mode, Suspend mode, or Self Refresh mode is entered名词解释
突发长度 – 突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
预充电 –由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank(逻辑 Bank)的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。
刷新: –刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电操作还要进行刷新呢预充电是对一个或所有L-Bank中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称SR)。
自动刷新: SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成要
刷新的行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址。刷新涉及到所有
Bank,因此在刷新过程中,所有 Bank 都停止工作,而每次刷新所占用的时间为 9 个时钟周期
( PC133 标准),之后就可进入正常的工作状态,也就是说在这 9 个时钟期间内,所有工作指
令只能等待而无法执行。刷新操作必须不停的执行,完成一次所有行的刷新所需要的时间,称
为刷新周期,一般为 64ms。显然,刷新操作肯定会对 SDRAM 的性能造成影响,但这是没办法
的事情,也是 DRAM 相对于 SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同
时所付出的代价。
Mode Register Set 即设置模式寄存器。我们通过设置模式寄存器命令,来完成对模式寄存器
的设置,这个命令在每次对 SDRAM 进行初始化的时候,都需要用到。
1.上电。此步,给 SDRAM 供电,使能 CLK 时钟,并发送 NOP( No Operation 命令),注意,上电后,要等待最少 200us,再发送其他指令。
2.ALLBANK预充电。就是发送预充电命令,给所有 Bank 预充电。
3.发送自动刷新命令。至少要发送发送 8 次自刷新命令
4.设置模式寄存器。发送模式寄存器的值,配置 SDRAM 的工作参数。
5.完成配置
初始化参考程序如下
- F429的FMC(灵活存储器控制器)接口
可变存储控制器 (FMC) 包括以下三个存储控制器:
·NOR/PSRAM 存储控制器
· NAND/PC 卡存储控制器
· 同步 DRAM (SDRAM/Mobile LPSDR SDRAM) 控制器
- 将存储器设备的特性编程到 FMC_SDCRx 寄存器中。 SDRAM 时钟频率、 RBURST 和RPIPE 特性必须编程到 FMC_SDCR1 寄存器中。
- 将存储器设备的时序编程到 FMC_SDTRx 寄存器中。 TRP 和 TRC 时序必须编程到FMC_SDTR1 寄存器中。
- 将 MODE 位置为“001”并配置 FMC_SDCMR 寄存器中的目标存储区域位( CTB1 和/或 CTB2)以开始为存储器提供时钟信 ( SDCKE 驱动为高电平)。
- 等待指定延迟周期。典型延迟为 100 us(有关上电后所需延迟的信息,请参见 SDRAM数据手册)。
- 将 MODE 位置为“010”并配置 FMC_SDCMR 寄存器中的目标存储区域位( CTB1 和/或 CTB2)以发送“全部预充电”命令。
- 将 MODE 位置为“011”并配置 FMC_SDCMR 寄存器中的目标存储区位( CTB1 和/或CTB2)和连续自动刷新命令 (NRFS) 的数量。请参见 SDRAM 数据手册了解应发出的自动刷新命令个数。通常为 8 个。
- 配置 MRD 字段,将 MODE 位置为“100”并配置 FMC_SDCMR 寄存器中的目标存储区域位( CTB1 和/或 CTB2)以发送“加载模式寄存器”命令并对 SDRAM 设备进行编程。尤其突发长度 (BL) 必须置“1” 1且必须选择 CAS 延迟。如果两个 SDRAM 存储区域的模式寄存器不同,则此步骤必须重复两次,每个存储区域各一次且目标存储区域位相应置 1。
- 编程 FMC_SDRTR 寄存器中的刷新速率刷新速率对应于刷新周期之间的延迟。其值必须与SDRAM 设备相适应
STM32CUBEMX的配置
-
这是因为F4 FMC对于突发还是单次的读写请求,都按照突发长度为1去处理
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!