您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> EBIU和SDRAM
本帖共有1763个阅读者
发表帖子 发表投票 回复主题
EBIU和SDRAM
HXHNTTXLLA(论坛新手)
HXHNTTXLLA
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:174
积分:10
注册时间:2011/9/22
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
EBIU和SDRAM

您好,我最近在学习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);

}



ADSP,让我们一起奋斗!
等级:论坛新手 参考IP地址:*.*.*.*
2011/12/16 8:05:36
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

如果仅仅使用SDRAM,可以不初始化异步寄存器,这个代码可以不初始化。

其他的代码,因为涉及到CPLD操作,CPLD是采用EBIU来控制的,所以必须初始化异步寄存器。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/12/16 10:39:49
HXHNTTXLLA(论坛新手)
HXHNTTXLLA
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:174
积分:10
注册时间:2011/9/22
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
哦  谢谢版主。。。

ADSP,让我们一起奋斗!
等级:论坛新手 参考IP地址:*.*.*.*
2011/12/17 8:24:48
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159287 Call, 1 Queries, Processed in 0.031250 second(s),