MCU之SDRAM参数配置

电子说

1.3w人已加入

描述

本公司目前MCU系列,到目前为止, SWM34x 支持外接8M16M SDRAM,SWD34S系列已经把SDRAM合封入芯片,合封的SDRAM大小根据芯片型号不同,具体见官方手册。

在SDRAM使用过程中,需要对SDRAMC控制的各个参数进行配置,具体参数如下表格,不同系列芯片参数稍微有点区别,但是配置原理一样。下面以SWM34x  SDRAM_CTRL控制器外接Winbond W9812G6KH-6为例进行参数配置说明。

表一 MCU端需要配置的参数

  参数名字
  MCU端需要用到的参数
  Bank
  RowAddr
  ColAddr
  CASLatency
  RR
  RFC
  RP
  RCD
  WR
  RAS
  RC
  RRD
  XS
  RD_Delay

以SWM34x 为例

分别说明表一中各项参数的计算方法

1、Bank:指的是SDRAM分了几个块,这个在SDRAM芯片手册里面有说明,如W9812G6KH-6文档中列明Bank等于4

如下图

寄存器

2. RowAddr:SDRAM中每个bank单元每一页的地址,如W9812G6KH-6 一个Bank有4096个页,所以页地址占用12bit,故RowAddr=12。

3. ColAddr:SDRAM中每个Bank单元每一页中每一行的地址,如W9812G6KH-6 一个Bank有4096个页,每页有512行,所以行地址暂用9bit,故ColAddr=9,根据寄存器规范,PageSize需设置为0x001

图下图

寄存器

4. RR: SDRAM的REFRESH_RATE,即刷新频率,根据W9812G6KH-6芯片手册,刷新周期为64mS,在150M时钟下,则一个clk=6.67nS, RR的计算公式为64000000(nS)/4096(页数量)/6.67nS(每一个clk的时间)=需要的clk数量。所以RR=0x926.

5. RFC(从刷新或加载模式到刷新或激活的最小CLK周期数): SDRAM的手册有列明参数最小值,以W9812G6KH-6芯片手册为例,RFC最小值为60nS(图3), 在MCU工作在150M时钟下,转换成寄存器值:RFC=60ns/6.67=8,即可得SDRAM需要的最小值8(图4)。

寄存器

(图3)

寄存器

(图4)

6. RP(从预充电到激活或刷新的最小CLK周期数):SDRAM手册会有写明,如W9812G6KH-6芯片RP=15nS,MCU端计算RP方法为RP=15nS/6.67=2.

7. RCD(从激活到读取或写入的最小CLK周期数):SDRAM手册会有写明,如W9812G6KH-6芯片RCD=15nS, MCU端计算RCD方法为RCD=15nS/6.67=2.

8. WR(从上次写入传输到预充电的最小CLK周期数): 固定为2.

9. RAS(从激活到预充电的最小CLK周期数): SDRAM手册会有写明,如W9812G6KH-6芯片RCD=42nS, MCU端计算RAS方法为RAS=42nS/6.67=6.

10. RC(从激活到激活的最小CLK周期数): SDRAM手册会有写明,如W9812G6KH-6芯片RC=60nS, MCU端计算RC方法为RC=60nS/6.67=8. 如下图

寄存器

11. RRD(对于不同的bank,从激活到激活的最小CLK周期数): SDRAM手册会有写明,如W9812G6KH-6芯片RRD=12nS, MCU端计算RRD方法为RRD=12nS/6.67=1.

12. XS(从自刷新退出到发出任何命令的最小CLK周期数减1): SDRAM手册会有写明,如W9812G6KH-6芯片RRD=72nS, MCU端计算XS方法为XS=72nS/6.67=10.

13. CASLatency:等于3或者2.

14. RD_Delay: 等于CASLatency、或等于CASLatency+1.

实际应用

如果SWM34x 系统频率为150M,则SDRAM控制器读写W9812G6KH-6(16M SDRAM),各项参数配置如下:

SDRAM_InitStruct.ClkDiv = SDRAM_CLKDIV_1;

SDRAM_InitStruct.NbrBank = 2;//SDRAM_BANK_4

SDRAM_InitStruct.NbrRowAddr = 12;//SDRAM_ROW_12

SDRAM_InitStruct.NbrColAddr = 1;//SDRAM_COLUMN_9

SDRAM_InitStruct.CASLatency =3;// SDRAM_CASLATENCY_3

SDRAM_InitStruct.TimeTRC  =8 ;

SDRAM_InitStruct.TimeTRRD = 1;

SDRAM_InitStruct.TimeTRCD = 2;

SDRAM_InitStruct.TimeTRAS = 6;

SDRAM_InitStruct.TimeTRP  = 2;

SDRAM_InitStruct.TimeRFC  =8;

SDRAM_InitStruct.TimeTXS=10;

SDRAMC->T64 = 0x926;

SDRAMC->RDDELAY = SDRAM_InitStruct.CASLatency+1;

(以上只介绍了配置方法,部分参数并没有完全配对,需要修改验证)






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分