您好,我最近在学习EBIU接口,在学习EBIU接口的例程时,程序如下:
然后我用的是ADSP-EDU-BF53X开发板,我看电路原理图上的EBIU接口是连接到一块SDRAM,感觉很奇怪,SDRAM是同步存储器,但是程序中都有初始化EBIU中的异步时序,即EBIU_AMGCTL EBIU_AMBCTL0和EBIU_AMBCTL1;不知道为什么,感觉好像不用啊,还是说这三个寄存器是一定要初始化的,我看SDRAM的例程也是要这样,感觉有点乱,求解答,谢谢。。。。
#include <cdefBF533.h>
#include <sys\exception.h>
#define pADDR (volatile unsigned short *)0x1000
EX_INTERRUPT_HANDLER(TIMER0_ISR);
void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}
void main(void)
{
int i;
Set_PLL(16,3);
Init_EBIU();
Init_SDRAM();
*pADDR = 0x1234;
i = *pADDR;
printf("addr is %x\n",pADDR);
printf("data is %x\n",i);
*pADDR = 0xaa55;
i = *pADDR;
printf("addr is %x\n",pADDR);
printf("data is %x\n",i);
while(1);
}