自己做了块DM642的板子,仿照瑞泰的DM642试验箱上做的。sdram是HY57V283220(L)T(P)-6,这款数据手册上说的是工作在166MHZ下,但是我测量瑞泰试验箱上实际给的是100MHZ的CLK,我不管是给133还是100MHZSDRAM读写总是有错误,但同样的测试程序在试验箱里测试是正确的,表明代码应该没什么问题。下面是程序的部分代码(EMIF配置部分没有贴出来)
其实就是写进SDRAM去再读出来。
void main()
{
Uint32 i;
Uint8 check = 0;
CSL_init();
EMIFA_config(&emifaCfg0);
for(i=0;i<0x100;i++)
{
*((Uint8*)(SDRAM1_BASE+i)) = i;
}
for(i=0;i<0x100;i++)
{
check = *((Uint8*)(SDRAM1_BASE+i));
if(check!=i)
{
for(;; )
{
printf("wrong number is %d\n",i);
break;
}
}
}
printf("SDRAM1 all right\n");
}
输出的错误情况如下:
wrong number is 16
wrong number is 24
wrong number is 48
wrong number is 56
wrong number is 80
wrong number is 88
wrong number is 112
wrong number is 120
wrong number is 144
wrong number is 152
wrong number is 176
wrong number is 184
wrong number is 208
wrong number is 216
wrong number is 240
wrong number is 248
SDRAM1 all right。
而且我很不明白的就是为什么瑞泰试验箱给的原理图DM642EMIF跟SDRAM数据总线是乱着接的
,我在自己画的时候给对应接起来了,会不会是这儿的原因?希望有做过的给个建议该如何排查问题。谢谢了! |