[资料分享] C2000中ePWM模块间同步延时的问题

灞波儿奔   2020-1-11 20:28 楼主

在C2000 DSP的ePWM模块与EV模块有很大的差别,EV模块各路PWM共用一个时基,而ePWM模块则有各自的时基,通过同步信号来同步。但同步是有时间开销的:

The delay from internal master module to slave modules is given by:
– if ( TBCLK = EPWMCLK): 2 x EPWMCLK
– if ( TBCLK != EPWMCLK):1 TBCLK

这个开销表现为主模块已经计数到1或者2了,才发出同步信号,这时从模块其实也已经计数到1或者2了,但在接收到同步信号以后从模块又把TBPHS寄存器的值Load到TBCTR,造成从模块与主模块之间的相位延时,同时周期也会发生异常(多了两个时钟)。因此在这种应用场合下不能把TBPHS设成0(官方文档示例代码),而要根据分频设置把TBPHS设成1或者2.

对F28075芯片来说上述引用的文字也不正确,F28075的TBCLK实际上经过了三级分频:

SysClk------ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV------EPWMCLK---TBCTL.HSPCLKDIV-----Clk1-------TBCTL.CLKDIV---------TBCLK

而当TBCLK!=EPWMCLK时的1个时钟延时并不是1个TBCLK,而是1个Clk1,但是TBPHS的单位又是TBCLK,因而如果要做这个延时补偿一定要把TBCTL.CLKDIV设成0,否则无法补偿
 

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复