我之前在DSP28377S上通过外设中断或软件使能都可以触发CLA协处理器工作了!
目前主要是考虑到CLA协处理器处理完后与外部芯片如FPGA的数据交互;又该数据交互通过EMIF完成,而CLA又不能直接访问EMIF外设。所以只能考虑通过CPU将数据经EMIF写入到FPGA。
之前通过CLA协处理器对管脚A的操作输出一个脉冲,管脚A连接管脚B,而管脚B又作为外部中断1的输入管脚,所以,通过该方法可以实现从CLA协处理器触发一个CPU中断。
但是,通过外部管脚而触发中断的话有将近300ns的延迟,又耗费管脚,可以的话希望能够在CLA中直接设置相应的标志或寄存器来触发CPU中的高级中断,如ADCA1/ADCB1/ADCC1/TIMER0/EINT1/2等从而可以将CLA协处理器中的数据即时地写入到外部FPGA上。
今天通过设置EPWM.CPMA的值为>EPWM.PRD(在EPWM中断中)和EPWM.CPMA=EPWM.TBCTR(在CLA协处理器中)来触发EPWM中断,中断函数的计数器可以进入的,但是问题是:CLA协处理器的计数器数值会比EPWM中断中的计数器数值要大,按照预期是一样的或最多相差一个计数值而已。
基于以上问题,恳请高手帮助一起分析指导,谢谢!
Emma Wang:
直接在CLA的中断中给PWM模块的事件触发软件强制寄存器 ETFRC中的INT位写1,强制其发生中断事件。
EPWM模块的中断产生原理示意图如下: