本人的开发板上得BF548芯片外接的DDR RAM为MT46V32M16 -5B,自己做的板子上用的内存是MT46V32M16 -6T。现在我写了小程序想测试下自己做的板子的DDR RAM 。程序如下:
void PLL_Init(void)
{
*pSIC_IWR0 |= 0x1; // enable PLL wakeup,system interupt control SIC
*pPLL_CTL = 0x2000; // (25MHz Xtal x (MSEL=20))::CCLK=400MH 核心时钟
idle();
*pPLL_DIV = 0x3; // (400MHz/3)::SCLK=133MHz,系统时钟
ssync();
}
void Init_DDR(void)
{
// release the DDR controller from reset state
*pEBIU_RSTCTL |= 0x0001;
ssync();
/* setup DDR controller for MT46V32M16 -5B*/
*pEBIU_AMGCTL = 0x0009; //asynchronous memory global control register
*pEBIU_DDRCTL0 = 0x218A8287;
*pEBIU_DDRCTL1 = 0x20022222;
*pEBIU_DDRCTL2 = 0x00000021;//professor default
ssync();
}
经过以上程序初始化后,向内存中写入数据
#define SDRAM_START 0x00000000 // start address of SDRAM
#define SDRAM_SIZE 0x00003FFF // size of SDRAM in 32-bit words. MT48LC32M8A2 32M x 16 bits (64 MB)
char TEST_SDRAM(void)
{
volatile unsigned int *pDst;
int nIndex = 0;
for(nIndex = 0, pDst = (unsigned int *)SDRAM_START; pDst < (unsigned int *)(SDRAM_START + SDRAM_SIZE); pDst++, nIndex++ )
{
*pDst = nIndex;
ssync();
}
}
从内存窗口观察,在开发板上得到的结果是正确的,在自己做的板子上得到的结果不对,我怀疑是我内存初始化的参数配置的不正确,希望高手能帮我看看,再次不胜感谢。