请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F280049 工具/软件:Code Composer Studio
我要执行两相交错、因此我需要对两个 PWM 进行相移。 我将 PWM1设置为主器件、而 PWM2、PWM5和 PWM8从器件。 当我更改 EPwm2Regs.TBPHS.bit.TBPHS 时、PWM2可以执行相移。 但我无法更改 PWM5和 PWM8的相位。 此外、当我测试 PWM5/PWM8和 PWM1波形时、我发现 PWM5/PWM8的相位随 PWM1不断变化。 我对 PWM2、PWM5和 PWM8具有完全相同的配置。 以下是我的配置代码。
(* ePWM[j]).TBCTL.bit.PRDLD = TB_SHADD;//设置立即负载 (* ePWM[j])。TBPRD =周期-1;// PWM 频率= 100M /(周期-1)在向上计数模式 //(* ePWM[j])下;* CMPRD =周期0.0.5;// PWM 频率= 100M = 1 (* 。pA = 1)在初始时间(* ePWM[100M = 1)。 //初始化 HRPWM 扩展 (* ePWM[j])。CMPB.bit.CMPB = PERIOD*0.1;//初始设置占空比50% (* ePWM[j])。CMPB.ALL |=(1 << 8);//初始化 HRPWM 扩展 (* ePWM[j])。TBPHS.all = 0 (* ePWM=tb = 1);tb.tb.tb = 1 (* ePWM=tb.tb = 1);tbtb.tb = ePWM=t.t.tb = 1 (* ePWM=tb.tb = 1);tb.tb.tb.tb.tb = 1 (* ePWM=tb.tb.tb = 1);tb.tb.tb.tb.tb = 1 (* ePWM=ePWM=eTb.t.tb = 1);tb.tb.tb = ePWM=e //相位延迟180度 //(* ePWM[j])。TBPHS.bit.TBPHS = 2; (* ePWM[j])。TBCTL.bit.SYNCOSEL = TB_SYNC_IN; (* ePWM[j])。TBCTL.TSN = TB_ENABLE; } if (MODE = tBIT.tb.tb.tpwm = t.t.t.tb )(* ePWM=tb = tb.tb.tb = tb.tb.tb = tb.tb (* ePWM=t.tb.tb.tb)(* ePWM=tb.t.tb.tb.tb = tb.tb = 1)(* ePWM[tb.tb.tb.tp.t.t.tp.tp.tp.tp.tp.tp.tp.tb = 1)(* eP=tb.tp.tb.tb = tb.tb.tp. (ePWM[j]).CMPCTL.bit.SHDWAMODE = CC_SHADODE; (* ePWM[j]).CMPCTL.bit.SHDMODE = CC_SHADD; //(* ePWM[j]).AQCTLA.bit.ACQ=AQPWM.j.eHR=ePWM=eQ=eHRFM.j.ePWM=ePWM=eQ=eQ.eHR.j.ePWM=eQ=ePWM=eQ.eQ.j.ePWM=eQ=ePWM=eHR.eQ.j.j.j.j.ePWM=eHR.eQ.eQ.ePWM=eQ=ePWM=eQ=ePWM=eQ=eQ.j.j.eQ=eQ.ePWM=ePWM=eQ=eQ.ePWM=eQ=eQ.ePWM=ePWM=ePWM=eQ=eQ.eQ.e //下降沿上的 MEP 控制 (* ePWM[j]).HRCNFG.bit.CTLMODEB = HR_CMP; (* ePWM[j]).HRCNFG.bit.HRLOADB = HR_CTR_ZERO _PRD; //#if (AUTOCONVERT) (* ePWM[j]).HRCNFG =自动 转换1 /自动转换周期/ePWM=/#/ePWM=/ePWM1/自动转换周期/#./ePWM=/ePWM=/ePWM=/#./ePWM=/ePWM=/#.tr./ePWM=/ePWM=/ePWM= (* ePWM[j]).HRPCTL.bit.TBPHSHRLOADE = 1;//启用 TBPHSHR SYNC (* ePWM[j]).HRMSTEP.ALL = MEP_ScaleFactor; EDIS; (* ePWM[j])。DBCTL.BIT.IN_MODE = DBA_ALL;/DBM3A.DDEP[*上升沿和下降 沿/ DP.DP.DPWM=D](*延迟时间)。 10n * DBRED (* ePWM[j]).DBFED.bit.DBFED =死区时间;//下降沿延迟计数。 ED10n DBFED (* ePWM[j]).DBCTL.bit.POLSEL = 0x02;//EPWM3B 反相 (* ePWM[j]).DBCTL.bit.out_mode = 0x3;//两个 EPWM3A EPWM3B 都有死区函数 EALLOW; (* ePWM[j]; * eTRM[tZ1.j]= t.t1.tpwm.j);* eTRC = t.t.t1.t.t.twm.t1.t.twm.j](* eTRPm.t.t.t.t.t.t.t.t.j = t.t.t.twm.tb void configHRPWM5 (uint16_t j、uint16_t 周期、uint16_t 死区时间、uint16_t 模式) { (* ePWM[j]).TBCTL.bit.PRDLD = TB_SHADD;//设置立即负载 (* ePWM[j])。TBPRD =周期-1;//在 ePWM=100m 周期(* ePWM=100m = 1)/ePWM=100m 周期(*频率)/ePWM=100m 周期数(*在 ePWM=100m = 1)/ ePWM=100m 周期数(* 1)/ePWM=100m 周期数(* 1) //初始设置占空比50% (* ePWM[j]).cmpa.bit.cmpaHR =(1 << 8);//初始化 HRPWM 扩展 (* ePWM[j]).cmpb.cmpb =周期计数0.1;//初始设置占空比50% ( * ePWM[j]).cmpwm = t.tb (* ePWM=eTb.eTb.j );[ePWM=eTb.eTb.ePWM=0 = 0 ( * eTb.t.tb.tp.r.r.tpwm = 1);(* eTb.tb = ePWM=eTb.tb = eTb.tb = eTb.t.tb = eTb.tb = 0);(* eTb.tb.tb = eTb.tb. (ePWM[j]).TBCTL.bit.PHSEN = TB_DISABLE; } if (mode = 0) { //(* ePWM[j]).TBPHS.bit.TBPHS = PERIOD* 0.5;//相位延迟180度 (* tpwm[j]).tbpwm.t.tb = 0; * tbtpwm.t.t.tb = tb (* tb.tpwm.t.t.t.t.tb = 1 )(* epwm.t.t.t.t.t.t.tb = tb = tb = 1)(* epwm.t.t.t.t.tb = tb = tb.tb.t.tb = tb = 1)(* epwm.t.t.t.t.t.t.t.tb = t.tb = tb = tb = tb (* epwm.t.t.t.t.t.t.t.tb (ePWM[j]).CMPCTL.bit.SHDWAMODE = CC_SHADODE; (* ePWM[j]).CMPCTL.bit.SHDMODE = CC_SHADD; //(* ePWM[j]).AQCTLA.bit.ACQ=AQPWM.j.eHR=ePWM=eQ=eHRFM.j.ePWM=ePWM=eQ=eQ.eHR.j.ePWM=eQ=ePWM=eQ.eQ.j.ePWM=eQ=ePWM=eHR.eQ.j.j.j.j.ePWM=eHR.eQ.eQ.ePWM=eQ=ePWM=eQ=ePWM=eQ=eQ.j.j.eQ=eQ.ePWM=ePWM=eQ=eQ.ePWM=eQ=eQ.ePWM=ePWM=ePWM=eQ=eQ.eQ.e //下降沿上的 MEP 控制 (* ePWM[j]).HRCNFG.bit.CTLMODEB = HR_CMP; (* ePWM[j]).HRCNFG.bit.HRLOADB = HR_CTR_ZERO _PRD; //#if (AUTOCONVERT) (* ePWM[j]).HRCNFG =自动 转换1 /自动转换周期/ePWM=/#/ePWM=/ePWM1/自动转换周期/#./ePWM=/ePWM=/ePWM=/#./ePWM=/ePWM=/#.tr./ePWM=/ePWM=/ePWM= (* ePWM[j]).HRPCTL.bit.TBPHSHRLOADE = 1;//启用 TBPHSHR SYNC (* ePWM[j]).HRMSTEP.ALL = MEP_ScaleFactor; EDIS; (* ePWM[j])。DBCTL.BIT.IN_MODE = DBA_ALL;/DBM3A.DDEP[*上升沿和下降 沿/ DP.DP.DPWM=D](*延迟时间)。 10n * DBRED (* ePWM[j]).DBFED.bit.DBFED =死区时间;//下降沿延迟计数。 ED10n DBFED (* ePWM[j]).DBCTL.bit.POLSEL = 0x02;//EPWM3B 反相 (* ePWM[j]).DBCTL.bit.out_mode = 0x3;//两个 EPWM3A EPWM3B 都有死区函数 EALLOW; (* ePWM[j];* eZRC.tpwm=t1.j]( * eTRC.t.t1.tpwm=t1.t1.t1.t1.tpwm=t1.t1.t1.j]);(* eTRPm=t.t.t.t.t.t.t1.t.t.t.t1.twm=t.t1.