在使用McASP0时,EDMA3的PaRAM set0和PaRAM set1分别用于McASP0的RX和TX的传输,并分别配置PaRAM set40/41和PaRAM set42/43作为RX和TX的Ping-Pong传输配置参数集。
当PaRAM set42和43中配置opt的TCC域分别为0和1,可以进入中断。
当PaRAM set40和41中配置opt的TCC域分别为0和1,可以进入中断。
但是,当PaRAM set40和41中配置opt的TCC域分别为2和3,不能进入中断。
后来查了数据手册,说还需要将IER[TCC]位置1,才能产生中断给CPU。

我调用EDMA3EnableEvtIntr()对IER的相应Bit置1。
EDMA3EnableEvtIntr(SOC_EDMA30CC_0_REGS, 2);
EDMA3EnableEvtIntr(SOC_EDMA30CC_0_REGS, 3);
结果并不起作用,无法进入中断。
单步调试,发现IER和IPR的bit2、bit3都被置1了。
和前面可以进入中断的配置相比,只是将opt的TCC域从0和1改为2和3,为什么还是进不了中断呢?
是不是还需要什么条件?
Shide Lu:
另外,查看StarterWare驱动源码edma.c,发现EDMA3RequestChannel()函数传入的tccNum并没有真正被使用。
图中框出的两处,是调用EDMA3EnableEvtIntr()对IER寄存器的相应bit置1的。
按照上图的逻辑,无论tccNum输入值是什么,用于设置IER的总是chNum。这是Bug还是故意这样呢?
Tony Tang:
回复 Shide Lu:
从EDMA的工作原理,TCC num 要跟IER的bit一致。
TI中文支持网


