我现在在使用一块TMS320F2808开发板进行调试软件锁相环程序中遇到一个问题,请求支持一下,具体问题描述如下:
1、系统时钟为100MHz,ePWM子模块计数时钟为50MHz。
2、单独使用ePWM子模块产生一个载波比360、调制波为50Hz的单相逆变的4路SPWM波正常;ePWM子模块中的配置顺序为:先进制PWM同步输出,然后配置PWM相关的寄存器,配置完成后,在使能PWM输出同步。
3、单独使用eCAP子模块进行捕获一个方波,也能正常计算方波的周期和占空比等。eCAP采用delta模式,ECCTL2寄存器的CONT/ONESHT配置为CONT连续模式、STOP_WRAP配置为3(在捕获4事件后覆盖前面的值),ECCTL1寄存器的CTRRST1~CTRRST4配置为1(捕获后复位计数器)、CAP1POL~CAP4POL配置为上升沿触发。例如,捕获一个50Hz频率的方波信号周期为20ms,捕获寄存器CAP1~CAP4大致为1999999,乘以计数时基10ns约为20ms。
4、当将两个程序合起来后,能正确输出SPWM波,但是捕获的时间不正确CAP1~CAP4的值大致为5555,约为20ms/360,经过查找原因,发现在载波比为360的情况下,正常应该是大约每进PWM中断360次(时间大约为20ms)才进一次捕获中断。 但是,实际发现,每进一次PWM中断,也进一次CAP中断。
5、后面测试时发现,当挂上示波器探头对SPWM输出进行观测时,捕获寄存捕获的值不对;当取下示波器探头时,捕获寄存器的捕获值是正确的。但是,程序中还是进一次PWM中断同时也进一次捕获中断。
关于eCAP中的寄存器中同步位如SWSYNC、SYNCI_SEL、SYNCI_EN都配置为禁止。
请问这是什么原因造成的?是否当同时使用eCAP和ePWM两个模块时还需要注意什么?
Jones Chen:
ePWM和eCAP是独立的两个模块,互相之间的唯一联系就在于epwm1 的同步输出EPWM1SYNCO,可以给eCAP1的同步输入。
建议您检查一下ePWM的中断和eCAP的中断的触发源是否设置正确?触发源的时间间隔?