硬件设计篇
首先是BANK0 的选择, 如果是把BANK0 选择连接NAND Flash,需要引脚OM1 和OM0的状态 如果是都设置成0 是NAND FLASH 模式。。 NANDFlash 模式会自动的
NANDFLASH前4MB的内容拷贝到内存中来。
其次是S3C2440 的SDRAM的引脚如下:
nSRAS: SDRAM行选择引脚
nSCAS: SDRAM 列选择引脚
nSCS: 片选信号
DQM[3:0]: 掩码,就是为了屏蔽不需要的位, 比如一个连接了32位的芯片需要写入一个8bit的数据,那么其他的的位就会被掩码屏蔽
SCLK:时钟
SCKE: 时钟使能
nBE[3:0]:DATA mask。 因为每次SDRAM只能从内核提取8bit的数据,这个DQM是为了当用户选择了32位 16位数据的时候 区分高八位和第八位用的。 一般连接SDRAM的 LDQM和HDQM上面。LDQM连接DQM0 HDQM连接DQM1(只是对于16bit的SRAM)
nWBE: Write Byte Enable
其中nBE 、 nWBE,还有 DQM共用一个引脚阵列 他们的关系如下:
如果连接ROM 则 nWBE 需要连接在芯片的nWE引脚。 byte enable
如果要是连接SRAM 则 nWE连接芯片上面的nWE引脚 SRAM上面的UB和LB分别连接在BE0和BE1上面
如果连接在SDRAM上面则 DQM0 需要连接芯片上面的LDQM DQM1需要连接到UDQM上面。
下面看芯片手册:
1. CLK 接连芯片的SDRAM CLK上面
2. CKE: Clock enable
3. BA0 和BA1 这两个形成了一个选择器可以选择SDRAM里面四个BANK (0,1,2,3)
5 CS: 片选
6. CAS:列地址选择
7. RAS: 行地址选择
8. WE: 写使能
9. LDQM 和UDQM 掩码。。
时序的操作
根据手册来确定程序和时序的走向:
1. 我们用的SDRAM是EM63A165TS
2. 首先来看BWSCON: 由于我们把SDRAM设置到了bank 6 上面所以我们要看的寄存器是:
ST6: 是否用了UB 和LB 由于是SDRAM只是用到了DQM而不是UB/LB故为0
WS6:等待。 由于没有用到等待所以为0 (SDRAM没有等待的引脚)
DW6: 位宽 选择16位
3. 设置BANKCON6 由于是SDRAM 所以MT设置成11
Tac : 片选之前地址建立的时间 由于HCLK为100M 所以为此位可以位0
cos 由于时间很短可以设置成0
最后一位SCAN:由于手册上面列是9 所以是选择01
4. 设置refresh 寄存器:
22 23位都是1 来刷新SDRAM
Trp手册是21ns HCLK是100M(10ns)所以应该是01 3个时钟周期(10*3 》 21ns)
刷新频率: 手册上面频率是8192 刷新64ms 代入公式 Refresh period = (2^11-refresh_count+1)/HCLK
为1267
5 bank Size: 使用突发模式 第七位设置为1
第五位: SDRAM可以进入休眠状态
第四位:SCLK只是在进入SDRAM访问的时候才执行
第2:0位:选择64M
6: MRSRB6 : 0x20