你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 35215|回复: 14

[STM32F429] 【STM32F429开发日志】用SDRAM做内存

[复制链接]

15

主题

131

回帖

0

蝴蝶豆

中级会员

最后登录
2020-3-16
发表于 2014-6-3 17:09:05 | 显示全部楼层 |阅读模式
【STM32F429开发日志】——网络收集的例程分享(包括所有STM32F429Discovery板上外设驱动)

更多分享




探索套件的SDRAM有8MB,比较可观,用好才可以使stm32f429的性能得到最大发挥。下面简单说下。
第一部分,硬件连接情况
STM32F429探索套件内含64Mbit大小的SDRAM。有12根复用地址线(12根ROW,8根Column)表示一个bank有1M地址空间,一共有4个bank,通过BA0,BA1区分每个块。有16根数据线。板卡中的芯片是IS42S16400J,其管脚定义如下所示。
SDRAM_PIN.jpg

其中,说下CKE表示时钟使能,高电平有效,低电平表示低功耗状态,自我刷新状态,时钟挂起状态等等。LDQM和UDQM分别表示低字节和高字节有效的信号,与STM32的NBL0/1相对应。BA0/1是选择块的和stm32的BA是对应的。
再说下SDRAM和STM32F429的连接情况,如下图。
SDRAM.jpg

这里要说下SDRAM的片选接到了STM32的FMC的SDNE1:SDRAM Bank 2 Chip Enable,接到了stm32的BANK2。这个bank和上面的bank不同,注意区分。

第二部分 软件设置情况
探索套件的固件例程里,在system_stm32f4xx.c有个DATA_IN_ExtSDRAM宏。定义这个宏,并且将变量定义到SDRAM的空间,会在访问这个变量时进入硬fault。这是因为SystemInit_ExtMemCtl函数并没有根据探索套件里的硬件进行设置(尽管函数说明里是这么说的)。简单的方法是用探索套件里SDRAM_Init函数代替SystemInit_ExtMemCtl函数即可。复杂的就要牵涉到内部一些寄存器的设置。主要过程是配置GPIO,开相关时钟,配置SDCR和SDTR(配置时序)寄存器。开SDRAM时钟,等待完成。全部预充电,等待完成。自动刷新设置,等待完成。设置MRD寄存器等待完成,设置自动刷新计数,关闭写保护。
回复

使用道具 举报

15

主题

131

回帖

0

蝴蝶豆

中级会员

最后登录
2020-3-16
 楼主| 发表于 2014-12-23 11:31:59 | 显示全部楼层
XNDF2000-126656 发表于 2014-11-7 08:47
SDRAM 做内存运行,非常不稳定,我做过实验,同一个硬件,同一个代码,内部SRAM 做内存,不会出现HardFault ...

是不是硬件电路设计的不好呢
回复 支持 0 反对 1

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

初级会员

最后登录
2018-12-27
发表于 2014-9-20 16:10:23 | 显示全部楼层

回复:【STM32F429开发日志】用SDRAM做内存

 首页 >>STM32社区ST MCU技术论坛 >>STM32
论坛规则 | 收藏本版 | 

     
回复 支持 1 反对 0

使用道具 举报

0

主题

18

回帖

0

蝴蝶豆

初级会员

最后登录
2020-9-1
发表于 2014-8-21 17:27:06 | 显示全部楼层

回复:【STM32F429开发日志】用SDRAM做内存

感谢分享,也正在学习这块,按照您的介绍进行设置,还是有问题,希望指导一下,我现在的操作是这样的,不知道哪里出现的问题:
1、在system_stm32f4xx.c开启DATA_IN_ExtSDRAM宏;
2、在SystemInit_ExtMemCtl函数中删除原来的内容,调用已经调试成功的SDRAM初始化函数;
3、修改连接文件,将文件中的以下两项进行修改:
define symbol __ICFEDIT_region_RAM_start__    = 0xD0000000;
define symbol __ICFEDIT_region_RAM_end__      = 0xD07FFFFF;
4、然后在文件中定义一个2M的数组,uint8_t Buffer[2*1024*1024];
编译仿真依旧直接进入HardFault_Handler中断,
回复 支持 0 反对 1

使用道具 举报

1

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
2019-12-22
发表于 2014-7-13 13:50:18 | 显示全部楼层

RE:【STM32F429开发日志】用SDRAM做内存

e e                      e e
回复 支持 反对

使用道具 举报

25

主题

446

回帖

0

蝴蝶豆

中级会员

最后登录
2019-12-10
发表于 2014-8-6 14:48:43 | 显示全部楼层

RE:【STM32F429开发日志】用SDRAM做内存

这个好,最近在用FPGA控制SDRAM,感觉时序比较复杂
回复 支持 反对

使用道具 举报

0

主题

31

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-26
发表于 2014-8-21 00:47:40 | 显示全部楼层

RE:【STM32F429开发日志】用SDRAM做内存

这个好,最近在用FPGA控制SDRAM,感觉时序比较复杂
回复 支持 反对

使用道具 举报

0

主题

11

回帖

0

蝴蝶豆

初级会员

最后登录
2020-9-2
发表于 2014-8-21 23:08:21 | 显示全部楼层

回复:【STM32F429开发日志】用SDRAM做内存

bu c不错  xx新学习
 
 
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-9-2 16:27:13 | 显示全部楼层

回复:【STM32F429开发日志】用SDRAM做内存

你好,请问你这个问题解决了吗?我也遇到相同的问题了,可以指导一下嘛?谢谢~
 
回复第 5 楼 于2014-08-21 17:27:06发表:
感谢分享,也正在学习这块,按照您的介绍进行设置,还是有问题,希望指导一下,我现在的操作是这样的,不知道哪里出现的问题:
1、在system_stm32f4xx.c开启DATA_IN_ExtSDRAM宏;
2、在SystemInit_ExtMemCtl函数中删除原来的内容,调用已经调试成功的SDRAM初始化函数;
3、修改连接文件,将文件中的以下两项进行修改:
define symbol __ICFEDIT_region_RAM_start__    = 0xD0000000;
define symbol __ICFEDIT_region_RAM_end__      = 0xD07FFFFF;
4、然后在文件中定义一个2M的数组,uint8_t Buffer[2*1024*1024];
编译仿真依旧直接进入HardFault_Handler中断,
 
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-11-7 08:47:44 | 显示全部楼层
SDRAM 做内存运行,非常不稳定,我做过实验,同一个硬件,同一个代码,内部SRAM 做内存,不会出现HardFault_Handler中断, 如果定义外部SDRAM 为emwin系统运行内存,运行就不稳定,连续快速执行JPG解压显示函数,频繁访问SDRAM并刷屏 就出现HardFault_Handler中断,而且是不确定时间的出现。 如果修改程序访问慢一点SDRAM, 刷一屏,停一会,就不会出现HardFault_Handler中断。如果把emwin系统运行内存定义到内部SRAM ,一样执行原代码,运行2天SDRAM 都不会报错。  我估计还是硬件SDRAM 访问不稳定。   
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版