LDR R0,=0X30000000
➡CPU发给内存控制器:①发出nGCS6;②根据(SDRAM)类型拆分地址:a,BANK地址,b,行地址, c,列地址 ;③读数据
LDR R1,[R0]
问题:如何拆分?行地址几条?列地址几条?
2440内存控制器设置
1、BWSCON寄存器配置=0x22000000
2、BANKCON6寄存器配置
3、REFRESH刷新寄存器配置
4、BANHSIZE配置
5、MRSRB6
SDRAM中有一个MR寄存器(含有CL),用来确定列地址到发出数据中间间隔的时间,而2440内的MRSRB6寄存器也有一个CL,2440根据内部CL设定的值,再通过发送数据去确定SDRAM中的CL,从而确定列地址到发出数据中间间隔的时间。
代码:
init.h
#ifndef _INIT_H
#define _INIT_H
void sdram_init(void);
int sdram_test(void);
#endif
init.c
#include "s3c2440_soc.h"
void sdram_init(void)
{
BWSCON = 0x22000000;
BANKCON6 = 0x18001;
BANKCON7 = 0x18001;
REFRESH = 0x8404f5;
BANKSIZE = 0xb1;
MRSRB6 = 0x20;
MRSRB7 = 0x20;
}
int sdram_test(void)
{
volatile unsigned char *p = (volatile unsigned char *)0x30000000;
int i;
// write sdram
for (i = 0; i < 1000; i++)
p[i] = 0x55;
// read sdram
for (i = 0; i < 1000; i++)
if (p[i] != 0x55)
return -1;
return 0;
}
main.c
#include "s3c2440_soc.h"
#include "uart.h"
#include "init.h"
int main(void)
{
uart0_init();
sdram_init();
if (sdram_test() == 0)
led_test();
return 0;
}
上一篇:jz2440裸机开发与分析:内存控制器3之时序图分析
下一篇:jz2440裸机开发与分析:串口基础知识1
推荐阅读最新更新时间:2024-11-11 09:01
设计资源 培训 开发板 精华推荐
- P5040RDB: QorIQ® P5040参考设计板
- AD9154-M6720-EBZ,带有 ADRF6720 调制器的 DPG3 评估板,用于评估 AD9154 四通道、16 位、2.4 GSPS、TxDAC+ 数模转换器
- 适用于STM32H745ZI MCU,SMPS的STM32 Nucleo-144开发板,支持Arduino,ST Zio和morpho连接
- CH9102F 串口
- 用于简单时钟振荡器的 NCP301LSN46T1 4.6V 电压检测器的典型应用
- LTC2635-LMX8 四路、8 位数模转换器的典型应用
- 使用 Analog Devices 的 LTC3130EUDC 的参考设计
- 【全新版本-实测成功】物联网开关
- 使用 ON Semiconductor 的 ADP1148 的参考设计
- OP213ESZ-REEL 低噪声运算放大器电压基准的典型应用