我想使用一个固定频率(12KHZ)的GPIO中断触发EDMA进行数据传输,所以在EDMA的初始化配置时把触发方式配置为GPIO中断事件触发,但是我发现只能实现第一个GPIO的中断触发EDMA传输,然后即使GPIO中断还在继续,EDMA的传输不会再进行。想知道想要重复利用GPIO事件触发EMDA传输,还应该怎么设置?
Nancy Wang:
请问是如何判断EDMA的传输不再进行的?没有触发传输完成中断?
中断函数中是否有清除IPR位。
After servicing the interrupt, the ISR should clear the corresponding bit in IPR/IPRH, thereby enabling recognition of future interrupts
以下章节配置的大概流程参考看一下。
B.1.1 Setting Up a Transfer
www.ti.com/…/sprugs5b.pdf
,
user6503527:
你好,非常感谢您的回复!
是的,我在初始化中配置了EDMA为GPIOBANK1的实际触发,后面GPIO中断事件发生后就进了一次EDMA传输完成中断,后面即使还有GPIO中断事件,也没有触发EDMA传输(没有再进EDMA完成中断)。
,
user6503527:
补充一下:进入传输完成中断后,我清除了EDMA3控制寄存器中的IPR位(为0),但还是没有进行下一次传输,请问还有其他寄存器配置可以检查下吗?
,
user6503527:
请问,我在初始化的时候,PaRAM的link到NULL是不是导致不能进行下一次传输的原因?
,
Nancy Wang:
STATIC如何配置的?STATIC为0,每次EDMA传输完后,重新设置一次PaRAM,这样第二次触发EDMA的时候应该可以重新传输。
link address也修改一下看看。
,
user6503527:
谢谢回复,static是配置为0的,Link address我之前确实没有设置,现在打算看看怎么设置试试!
,
user6503527:
你好尝试了把Link address设置好,发现进第一次EDMA3的完成中断服务程序时,EDMA3的控制寄存器中参数设置都链接好了,但是还是没能触发第二次EDMA传输,然后继续看寄存器的值,发现CER一直是0x00000000h,后面确认其实第一次触发EDMA传输前也是0x00000000,所以个人推断是不是就是这个事件链接寄存器没有设置的原因导致不能连续通过GPIO中断事件来触发EDMA的连续数据搬移呢?
另外,基于SYSBIO的哪个API是设置这个CER寄存器的呢?我自己暂时没找到!
,
Nancy Wang:
你提到的CER是另外一种触发方式,跟你使用的事件触发没有关系。
第二次中断时候ER/ERH的状态是怎么样的?建议再调试观察一下与event trigger相关的寄存器。