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.

OMAPL138 DDR2读写错位

自己做的一个omapl138的板之前没用DDR2内存,全跑在芯片内存上,现在加上了DDR2内存,并且将ARM端的代码全搬到DDR2里面去,发现能运行但是没法正常操作外设,比如说SPI接口就可以发送但是没法接收,GPIO操作能作输出脚置高低电平输出但是却没办法用作输入脚读取状态,DEBUG了半天发现在DDR2里面的数据只要是8bit的数据char,unsigned char,读写都有问题。

例如我定义char test_buf[4096]在DDR里面然后再程序里用 for(i=0;i<4096;i++) test_buf[i]=i; 初始化数组,然后再观察数组里的数据发现竟然是 0x01,0x00,0x03,0x02,0x05,0x04,0x07,0x06...... 也就是说按字节读写刚好地址交换了,但是如果将数组分配在片内内存SHRAM上,顺序又是对的,当数组是16bit的或32bit时,放在DDR2里面顺序也是对的,这可能是什么问题求指教。

我用的DDR2是MT47H64M16HR-25EIT,相关寄存器配置为:

DRPYC1R = 0x000000C3

SDCR = 0x00134632

SDTIMR1 = 0x264A2A09

SDTIMR2 = 0x4412C722

SDRCR = 0x40000260

DDR CLOCK (2X) = 312 MHz