完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好
在我的项目中我用了OMAP-L138这个芯片,但是在调试DDR2的时候出了问题,就是写进去的数据和读出来的不一样。 我尝试了每写进一个数据之后就马上将它读出来,这样的话读出来的数据是没有问题的,但是当我写进去一堆数据之后,然后再读的话,就会发现读出来的数据有问题,跟原先写进去的不一样,很乱,也就是说,数据写进去后过一段时间读出来的话,有错误,也就是说DDR2内的数据没有保持住。请问大家这是什么原因。 我在OMAP-L138的DDR外设寄存器中的配置如下: SDCR 0x00134A32 SDRCR 0x0000049 SDtiME1 0x26922A09 SDTIMR2 0x3C14C722 DRPHYC1R 0x000000C6 我用的DDR2是MICON的 MT47H128M8CF-3, 该芯片为8位,我用两片组成16位。我配置的频率是150MHZ。片选为CS3。 所以还想问一下大家,有没有遇到过跟我相同的问题,是我的寄存器配置有问题吗?我看网上有人说是读写与刷新冲突处理没有做好,但具体应该怎么做,还请大家指教。 |
|
相关推荐
9个回答
|
|
上面有一点说错了,CS3是NANDFLASH的片选,DDR2芯片的CSn信号是接到OMAP-L138的mDDR/DDR2模块上的CSn信号上的,这点没错。
另外,我的其他配置如下: 1,我使用两片8位的DDR2组成16位的,参考OMAP-L138 datasheet 的接法(page129)。 2,我用OMAP-L138的开发板试了下,由于开发板上的是一片mDDR,我依据mDDR的型号改了一下上面几个寄存器的值,然后发现读写正常。说明我的基本配置应该没有问题(即PLL,PSC等模块) 3,我现在尝试写20个地址的数据,第一个地址写0x0000,第二个写0x0001,以此类推,写进去之后我再读出来的时候就变成了0x00004000,0x00004001,0x00004002.。。。。。,也就是说多了个4,如果我写的是32位的数或者8位的数,那么这个多出的4就会出现在别的地方,例如写32位的0,1,2,到DDR2,读出来的话变成了0x40004000,0x40004001,0x40004002.。。。。。,请问这是什么原因? |
|
|
|
loujie39 发表于 2018-6-21 13:17 从这点看,像是数据线D14短路了。 直接在CCS memory window里查看内存,刷新显示看内容是否会改变。如果改变则说明DDR配置不对。如果不改变,还是固定多一个4,则说明D14真的被拉死了。量一下看与哪里短路了。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
loujie39 发表于 2018-6-21 13:17 从这点看,像是数据线D14短路了。 直接在CCS memory window里查看内存,刷新显示看内容是否会改变。如果改变则说明DDR配置不对。如果不改变,还是固定多一个4,则说明D14真的被拉死了。量一下看与哪里短路了。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 13:47 谢谢,但是如果是D14短路了的话,我一写入数据就读出来就应该也是错的,但事实是如果我每写一个数据就读一下,那样的话是没问题的,就是写一堆数据之后再读的话,就会出错。而且出错也不一定就是前面加了个4的情况,还有前面都是F的情况,所以我认为应该跟某根地址线没关系。 现在我的CCS查看内存方面好像有点问题,全部都是显示的问号,还没解决,所以不能看内存的变化。但如果是DDR得配置不对,那应该是哪些方面的配置为题呢?是我提到的上面那5个寄存器吗?还是其它的配置? 非常期待您的答复。 |
|
|
|
loujie39 发表于 2018-6-21 13:58 目前我的情况有了新的进展,在经过排查后问题逐渐明晰了: 1, 目前的情况是我在写20个数据后,在写完后就开始读的话,读出来的第一个数会有错,但后续的都正常。如果我在写进20个数据后,在延迟一会儿,哪怕延迟很小的一段时间吗,读出来的数据都正确。我认为应该是读写转换时间太短了的缘故,我试着改了寄存器SDTIMR1中的T_WTR位,但没效果,所以想问一下,还有那些其他位是影响读写转换时间这一项的?我的寄存器设置如上面所说,频率依旧是150Mhz。 2, 我目前是用的两片8位DDR2来组成16位的DDR2,在寄存器的哪些位还需要专门设置这一点? 3, DDR2芯片有一些寄存器在上电的时候需要设置,就是一些模式寄存器什么的,那些寄存器是我在程序中专门对其进行设置还是我设置了上面那5个寄存器之后就可以了,程序会自动根据我的这5个寄存器的设置对DDR2芯片内部的寄存器进行设置? 非常期待您的答复,谢谢! |
|
|
|
loujie39 发表于 2018-6-21 14:15 1. 用附件的工具重新核算一下DDR的参数。 2. 将DDR_CLK降频试试。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 14:27 谢谢! 1,我上面的5个寄存器配置就是用这个工具配的, 2,考虑到在1.2V电压下DDR2/mDDR模块的时钟在125~156Mhz内,我降频到133M,但没用,结果还是一样 3,你能回答我上面提出的第三个问题吗? 非常感谢! |
|
|
|
loujie39 发表于 2018-6-21 14:41 3, DDR2芯片有一些寄存器在上电的时候需要设置,就是一些模式寄存器什么的,那些寄存器是我在程序中专门对其进行设置还是我设置了上面那5个寄存器之后就可以了,程序会自动根据我的这5个寄存器的设置对DDR2芯片内部的寄存器进行设置? [Answer] 是的。 现在我的CCS查看内存方面好像有点问题,全部都是显示的问号,还没解决,所以不能看内存的变化。但如果是DDR得配置不对,那应该是哪些方面的配置为题呢?是我提到的上面那5个寄存器吗?还是其它的配置? [Answer] 在CCS菜单里把memory map的勾选去掉。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
363 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
238 浏览 1 评论
889 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2066 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3806 浏览 4 评论
CC3100BOOST使用CC3200lunchXL进行烧录
847浏览 2评论
85浏览 2评论
113浏览 2评论
94浏览 2评论
119浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-25 06:24 , Processed in 0.810953 second(s), Total 64, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191