TI中文支持网
TI专业的中文技术问题搜集分享网站

请问如何在外扩RAM上进行Uint32或者float数据操作?

如题,在28377d上扩展了一个IS61LV25616,然后再cmd里面定义了相应的地址,再在.section中定义了exram的段,将Uint16的数据用#pragma DATA_SECTION定义到exram的段中,所有的操作都是正常的,观察数据也是定位到了扩展的RAM地址中。请问怎么可以将Uint32定位到exram中?现在使可以将数据定位到exram中,但是对数据的操作结果不对。想问下如何才能实现将Uint32或者float数据定位到外扩的ram中,因为要处理的数据比较多,只能定位到外部的ram中;还是说只能使用32位数据线的外扩ram才能实现?

Susan Yang:建议您先参考一下

e2e.ti.com/…/565720

如题,在28377d上扩展了一个IS61LV25616,然后再cmd里面定义了相应的地址,再在.section中定义了exram的段,将Uint16的数据用#pragma DATA_SECTION定义到exram的段中,所有的操作都是正常的,观察数据也是定位到了扩展的RAM地址中。请问怎么可以将Uint32定位到exram中?现在使可以将数据定位到exram中,但是对数据的操作结果不对。想问下如何才能实现将Uint32或者float数据定位到外扩的ram中,因为要处理的数据比较多,只能定位到外部的ram中;还是说只能使用32位数据线的外扩ram才能实现?

pean huang:

回复 Susan Yang:

不是这个问题,我的电路是正常的,烧写程序之后再重新上电什么的程序也是正常运行的,对外扩ram的操作,如果往里面写Uint16的数据,都是正常的,无论是往里面写还是再读出来,或者在ccs里面观察相应地址的数值,都是对的。而我现在想要把一些Uint32的数据或者float的数组放进去定义的exram(就是外扩的ram)中,但是对定位进去的数据操作,会出现写进去后用ccs观察,或者读出来,数据都是不对的。我的想法是不是因为我的数据线是16bit的,如果要进行Uint32/float读或者写的操作,就需要让emif进行两次的读取或者写入,而emif并不会自动进行两次的读写;还是说需要软件里面分开读取高16bit和低16bit的操作,然后再自己合成为32bit的数据?

如题,在28377d上扩展了一个IS61LV25616,然后再cmd里面定义了相应的地址,再在.section中定义了exram的段,将Uint16的数据用#pragma DATA_SECTION定义到exram的段中,所有的操作都是正常的,观察数据也是定位到了扩展的RAM地址中。请问怎么可以将Uint32定位到exram中?现在使可以将数据定位到exram中,但是对数据的操作结果不对。想问下如何才能实现将Uint32或者float数据定位到外扩的ram中,因为要处理的数据比较多,只能定位到外部的ram中;还是说只能使用32位数据线的外扩ram才能实现?

pean huang:

回复 mangui zhang:

感谢回答。已经搞清楚了,可以使用16bit的数据线进行32bit数据的自动操作,将数据在cmd定义到外扩的空间,然后直接操作就可以了。之前不行是因为硬件你的连接有问题,没有使用EMBA1连接到地址线,连接之后就可以了;之前一直没搞明白这个线的作用,所以硬件没对,就出现问题了。

赞(0)
未经允许不得转载:TI中文支持网 » 请问如何在外扩RAM上进行Uint32或者float数据操作?
分享到: 更多 (0)