TI中文支持网
TI专业的中文技术问题搜集分享网站

28335片内EPWM同步时序问题

Other Parts Discussed in Thread:TMS320F28335

Hi, TI

我用的芯片是TMS320F28335 

开发环境是CCS6.2.5

我现在用到了EPWM1~EPWM6这6个外设,周期和计数方式都一样,其中:

PWM1的同步信号输出源配置为:EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;

其他2-6模块的同步输出源配置为:EPwmXRegs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

也就是说,当EPWM1的计数器清零的时候,将所有的EPWM模块同步一次。

我看datasheet里描述,这个芯片的同步信号是从EPWM1到EPWM2和EPWM4。EPWM4到EPWM5。EPWM5到EPWM6。

我想让EPWM6和EPWM1的计数值,完全保持一样即同时从0开始递加,同时达到周期值

但是因为EPWM6的同步输入信号经过了EPWM1,EPWM4,EPWM5才到了EPWM6,不知道这个之间会有多少的延时,会不会导致EPWM6收到同步信号的时候,EWPM1的计数值已经大于1了?

还有我期望在EPWM6的计数器达到周期值的时候,产生一次中断。 会不会有一个情况,EPWM6还没计数到周期值,同步信号就已经进来了,然后EPWM6的计数器就清零,导致没有进中断?

Green Deng:

你好,同步的话是会产生1~2个SYSCLK的误差。可以参考例程中的方法做一下时基同步:
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;

InitEPwm1Example();
InitEPwm2Example();
InitEPwm3Example();

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;

,

Yang Cheng1:

您好,感谢您的回复。

延时1-2个时钟周期,控制系统应该是可以接受的。

那EPWM6会不会可能因为同步信号来的时候,计数器还没有累加到PRD就被清零了,导致漏掉PRD这个中断呢?

,

Green Deng:

理论上来说,如果没有时基校准的话确实会有这种可能,所以一般同步都会加上补偿。

,

user6576535:

同步信号没有延时,只要配置了SYNCOSEL = 00 (SYNCIN),信号就是一路通行过来的,可以看成一根导线,是组合逻辑。到达每个EPWM模块的时间是完全相同的。1~2个系统时钟周期的误差是指信号到达后,计数器置入周期值的延时。 如果TB子模块没有分频,即TBCLK = SYSCLKOUT,那么延时是2个系统时钟周期。 意思是当EPWM1产生同步信号的瞬间,经过2个时钟周期,被同步的模块才能将TBPHS设置的值置入计数器。例如设置EPWM1. SYNCOSEL = 01 (CTR = 0时输出同步脉冲),只要你后续的模块EPWM2、EPWM3、EPWM4、EPWM5都设置了SYNCOSEL = 00 (输入脉冲直接输出),那么这个信号对于后续模块都是在CTR = 0同时到达的,这一点可以通过状态寄存器TBSTS的同步事件状态位观察是不是在该时刻发生了同步事件。 只是后续模块在当前时刻不置数,1个周期后CTR = 1也不置数,2个周期后CTR = 2的上升沿才置数,即TBPHS置入TBCTR,即发生了同步。如果设置TBPHS = 200, 那么你会发现实际的计数值差是198,这是因为2个周期之后才置数;所以若要想保持差值是200,就要考虑延时,设置TBPHS = 200 + 2 = 202,这样差值就是200.

如果TB子模块有分频,即TBCLK ~= SYSCLKOUT,也就是比系统时钟慢,那么一个TBCLK就可以同步了。即设置200 + 1 = 201.

// ##############注意!!################

但是你的需求是“将EPWM6和EPWM1完全保持一样即同时从0开始递加,同时到达周期值”,那么不要配置同步脉冲输出位SYNCOSEL,只要*时基时钟同步*就可以了。SYNCOSEL是为了保持EPWM模块计数器之间的差值(相位差),是*计数器的同步*。这是两种同步方式^_^,两个完全不同的功能^_^例程里都是有时钟同步的,你只要执行了这个时钟同步,就可以保证它们的计数器是同时开启的;如果又设置了同步脉冲同步,会导致EPWM6的计数器到某个时刻置入相位值TBPHS,这样的用法是不符合你预期的^_^

,

user6576535:

补充一下手册截图:

//

//

//

同步脉冲同步是指将相位值置入计数器中,实际上是“计数器同步”,时基时钟同步位PCLKCRO0.TBCLKSYNC负责同时开启或停止所有EPWM模块的时钟,实际上是“时钟同步”。计数器置入相位值,可以保持EPWM模块之间的相位差;时钟同步是为了保证所有EPWM计数器在同一时刻开始工作!

,

Yang Cheng1:

十分感谢您的回复。

,

Yang Cheng1:

十分感谢您的回复。

,

Green Deng:

客气了

赞(0)
未经允许不得转载:TI中文支持网 » 28335片内EPWM同步时序问题
分享到: 更多 (0)