本文以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初始化时序
上电且时钟开启后,除INHIBIT/NOP,100us内不应发送任何命令
然后,执行至少1次INHIBIT/NOP命令
执行PRECHARGE-ALL命令,等待tRP的时间,期间应执行NOP/DESELECT命令
至少执行2次AUTO-REFRESH,中间等待tRFC时间,期间允许执行INHIBIT/NOP命令
执行完LMR命令后,等待tMRD时间,期间允许执行NOP/DESELECT命令
必要时,随后执行2次AUTO-REFRESH命令 |