TI中文支持网
TI专业的中文技术问题搜集分享网站

DM642通过EMIF扩展2片32MB的SDRAM

SDRAM的读写程序在购买的开发板上能正常,但是在我自己做的板子上会出现下面的情况:

1:读写程序程序如下时,会打印错误地址,观察memory串口,里面的数据没有写进去

for(block = 0;block <0x20000;block++)
{
    for(i = 0;i<0x100;i++)
    {
        *((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8))) = i;

    }

    /*read and check*/
    /* for(i = 0;i<0x100;i++)
    {
        check = *((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8)));
        if(check != i)
        {
            for(;;)
            {
                printf("the error address is 0x%x\n",DM642_SDRAM_BASE + i+(block<<8));
                break;
            }
        }
    }
}

2:读写程序程序如下时,就不会打印错误地址,观察memory串口,里面的数据正常写进去

for(block = 0;block <0x20000;block++)
{
    for(i = 0;i<0x100;i++)
    {
        *((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8))) = i;

        printf("0x%x\n",*((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8))));             //比上段程序加了这一句

    }

    /*read and check*/
    /* for(i = 0;i<0x100;i++)
    {
        if(check != i)
        {
            for(;;)
            {
                printf("the error address is 0x%x\n",DM642_SDRAM_BASE + i+(block<<8));
                break;
            }
        }
    }
}

程序2只是比程序1加了一句printf,然后就读写正常了,这个是什么原因呢?

Chris Meng:

Jacky,

你如果降低SDRAM的频率对你的问题是否有改善?

SDRAM是否有时序需要调整?

Jacky Yan:

回复 Chris Meng:

我的EMIF时钟设置为CPUCLK/6=100MHz,SDRAM的时钟接到ECLKOUT1上,SDRAM的时钟也就是100MHz,这个时钟好像不好再降低了。

因为这个时序设置在买回来的开发板上可以运行,然后我自己的板子就是照着这个板子做的。时序我也做了一些调整了,但是还是会有这个问题。

Chris Meng:

回复 Jacky Yan:

Jacky,

谢谢更新。原来是硬件焊接问题导致的不稳定。

赞(0)
未经允许不得转载:TI中文支持网 » DM642通过EMIF扩展2片32MB的SDRAM
分享到: 更多 (0)