Micro2440 SDRAM初始化实验
1、BWSCON(位宽和等待寄存器)
通过上面两个图可以发现这个寄存器每四位控制一个bank,所以我们只需要配置第7的这四个位。
ST7:配置为0,不是用UB/LB,通过芯片连接图可得知
WS7:配置为0,不初始化为等待。
DW7:位宽为32位,则配置为10。
BANK6也控制着SDRAM,所以配置一样,其他配置为0
则这个寄存器配置为0x22000000
2、BANKCONx(BANK控制寄存器)
不使用,直接配置成默认值。
3、BNAK控制寄存器
配置BANKCON6,7.
MT:配置成11,表示配置为SDRAM
最后配置后三位:
Trcd:通过前面的时序图可配置成为2clocks,则为00
SCAN:通过SDRAM芯片手册可以知道,为9bit,则配置成01.
则这个寄存器配置为0x22000000。
4、REFRESH(刷新寄存器)
配置这个寄存器
REFEN:配置为1,使能SDRAM刷新寄存器。
TREFMD:配置为0,自动刷新。
Trp:看数据手册,上面显示为两个时钟信号,配置为00
Tsrc:默认为7个clock,配置为11。
Reserved:配置为0。
Refresh Counter:直接配置为1269
则整个寄存器配置为:0x008c04f5
5、BANKSIZE
BURST_EN:支持突发传输,配置为1。
SCKE_EN:节能模式,配置为1。
SCLK_EN:配置为推荐的1。
BK76MAP:配置为001由两片32位芯片配置而成。
最后配置为:0x000000b1.
6、模式设置寄存器MRSRBx
其它固定,只配置CL,CAS的潜伏期
由数据手册可得:
CLOCK为3,则配置为011
整个寄存器配置为:0x00000030
代码如下:
#define men_contrl 0x48000000
init_sdram:
ldr r0, =men_contrl @起始地址保存在r0中
add r3, r0, #4*13 @每个寄存器为4位,13个
adr1 r1, men_data @把men_data的地址传给r1
0:
ldr r2, [r1], #4
str r2, [r0], #4
cmp r0, r3 @比较两个地址
bne 0b @往前跳转
mov pc, lr
men_data:
@存储控制器的13个寄存器的设置值
.long 0x22000000 @BWSCON
.long 0x00000700 @BANKCON0
.long 0x00000700 @BANKCON1
.long 0x00000700 @BANKCON2
.long 0x00000700 @BANKCON3
.long 0x00000700 @BANKCON4
.long 0x00000700 @BANKCON5
.long 0x00018001 @BANKCON6
.long 0X00018001 @BANKCON7
.long 0x008C04f5 @REFRESH
.long 0x000000B1 @BANKSIAZE
.long 0x00000030 @MRSRB6
.long 0x00000030 @MRSRB7
下一篇: PHP5如何连接不上MySQL数据库