Thread 中讨论的其他器件:controlSUITE
尊敬的香榭丽舍
我正在 HVMotor Kit 上运行 HVPM_Sensorless_2833x 演示、并与 中的 PWM_INIT_MACRO 相混淆 。 文件路径为 C:\ti\controlSUITE\libs\app_libs\motor_control\drivers\F2833x_v2.0
此宏首先设置*ePWM[CHX].TBCTL.bit.PHSEN=1、然后让'*ePWM[CHX]).TBCTL.ALL = PWM_INIT_STATE 、而 PWM_INIT_STATE 不包含 PHSEN。
请帮助我了解为什么使用这种方法? 非常感谢!
#define PWM_INIT_MACRO (CH1、CH2、ch3、v)\ /*设置同步*/\ (* ePWM[CH1]).TBCTL.bit.SYNCOSEL = 0; /*直通*/\ (* ePWM[CH2]).TBCTL.bit.SYNCOSEL = 0; /*直通*/\ (* ePWM[ch3]).TBCTL.bit.SYNCOSEL = 0; /*直通*/\ /*允许同步每个计时器*/\ (* ePWM[CH1]).TBCTL.bit.PHSEN = 1;\ (* ePWM[CH2]).TBCTL.bit.PHSEN = 1;\ (* ePWM[ch3]).TBCTL.bit.PHSEN = 1;\ \ /* EPWM1-EPWM3*的初始定时器基周期寄存器*/\ (* ePWM[CH1]).TBPRD = v.PeriodMax;\ (* ePWM[CH2]).TBPRD = v.PeriodMax;\ (* ePWM[ch3]).TBPRD = v.PeriodMax;\ /*用于 EPWM1-EPWM3*的 Init Timer-Base 相位寄存器*/\ (* ePWM[CH1]).TBPHS.Half.TBPHS = 0;\ (* ePWM[CH2]).TBPHS.Half.TBPHS = 0;\ (* ePWM[ch3]).TBPHS.half.TBPHS = 0;\ /*用于 EPWM1-EPWM3*的 Init Timer-Base 控制寄存器*/\ (* ePWM[CH1]).TBCTL.ALL = PWM_INIT_STATE;\ (* ePWM[CH2]).TBCTL.ALL = PWM_INIT_STATE;\ (* ePWM[ch3]).TBCTL.ALL = PWM_INIT_STATE;\
/*------------------ 用于 PWM 生成的 F2833x 时基控制寄存器的初始化常数。 将定时器设置为在仿真挂起时自由运行、向上计数-向下计数模式 预分频器1。 -------------------------------------------------- */ #define PWM_INIT_STATE (FREE_RUN_FLAG + \ PRDLD_IMMETER+ \ Timer_CNT_UPDN + \ HSPCLKDIV_PRESALE_X_1 +\ CLKDIV_PRESALE_X_1 +\ PHSDIR_CNT_UP + \ CNTLD_DISABLE)