STM32F7 同时挂载两片SDRAM时无法使用BANK6

2019-07-20 01:25发布

大家好,我根据原子大大的 STM32F7 CORE核心板 自己制作了一版PCB, 我设计了两片SDRAM,接线图如下:

SDRAM型号:与原子大大的核心板一样,W9825G6DH-6

第一个 W9825G6DH 与 第二个 W9825G6DH 的  地址线A0-A12 ,BA0-BA1,数据线D0-D15 , 时钟 SDCLK, NBL0 NBL1 , SDNWE, SDNCAS, SDNRAS,  全部共用。

第一个 W9825G6DH 与 第二个 W9825G6DH 的 SDNE 与 SDCKE 分别独立连接 (第一个SDRAM 用 SDNE0 SDCKE0,第二个SDRAM 用 SDNE1 SDCKE1), NE0 和NE1 分别独立连接上拉电阻10K


然后,上板子开始调试 :


首先单独测试 BANK5 SDRAM (也就是 SDNE0 SDCKE0 的SDRAM),跑108MHZ 没压力,也用RGB屏测试了。


然后,我在 SDRAM寄存器版本测试例程中,模仿 原子大大的写法,在SDRAM_INIT 初始化中,加入对 BANK6的初始化,如下:


在sdram.H 中加入 #define Bank6_SDRAM_ADDR    ((u32)(0XD0000000))

在sdram.C中 加入
        //使能H 管脚,定义 H6 H7,(也就是 SDNE1 SDCKE1)
        RCC->AHB1ENR|=1<<7;   
        GPIO_Set(GPIOH,PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);       
        GPIO_AF_Set(GPIOH,6,12);       
        GPIO_AF_Set(GPIOH,7,12);

        // 因为两个SDRAM是同一型号,则设置相同参数
        FMC_Bank5_6->SDCR[1]=sdctrlreg;
        FMC_Bank5_6->SDTR[1]=sdtimereg;

        // CMD指令,设置BANK5的同时也设置BANK6
        SDRAM_Send_Cmd(0,1,0,0);               
        SDRAM_Send_Cmd(1,1,0,0);               
        delay_us(500);                                       
        SDRAM_Send_Cmd(0,2,0,0);               
        SDRAM_Send_Cmd(1,2,0,0);               
        SDRAM_Send_Cmd(0,3,8,0);               
        SDRAM_Send_Cmd(1,3,8,0);               
       
        mregval|=3<<0;                                       
        mregval|=0<<3;                                       
        mregval|=3<<4;                                       
        mregval|=0<<7;                                       
        mregval|=1<<9;                                       
        SDRAM_Send_Cmd(0,4,0,mregval);
        SDRAM_Send_Cmd(1,4,0,mregval);
       
        FMC_Bank5_6->SDRTR=824<<1;               




至此, SDRAM初始化完成。

然后,我再主程序中用FOR循环 验证数据,发现,*(vu8*)(Bank5_SDRAM_ADDR+i) BANK5 的SDRAM工作没问题,怎么测试都对(所有地址都进行读写测试了)。 但是 *(vu8*)(Bank6_SDRAM_ADDR+i) 却是错误,怎么弄也不对。

请问大家,同时挂载两个SDRAM的话,我这样的初始化是不是有问题呢?
谢谢大家!

       








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。