大家好:
我使用的是6713的芯片,用的csl 编程,在用edma的时候我发现了一下几个问题,麻烦您帮我看看能不能给出答案,谢谢!
(1)chain的使用通道问题:我用edma通道13 chain到通道8,再chain到通道9,再chain到通道10,再chain到通道11,这些都可以实现,但是接着想从通道11 chain回通道13就不行了。我看资料说只有8,9,10,11四个通道有chain的功能,是不是当想从这四个通道中的任何一个chain到其他通道去就不行了呢?
(2)chain的运行原理问题:chain的作用是alternative transfer complete 是什么意思,是不是指的是“通道A chain 到通道B时,触发A的事件一到来,A和B的搬移同时进行”,还是“通道A chain 到通道B时,触发A的事件一到来,先搬移A,等A搬移完了以ATCC结束代码再触发搬移B”?如果是前者,从通道13 chain 到8 接着chain到9 接着chain到10 接着chain到11,会不会使13,8,9,10,11五个通道同时运行?
谢谢了!
Feng Gu:
回复 King Wang1:
(1)chain的确可以到任何一个通道:
虽然在TI 的文档中关于6713 chain是这么写的:
Chaining EDMA Channels by an Event
See section 1.13 for an overview of chaining. Four of the user-specified 4-bit transfer complete codes (TCC values 8, 9, 10, and 11) can be used to trigger another EDMA channel transfer. These events trigger an EDMA transfer providing the ability to chain several EDMA transfer requests from one event that is driven by a peripheral or external device. By setting TCC to 8, 9, 10, or 11, any EDMA channel can synchronize any of these four channels.
但经过试验,发现的确可以chain到任何一个通道。
(2)同时使用link和chain的问题:
13通道建立两个参数表A,B,设置cpu中断使13通道互相link两个参数表(即pingpong结构),其中设置A参数表chain到通道8,B参数表chain到通道9。
预想功能:每次link到13通道A,完成A功能后chain到通道8;每次link到13通道B,完成B功能后chain到通道9;一直link循环。
即 13通道A->通道8。
↑↓cpu中断
13通道B->通道9。
问题:通道8,9只在第一次link 通道13的A,B时分别被chain到,接下来的link时都不能再chain到通道8,9,请问是怎么回事呢?
Andy Yin1:
回复 Feng Gu:
您好,
问题2,请确认一下执行一次后A,B参数表的参数是否装载正确。
Feng Gu:
回复 King Wang1:
不好意思,忘记点回复了,还有以下问题,看看您是否能够回复。