OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6898|回复: 15

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

[复制链接]

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
发表于 2017-11-27 00:11:39 | 显示全部楼层 |阅读模式
1金钱
大家好,我根据原子大大的 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的话,我这样的初始化是不是有问题呢?
谢谢大家!

       








正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-11-27 00:48:23 | 显示全部楼层
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-11-27 10:20:57 | 显示全部楼层

现在就是单独测试BANK6 不行, 也排除了 焊接问题(因为大量的信号是与BANK5共用,BANK5单独测试没问题,也就是说 SDRAM与 STM32连接都是没问题的),芯片也应该是没问题(这两个SDRAM是一起买的)
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-11-27 10:23:15 | 显示全部楼层

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

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

难道我需要把 BANK5 SDRAM 脱下来, 再测试BANK6吗?
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-11-27 11:32:56 | 显示全部楼层

又做了一个测试。
板子上BANK5和BANK6 都焊接上SDRAM, 然后在初始化程序中,把对 BANK5的初始化语句注释掉,只保留BANK6的语句。 进行编译上电后,BANK6仍然无法工作
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2017-11-27 18:45:57 | 显示全部楼层
本帖最后由 orta 于 2017-11-27 19:00 编辑

自定。。还没找到原因
下面是我的原理图


stm32f767_core_1701.pdf (63.68 KB, 下载次数: 239)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-11-27 23:46:59 | 显示全部楼层
orta 发表于 2017-11-27 18:45
自定。。还没找到原因
下面是我的原理图

先单独调通BANK6吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-4-23
在线时间
2 小时
发表于 2018-1-4 11:59:20 | 显示全部楼层
楼主的BANK6调通了吗? 因为我这边也遇到楼主描述的相同的问题。 BANK5正常,BANK6不正常。
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2018-1-5 10:19:28 | 显示全部楼层
Eastar 发表于 2018-1-4 11:59
楼主的BANK6调通了吗? 因为我这边也遇到楼主描述的相同的问题。 BANK5正常,BANK6不正常。

没有。。后来放弃了,因为时间紧。。。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-4-23
在线时间
2 小时
发表于 2018-1-8 10:26:06 | 显示全部楼层
orta 发表于 2018-1-5 10:19
没有。。后来放弃了,因为时间紧。。。

嗯 我也准备放弃。整了很长时间了。目前我看了很多论坛,都没有看到使用2片SDRAM的先例,都有点怀疑第2片可能没有实际被应用过了^_^ 我的第2片做了等长处理也没有效果。看来只有把这个片子作为低端产品用用了,否则浪费了,唉。
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2018-1-8 10:32:50 | 显示全部楼层
Eastar 发表于 2018-1-8 10:26
嗯 我也准备放弃。整了很长时间了。目前我看了很多论坛,都没有看到使用2片SDRAM的先例,都有点怀疑第2片 ...

嗯嗯,确实官方也没有给出例子,不好参考。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-7-11
在线时间
1 小时
发表于 2018-1-31 15:18:06 | 显示全部楼层
楼主解决了吗?我用了4块16BIT SDRAM (2块当成32BIT用) 都可以存取,只是偶尔存取资料不正确,正在调适. 可能是布线问题. 正在烦恼可不可能把SDRAM给降速呢
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-8
在线时间
1 小时
发表于 2019-6-8 02:32:30 来自手机 | 显示全部楼层
andybj4 发表于 2018-1-31 15:18
**** 作者被禁止或删除 内容自动屏蔽 ****

能看看你的4块电路图吗?
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2020-3-13
在线时间
24 小时
发表于 2020-3-16 15:51:41 | 显示全部楼层
巧了不是,我之前用别人的开发板是bank5的,后来自己打样的板子由于特殊原因占用bank6,以为代码小改一下就可以,结果遇到了和楼主一样的问题,怎么调都调不好,知道后来我怎么解决的吗,简单,先用库函数调,调通之后把常量代入库函数里面,再把修改好的代码提取出来,完美脱库,仔细和原来的代码一对比你就会发现问题所在,哈哈,赶紧去试试吧,我简直是个天才
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2016-4-28
在线时间
262 小时
 楼主| 发表于 2020-3-27 00:43:33 | 显示全部楼层
for人生 发表于 2020-3-16 15:51
巧了不是,我之前用别人的开发板是bank5的,后来自己打样的板子由于特殊原因占用bank6,以为代码小改一下就 ...

大佬能直接说下怎么改或者在哪里有区别吗。。。谢谢~~~
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-12-5
在线时间
2 小时
发表于 2020-4-5 18:16:01 | 显示全部楼层
orta 发表于 2020-3-27 00:43
大佬能直接说下怎么改或者在哪里有区别吗。。。谢谢~~~

有什么进展吗?我现在想用将一块FPGA挂载在FMC上用于数据存取,再挂一块SDRAM用于GUI,看上面的讨论似乎不太可行啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 18:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表