TMS320F28374S: PWM移相控制下出现了异常的驱动波形

Part Number: TMS320F28374S

想用一块DSP1的EPWM1模块在CTR=0时输出SYNC信号,用来给另外一块DSP2的EPWM1模块进行同步

两块DSP都是使用增减计数模式,周期寄存器是都是2500,都在上升沿CTR=CMP时置低电平,下降沿CTR=CMP时置高电平

DSP2的相移加载数值设置成一个较小的非零数据,10U

测试发现当DSP2的占空比很小时,却输出了一个异常的常高电平

从上图可以看到,中间位置的同步信号到来后,DSP2的EPWM计数寄存器应该会被加载成10,对应的比较寄存器数据应该是接近于零的

理论上此时的输出PWM占空比应该近似为0,结果却出现了占空比近似为1的驱动

论坛上有不少类似的相移造成驱动丢失的问题,但都出现在改变相移数据的时候

但我这里是固定了DSP2的EPWM1模块的相移数据(固定为10U)

为何也会出现这种问题呢?

我分析是不是因为如上图所示,假设此时的比较寄存器可能是6,同步信号到来后,会把CPM寄存器的数据从4直接更新为10,错过了上升沿的比较匹配

导致高电平一直没有拉低,直到下降沿的比较匹配才把PWM拉点,由此出现了接近一个周期的PWM高电平输出

不知道是否是因为这个原因?

测试看过同步信号,很稳定的每个周期都有,那么每个周期都会触发DSP2的EPWM1模块进行相移操作

因此下一次相移信号到来的时候,计数寄存器的数据应该与相移加载数据非常接近吧?这样应该不会错过比较匹配才对啊

经过一个PWM周期后的计数寄存器能和理论值有多大的误差呢?理论上晶振时钟很稳定的话,经过一次同步相移操作后,后面每次相移信号到来的时刻,计数寄存器的数据和相移寄存器的数据都是相同的了吧