主题中讨论的其他部件: C2000WARE
工具/软件:Code Composer Studio
您好,
我正在为ZVS全桥应用开发TMS320f2.8075万 32位微控制器。
我使用了两组PWM (PWM2A,PWM2B和PWM6A,PWM6B)来生成相移PWM。 PWM2B和6B分别是PWM2A和6A的互补信号。 PWM2A和6A对应于顶部开关,PWM2B和6B对应于底部开关。脉冲宽度是使用CMP寄存器为50 % 占空比设置的。 TBPHS寄存器用于相移PWM。 我发现当PWM打开时,观察到的第一个脉冲小于50 % 占空比,PWM2A和PWM6A的脉冲也不同(见下图)。我尝试打开不同的时间,每个实例显示不同的行为。 请注意,此行为仅在PWM的第一个周期中观察到。 有人能告诉我什么可能出错了吗? 以下是用于PWM模块的配置:
EPwm2Regs.TBPRD = 1200;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;
EPwm2Regs.TBCTL.bit.PRDLD = TB_shadow;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//高速时基时钟预刻度位,TBCLK = EPWMCLK /(HSPCLKDIV x CLKDIV),PWM周期= 2×TBPRD×TBCLK
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.FREE_SOFT = 2U;
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm2Regs.CMPA.bit.CMPA = 300;
EPwm2Regs.CMPB.bit.CMPB = 300;
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm2Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
EPwm2Regs.AQCTLA.bit.CBD = AQ_NO_ACTION;
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm2Regs.CMPCTL.bit.LOADASYNC=CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZE;
EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.CBU = AQ_NO_ACTION;
EPwm2Regs.AQCTLB.bit.CBD = AQ_NO_ACTION;
EPwm2Regs.AQCTLB.bit.CAD = AQ_SET;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm2Regs.CMPCTL.bit.LOADASYNC=CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZE;
EPwm6Regs.TBPRD = PWM_TBPRD;
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;
EPwm6Regs.TBCTL.bit.PRDLD = TB_shadow;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//高速时基时钟预刻度位,TBCLK = EPWMCLK /(HSPCLKDIV x CLKDIV),PWM周期= 2×TBPRD×TBCLK
EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm6Regs.TBCTL.bit.FREE_SOFT = 2U;
EPwm6Regs.TBCTL.bit.PHSEN = TB_ENable;
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm6Regs.CMPA.bit.CMPA = 300;
EPwm6Regs.CMPB.bit.CMPB = 300;
EPwm6Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm6Regs.AQCTLA.bit.CBD = AQ_NO_ACTION;
EPwm6Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
EPwm6Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm6Regs.CMPCTL.bit.LOADASYNC=CC_CTR_ZERO;
EPwm6Regs.CMPCTL.bit.LOADAMODE=CC_CTR_PRD;
/*用于输出B */
//操作限定符子模块寄存器
EPwm6Regs.AQCTLB.bit.CAU = AQ_CLEAR;
EPwm6Regs.AQCTLB.bit.CBU = AQ_NO_ACTION;
EPwm6Regs.AQCTLB.bit.CBD = AQ_NO_ACTION;
EPwm6Regs.AQCTLB.bit.CAD =AQ_set;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm6Regs.CMPCTL.bit.LOADASYNC=CC_CTR_ZERO;
EPwm6Regs.CMPCTL.bit.LOADAMODE=CC_CTR_PRD;
我正在更新CLA中断中PWM 6的TBPHS寄存器。
图:M是C1和C3之间的差异。
提前感谢!
此致,
Anjana
