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

查看: 35241|回复: 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做内存

 首页 &gt;&gt;STM32社区ST MCU技术论坛 &gt;&gt;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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版