S3C2440--存储控制器
1.什么是存储控制器
存储控制器说白了就是创建和控制其他存储设备的一种设备.在S3C2440中存储控制器的起始地址为0x48000000结束地址为0x48000030.通过配置存储控制器提供的13个寄存器的具体数值来达到访问外围设备的目的.
2.如何得到外围设备的访问地址
在说明得到外围设备地址之前不得不先说明一下什么是片选信号.
在S3C2440中共分为nGCS0~nGCS7共8个片选信号分别对应了BANK0~BANK7,当需要访问外围设备的空间时(即访问BANKX时),nGCSX引脚输出低电平信号,这样选择相对应的BANKx外围设备来访问.
(注:nGCS0~nGCS7在S3C2440手册中可以查找地址分配表)
BANK访问地址=BANK起始地址+地址线地址.
3.存储控制器寄存器使用:
3.1存储控制器提供了那些寄存器:
BWSCON, BANKCONx(x=0~7), REFRESH, BANKSIZE, MRSRB6, MRSRB7共13个寄存器. 在这些寄存器中配置中当配置BANK0~BANK5的时候只需要配置BWSCON, BANKCONx(x=0~5)即可,由于BANK6,BANK7,多用于外接SDRAM 所以配置的时候除配置BWSCON, BANKCONx(x=6~7)外还需要配置REFRESH, BANKSIZE, MRSRB6, MRSRB7等4个寄存器信息.
3.1.1BWSCON--位宽和等待寄存器:
BWSCON共32位(貌似是废话),BWSCON高4位对应了外设的BANK7,然而BWSCON是每4位对应一个BANK所以一次类推可以得到其余BANK6~BANK0的对应位数.
STx(x= 0~7):启动/禁止SDRAM数据掩码引脚,对伊SDRAM此位为0,对于SRAM此位为1;
WSx(x= 0~7):是否使用存储器的WAIT信号,通常设为0. /*0 = WAIT disable*/
DWx(x= 0~7):用2为来对应相应的BANK位宽,00 = 8-bit 01 = 16-bit, 10 = 32-bit 11 = reserved
比较特殊的是BANK0 他没有ST0,WS0 且DW0[2:1]为只读--由硬件电路跳线决定01 = 16-bit, 10 = 32-bit。
BANKCONx(x= 0~5): 用来控制外接设备的访问时序,默认设置0X0700可以满足使用需求.
/*****************************************************************************/
BANKCONx(x= 6~7): 在8个BANK中只有BANK6和BANK7可以用来外接SRAM或SDRAM 所以在配置BANK6~BANK7会有所不同.
MT[16:15]位:用来标识外接的设备是ROM/SRAM还是SDRAM, /*00 = ROM or SRAM 01 = Reserved (Do not use) 10 = Reserved (Do not use) 11 = Sync. DRAM*/
当MT=0b00时(即外接ROM)此时设置与BANK0~BANK5并无多大差异.
当MT=0b11时(即外接SDRAM).
Trcd[3:2]: RAS to CAS delay(内存行地址传输到列地址的延迟时间) /*00 = 2 clocks 01 = 3 clocks 10 = 4 clocks*/
SCAN[1:0]:表示SDRAM列的地址为 可根据具体芯片情况设置 /*00 = 8-bit 01 = 9-bit 10= 10-bit*/
REFRESH:刷新控制寄存器.
REFEN[23]: 控制SDRAM刷新功能 /*0 = Disable 1 = Enable (self or CBR/auto refresh)*/
TREFMD[22]:SDRAM刷新模式 /*0 = CBR/Auto Refresh 1 = Self Refresh (休眠模式)*/
Trp[21:20]: SDRAM RAS pre-charge Time /*00 = 2 clocks 01 = 3 clocks 10 = 4 clocks 11 = Not support*/
Tsrc[19:18]:SDRAM Semi Row cycle time /*00 = 4 clocks 01 = 5 clocks 10 = 6 clocks 11 = 7 clocks*/
Refresh Counter[10:0]:SDRAM refresh count value.
BANKSIZE:
BURST_EN[7]: ARM core burst operation enable /*0 = Disable burst operation. 1 = Enable burst operation.*/
SCKE_EN[5]: SDRAM power down mode enable control by SCKE /*0 = SDRAM power down mode disable. 1 = SDRAM power down mode enable*/
SCLK_EN[4]: SCLK is enabled only during SDRAM access cycle for reducing power consumption. When SDRAM is not accessed SCLK becomes 'L' level.
/*0 = SCLK is always active. 1 = SCLK is active only during the access (recommended).*/
BK76MAP[2:0]: 设置BANK6~BANK7的大小,
/* 010 = 128MB/128MB 001 = 64MB/64MB
000 = 32M/32M 111 = 16M/16M
110 = 8M/8M 101 = 4M/4M
100 = 2M/2M
*/
MRSRBx(x= 6~7):SDRAM模式设置寄存器:
能做修改的只有CL[6:4]:这位代表的是SDRAM时序的一些参数. /*000 = 1 clock, 010 = 2 clocks, 011=3 clocks
Others: reserved*/
阅读(2436) | 评论(0) | 转发(0) |