SDRAM与STM32的FMC时序详解

2019-07-21 01:39发布

本文以STM32F746-DISCO为实例

SDRAM主要参数

Column addressing:256 A[7:0]
Bank addressing:4 BA[1:0]
Row addressing:4K A[11:0]
Speed Grade:-6A/-6/-7
Clock Frequency(MHz):167/167/143
tRCD-tRP-CL:3-3-3/3-3-3/3-3-3
tRCD(ns):18/18/20
tRP(ns) :18/18/20
CL(ns) :18/18/21

寄存器值与SDRAM参数

FMC_SDCR

  • CAS[1:0] <--> CL=CAS(READ)latency
  • SDCLK[1:0] <--> SDRAM clock
  • RPIPE[1:0] <--> 读延时与SDRAM无关
  • NB <--> 2/4 Banks
  • MWID[1:0] <--> 位宽(8/16/32)
  • NR[1:0] <--> 行地址位宽
  • NC[1:0] <--> 列地址位宽

FMC_SDTR

  • TRCD[3:0] <--> tRCD
  • TRP[3:0] <--> tRP
  • TWR[3:0] <--> tWR(WRITE recovery time)
  • TRC[3:0] <--> tRC/tRFC(ACTIVE-to-ACTIVE command period/AUTO REFRESH period)
  • TRAS[3:0] <--> tRAS(ACTIVE-to-PRECHARGE command)
  • TXSR[3:0] <--> tXSR(Exit SELF REFRESH-to-ACTIVE command)
  • TMRD[3:0] <--> tMRD(LOAD MODE REGISTER command to ACTIVE or REFRESH command)

FMC_SDRTR

  • COUNT[12:0] <--> COUNT = (SDRAM refresh period / Number of rows) - 20

SDRAM初始化时序

  1. 上电且时钟开启后,除INHIBIT/NOP,100us内不应发送任何命令
  2. 然后,执行至少1次INHIBIT/NOP命令
  3. 执行PRECHARGE-ALL命令,等待tRP的时间,期间应执行NOP/DESELECT命令
  4. 至少执行2次AUTO-REFRESH,中间等待tRFC时间,期间允许执行INHIBIT/NOP命令
  5. 执行完LMR命令后,等待tMRD时间,期间允许执行NOP/DESELECT命令
  6. 必要时,随后执行2次AUTO-REFRESH命令
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。