最新的TinyADK(1312),内存芯片为K4X2G32PD,内存初始化弄完了,代码如下:
#define P1MEMSTAT (*(volatile unsigned int *)0x7E001000)
#define P1MEMCCMD (*(volatile unsigned int *)0x7E001004)
#define P1DIRECTCMD (*(volatile unsigned int *)0x7E001008)
#define P1MEMCFG (*(volatile unsigned int *)0x7E00100C)
#define P1REFRESH (*(volatile unsigned int *)0x7E001010)
#define P1CASLAT (*(volatile unsigned int *)0x7E001014)
#define P1T_DQSS (*(volatile unsigned int *)0x7E001018)
#define P1T_MRD (*(volatile unsigned int *)0x7E00101C)
#define P1T_RAS (*(volatile unsigned int *)0x7E001020)
#define P1T_RC (*(volatile unsigned int *)0x7E001024)
#define P1T_RCD (*(volatile unsigned int *)0x7E001028)
#define P1T_RFC (*(volatile unsigned int *)0x7E00102C)
#define P1T_RP (*(volatile unsigned int *)0x7E001030)
#define P1T_RRD (*(volatile unsigned int *)0x7E001034)
#define P1T_WR (*(volatile unsigned int *)0x7E001038)
#define P1T_WTR (*(volatile unsigned int *)0x7E00103C)
#define P1T_XP (*(volatile unsigned int *)0x7E001040)
#define P1T_XSR (*(volatile unsigned int *)0x7E001044)
#define P1T_ESR (*(volatile unsigned int *)0x7E001048)
#define P1MEMCFG2 (*(volatile unsigned int *)0x7E00104C)
#define P1_chip_0_cfg (*(volatile unsigned int *)0x7E001200)
#define nsToMT(ns) (ns*0.2+1)
/*ns*10^-9=T/200*10^6<==>T=ns*0.2*/
//#define nsToAT(ns) (ns*0.8+1)/*ns*10^-9=T/800*10^6<==>ns*0.8*/
/*ACLK=800MHZ HCLK=200MHZ*/
/*参数参考
http://hard.zol.com.cn/2004/0330/90618.shtml*/
void ddr_init()
{
int A_time;
int M_time;
P1MEMCCMD=0x4;/*使得存储器进入配置状态*/
/*配置时间参数*/
P1REFRESH=nsToMT(7800);/*刷新周期为7.8us*/
P1CASLAT=(3<<1);/*列地址选通延迟为2or3tCK*/
P1T_DQSS=1;/*数据选通延迟为0.75tCK~1.25tCK*/
P1T_MRD=0x2;/*读写转换时间2tCK*/
P1T_RAS=nsToMT(40);/*行活动时间40ns*/
P1T_RC=nsToMT(55);/*行地址循环时间*/
M_time=nsToMT(15);
A_time=M_time-3;
P1T_RCD=(A_time<<3)|M_time;/*从行有效到读写命令的发出之间的间隔*/
M_time=nsToMT(120);
A_time=(M_time-3);
P1T_RFC=(A_time<<5)|M_time;/*自动刷新周期*/
M_time=nsToMT(15);
A_time=(M_time-3);
P1T_RP=(A_time<<3)|M_time;/*设置行延迟时间*/
P1T_RRD=nsToMT(10);/*设置库之间跳转时间*/
P1T_WR=nsToMT(12);/*设置写延迟时间*/
P1T_WTR=2;/*从写转到读所要的时间,这里只找不到参数,只能用默认值*/
P1T_XP=2;/*Power down exit time*/
P1T_XSR=nsToMT(120);/* 退出时自我刷新时间*/
P1T_ESR=nsToMT(120);/*退出时刷新命令时间*/
/*存储器芯片配置*/
P1MEMCFG=0x1001A;
P1MEMCFG2=0xb4d;/*1011 0100 1101*/
P1_chip_0_cfg&=~(1<<16);/*设置为行,页,列结构*/
/*存储器初始化序列*/
P1DIRECTCMD=0xC0000;/*NOP*/
P1DIRECTCMD=0x00000;/*Prechargeall*/
P1DIRECTCMD=0x40000;/*自动刷新*/
P1DIRECTCMD=0x40000;/*自动刷新*/
P1DIRECTCMD=0xA0000;/*EMSR*/
P1DIRECTCMD=0x80034;/*MSR*/
/*准备好*/
P1MEMCCMD=0x00;
while((P1MEMSTAT&0x3)!=1);
}
将代码拷贝进去运行没有成功,有成功过的?我的QQ是2456642630