OpenEdv-开源电子网

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

(原创)关于SDRAM自动刷新的理解

[复制链接]

12

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2019-8-6
在线时间
23 小时
发表于 2019-12-19 10:04:52 | 显示全部楼层 |阅读模式

因为SDRAM是动态内存,也就是需要不断刷新才能保存数据,也就是存储体中的电容需要不断地刷新才能不会因为电容的自消耗而产生电位变化。这个我是理解的。但是又看到一句话:在刷新过程中,所有L-Bank都停止工作,而每次刷新所占用的时间为9个时钟周期,之后就可进入正常的工作状态,也就是说在这九个时钟周期内,所有工作指令只能等待而无法执行。那么问题来了,如果我就是在SDRAM自刷新的9个时钟周期间对其发送了命令,那怎么办?
根据我的理解:
因为电容数据的有效期为64ms,也就是说刷新整个SDRAM需要在64ms之内。而我们使用的SDRAM是8192行,所以刷新速率=64ms/8192行=7.81us/行。
SDRAM的时钟频率为96MHZ,那么也就是说,一个时钟周期为1/96M(s),也就是刷新一行的周期为7.81us/(1/96M)s = 750
但是原子却设置为750-20=730。我原先不明白,原来这个20个时钟周期就是提前刷新的周期,否则正正好好750个周期刷新,就有可能让电容数据失效。
也就是我们在初始化的时候向SDRAM设置它的刷新计数器为730,在CKE的为高的时候SDRAM为自动刷新模式。每过了730个时钟周期后就等待状态机为IDLE(空闲),就开始9个时钟周期的刷新。之后刷新计数器复位,且行计数器+1,下一次刷新就会去刷新下一行。
再刷新过程中,所有命令都要等待。
这样,就能够既能刷新又不影响工作了。但是再往细里深究仍有很多不明白的地方,比如等待的时候还没有执行,而mcu认为成功了,切换为其他命令时那不就失败了吗?我也是没有再继续深究下去,如果有明白的朋友不妨分享一下
————————————————
版权声明:本文为CSDN博主「坛城」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nianzhu2937/article/details/103608988

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

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-19 14:10:09 | 显示全部楼层
帮顶                                          
成功没有捷径
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 05:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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