This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
上面有一点说错了,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.。。。。。,请问这是什么原因?
谢谢,但是如果是D14短路了的话,我一写入数据就读出来就应该也是错的,但事实是如果我每写一个数据就读一下,那样的话是没问题的,就是写一堆数据之后再读的话,就会出错。而且出错也不一定就是前面加了个4的情况,还有前面都是F的情况,所以我认为应该跟某根地址线没关系。
现在我的CCS查看内存方面好像有点问题,全部都是显示的问号,还没解决,所以不能看内存的变化。但如果是DDR得配置不对,那应该是哪些方面的配置为题呢?是我提到的上面那5个寄存器吗?还是其它的配置?
非常期待您的答复。
目前我的情况有了新的进展,在经过排查后问题逐渐明晰了:
1, 目前的情况是我在写20个数据后,在写完后就开始读的话,读出来的第一个数会有错,但后续的都正常。如果我在写进20个数据后,在延迟一会儿,哪怕延迟很小的一段时间吗,读出来的数据都正确。我认为应该是读写转换时间太短了的缘故,我试着改了寄存器SDTIMR1中的T_WTR位,但没效果,所以想问一下,还有那些其他位是影响读写转换时间这一项的?我的寄存器设置如上面所说,频率依旧是150Mhz。
2, 我目前是用的两片8位DDR2来组成16位的DDR2,在寄存器的哪些位还需要专门设置这一点?
3, DDR2芯片有一些寄存器在上电的时候需要设置,就是一些模式寄存器什么的,那些寄存器是我在程序中专门对其进行设置还是我设置了上面那5个寄存器之后就可以了,程序会自动根据我的这5个寄存器的设置对DDR2芯片内部的寄存器进行设置?
非常期待您的答复,谢谢!
1. 用附件的工具重新核算一下DDR的参数。
2. 将DDR_CLK降频试试。
谢谢!
1,我上面的5个寄存器配置就是用这个工具配的,
2,考虑到在1.2V电压下DDR2/mDDR模块的时钟在125~156Mhz内,我降频到133M,但没用,结果还是一样
3,你能回答我上面提出的第三个问题吗?
非常感谢!
3, DDR2芯片有一些寄存器在上电的时候需要设置,就是一些模式寄存器什么的,那些寄存器是我在程序中专门对其进行设置还是我设置了上面那5个寄存器之后就可以了,程序会自动根据我的这5个寄存器的设置对DDR2芯片内部的寄存器进行设置?
[Answer] 是的。
现在我的CCS查看内存方面好像有点问题,全部都是显示的问号,还没解决,所以不能看内存的变化。但如果是DDR得配置不对,那应该是哪些方面的配置为题呢?是我提到的上面那5个寄存器吗?还是其它的配置?
[Answer] 在CCS菜单里把memory map的勾选去掉。