完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在进行《实验五:MEMORY CONTROLLER》时,我使用的是两片k4s561632e-uc75 SDRAM,技术资料说64ms refresh period (8K Cycle),那么可知该SDRAM的刷新周期为64ms/(8*1024)=7.8125us,
则R_CNT = 2^11 + 1 – 12 * 7.8125 = 1955, REFRESH=0x008e0000 + 1955 = 0x008e07a3,但是我设置这个值,SDRAM不能工作, 然后,我按如下计算,R_CNT = 2^11 + 1 – 60 * 7.8125*2 = 1113,REFRESH=0x008e0000 + 1113=0x008e0459,设为这个值可以正常工作, 这是怎么回事呢? |
|
相关推荐
7个回答
|
|
是怎么接的呢?
k4s561632e-uc75是16M x 16的, 你是组成16M x 32呢还是32M x 16? 如果可以,把原理图截屏后帖出来看看 1. 如果是并联成16M x 32,那么计算方法不变:R_CNT = 2^11 + 1 – 12 * 7.8125 = 1955 2. 如果是串联成32M x 16,SDRAM的刷新周期为64ms/(8*1024*2)=7.8125/2us,R_CNT = 2^11 + 1 – 12 * 7.8125/2 = 2002 不管怎么说,所得的值都比1113大啊,那里出错了? 你没启动MPLL提高HCLK吧? |
|
|
|
|
|
|
|
源码如下,注意我的led和按键与实验的不一样!
|
|
|
|
我的板子使用两片HY57V561620CT-H,除了型号不同,容量、位宽、连线、刷新频率和你的都相同,
我也没想到是什么问题 你改为R_CNT = 2^11 + 1 – 60 * 7.8125*2之后, 刷新频率更慢了,数据反而容易丢失才对 |
|
|
|
|
|
|
|
因为外接的SDRAM的位宽是32位的──就是说以32位即4字节为单位进行访问。
你想象一下,CPU使用0bxxxxxxxxxx11、0bxxxxxxxxxx10、0bxxxxxxxxxx01、0bxxxxxxxxxx00这4个地址访问时,ADDR2~ADDR31都是相同的,它们都访问同一个“32位”,ADDR1、ADDR0根本用不到。 取这“32位”中的哪个字节,由LnWBE0~3决定。 |
|
|
|
奇怪的问题又来了,我做实验十,REFRESH得值设为0x008e07a3,0x008e0459都可以工作,然后我随便改了一个值(0x008e0123),也可以正常工作
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2193 浏览 6 评论
1992 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4547 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 20:35 , Processed in 0.821428 second(s), Total 111, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号