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的话,我这样的初始化是不是有问题呢?
谢谢大家!

       








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
正点原子
1楼-- · 2019-07-20 06:40
 精彩回答 2  元偷偷看……
orta
2楼-- · 2019-07-20 11:47
 精彩回答 2  元偷偷看……
orta
3楼-- · 2019-07-20 13:11
正点原子 发表于 2017-11-27 00:48
单独BANK6,ok么?

您指的 单独 是指 板子上只焊接 BANK6 SDRAM 进行测试吗?

我的测试过程是:  单独焊接了BANK5后, 进行调试,BANK5工作正常。  然后再焊接BANK6,此时 板子上 BANK5 和BANK6都焊接了, 进行 BANK5测试,没问题; 进行BANK6测试,有问题。

难道我需要把 BANK5 SDRAM 脱下来, 再测试BANK6吗?
orta
4楼-- · 2019-07-20 19:02
正点原子 发表于 2017-11-27 00:48
单独BANK6,ok么?

又做了一个测试。
板子上BANK5和BANK6 都焊接上SDRAM, 然后在初始化程序中,把对 BANK5的初始化语句注释掉,只保留BANK6的语句。 进行编译上电后,BANK6仍然无法工作
orta
5楼-- · 2019-07-20 21:30
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-07-21 02:48
 精彩回答 2  元偷偷看……

一周热门 更多>