这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » SDRAM 关于SDRAM初始化问题

共2条 1/1 1 跳转至

SDRAM 关于SDRAM初始化问题

院士
2006-09-17 18:14:16     打赏
SDRAM 关于SDRAM初始化问题



关键词: SDRAM     关于     初始化     问题    

院士
2006-12-22 22:43:00     打赏
2楼


基于9200开发板,板上SDRAM芯片是 HY57V641620HGT-H(4Banks X 1M X 16bit)两片共16M.
按照数据手册上面的初始化步骤。

SDRAM 器件初始化初始化序列由软件产生。
SDRAM器件初始化序列如下:

1. 开始前最少等待200 µs ;
2. 给SDRAM器件送出所有组预充电命令;
3. 提供8个自动更新(CBR)周期;
4. 一个模式寄存器设置(MRS)周期用以对SDRAM器件参数编程,特别是CAS等待时间与
脉冲长度;
5. tMRD 后3 个时钟周期执行一个正常模式命令;
6. 在SDRAMC 更新定时寄存器的计数域中写入更新速率( 更新速率= 更新循环间延迟)。
经过以上六步后, SDRAM器件可完全使用其功能。

9200DK板的loader.bin中sdram初始化代码,其芯片是MT48LC8M16A2(2M x 16bit X 4Banks)两片32M.
void AT91F_InitSDRAM()
{
    volatile int *pSDRAM = (int *)AT91C_BASE_SDRAM; //0x20000000
    
    /* Configure PIOC as peripheral (D16/D31) */    
    AT91F_PIO_CfgPeriph( AT91C_BASE_PIOC, 0xFFFF0000, 0);

    /*Setup MEMC to support all connected memories (CS0 = FLASH; CS1=SDRAM)*/
    AT91C_BASE_EBI->EBI_CSA = AT91C_EBI_CS1A;
    
    /*Init SDRAM*/
    AT91C_BASE_SDRC->SDRC_CR = 0x2188c155;//根据板上SDRAM芯片参数,对配置寄存器进行设置
    AT91C_BASE_SDRC->SDRC_MR = 0x02;//送出所有组预充电命令
    *pSDRAM = 0;
    AT91C_BASE_SDRC->SDRC_MR = 0x04;//刷新命令
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;
    *pSDRAM = 0;

    AT91C_BASE_SDRC->SDRC_MR = 0x03;//载入模式寄存器    
    *(pSDRAM + 0x80) = 0;
    
    AT91C_BASE_SDRC->SDRC_TR= 0x2e0;//设置刷新脉冲
    *pSDRAM = 0;
    
    AT91C_BASE_SDRC->SDRC_MR = 0;//正常模式
    *pSDRAM = 0;

}

根据分析,根据HY57V641620HGT-H芯片参数修改以下代码;

    AT91C_BASE_SDRC->SDRC_CR = 0xA913954;//根据板上SDRAM芯片参数,对配置寄存器进行设置


在init.c文件中加了SDRAM测试函数,主要是放数据到一地址,再把其读出来。

void AT91F_SdramTest(void)
{
    volatile int *pSDRAM = (int *)AT91C_BASE_SDRAM; //0x20000000
    char* buf = NULL;
    int i = 0;
    for(i = 0; i < 255; i++)
    {
        pSDRAM = 64;
        buf = (char*)pSDRAM;
        AT91F_DBGU_Printk(buf);//通过调试串口输出字符
        pSDRAM++;
    }
}


重新编译loader.bin,下载到板上。


测试时如果是地址是 20000000 到其后64字节,存入,读取输出正确。
如果设基址到其后255字节,最后一般只能读取输出224字节。
同理512字节,读出224;1024读出1018;4095读出224.


=======================================================
不知是什么问题,望各位指教。 1: 那位兄弟帮一下啊 2: SDRAM有几个参数找不到板上用SDRAM芯片是 HY57V641620HGT-H(4Banks X 1M X 16bit)查看其DATASHEET,133MHZ(7.5ns)的参数NC=8,NR=12,NB=4,CAS=3,RCD=3,RAS=6,RC=9,RP=3还有两个参数TWR,TXSR找不到.
还有看9200手册,上面说CAS只支持2,其他的要自编程.
如是把SDRAM当100MHZ的使用,NC=8,NR=12,NB=4,CAS=2,RCD=2,RAS=5,RC=7,RP=2.
TWR假设为2,TXSR为1.
进行读写测试不成功.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]