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

C6748的EDMA传输问题

专家你好:

求助C6748的EDMA3传输问题,现在使用EDMA3进行数据的DDR存储,其中用到了DSTBIDX寄存器。由于需要存储的数组地址偏移量较大,而手册中写明DSTBIDX寄存器的数值范围在-32768到32767之间,所需的偏移量超过这个范围,请问如何编写程序才能满足大偏移量的数组存储呢?

Tony Tang:

我理解你的A count很大,所以bindex不够用,能不能减小Acount, 加大C count,利用AB同步,即axb等于原来的A count这种方式来实现,当然这样又会涉及到cindex。

还是说说你的数据结构情况吧,是一个什么样的数组,要搬成什么样子,是用什么触发传输?

user114715729:

回复 Tony Tang:

感谢您的回复:

我的数据结构是有一个大的二维数组,float型256*16000大小,所以需要放置在DDR中。在每个采样间隔传输进入256个数据,需要按照列存储,也就是转置一下,之后采样完成后将每一行的16000个数据再通过EDMA导回内存运算。这样在采样间隔中我的DSTBIDX也就是16000*4,这就会造成寄存器溢出。

我也考虑过在采样间隔内不进行转置,也就是数据变成16000*256,这样采样间隔内的数据变成连续存储,能够完成任务。采样结束后将每列的16000个数据通过EDMA导回内存运算,这样SRCBIDX就变成256*4,也不会溢出了。

但是现在遇到问题,就是用改进过后的方法二维DMA往回导数的时候需要很多的时钟周期才能够完成,感觉是不正常的,请问问题可能出在哪里呢?

user114715729:

回复 Tony Tang:

现在统计二维传输一个float数据需要500多个周期,这是不正确的,二维传输数据EDMA传输速度会有所下降吗?

user114715729:

回复 Tony Tang:

感谢您的回复:

我原来的代码理解上可能有一些问题,现在我将OPT中的传输方式改为ABSYNC就可以了,计算下来传输一个浮点数大概需要10个CPU周期,这样应该属于正常情况了吧。

user5752701:

你好:

我是小萌新,老师布置了任务,要利用EDMA完成65536*65536二维数组的搬运,一直没有做出来。我是真的不会,在网上找了一些简单例子也没有对数据搬运成功。这个东西困扰我很久很久了,并且一直没能完成任务,让我很焦急。如果您有幸能够看见我的回复,并且愿意帮助我的话,可不可以把你的程序发给我参考一下?不胜感激!!

赞(0)
未经允许不得转载:TI中文支持网 » C6748的EDMA传输问题
分享到: 更多 (0)