This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
大家好、
我正在为半桥转换器配置互补 PWM (高侧和低侧)。
频率和死区时间在第三个 EPMW1B (LS)的下降沿之前是正确的。 下面附上了 ePWM 的代码。 互补 ePWM 由死区模块生成。
我想知道 ePWM 的启动行为是否受到控制、以及哪些寄存器与哪些寄存器相关?
(* ePWM[n]).TBCTL.bit.PRDLD = TB_SHADOW;//设置 CTR=0上的负载
(* ePWM[n]).TBPRD =周期-1;// PWM 频率= 1/周期
(* ePWM[n]).TBPHS.Half.TBPHS = 0;
(* ePWM[n]).TBCTR = 0;
(* ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UP;
(* ePWM[n]).TBCTL.bit.HSPCLKDIV = TB_DIV1;
(* ePWM[n]).TBCTL.bit.CLKDIV = TB_DIV1;
(* ePWM[n]).TBCTL.bit.PHSEN = TB_DISABLE;
(* ePWM[n]).TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//同步"下流"
//计数器比较子模块寄存器
(* ePWM[n]).cmpa.half.cmpA =周期/2-1;//初始设置占空比50%
(* ePWM[n]).CMPB = 0;//初始设置占空比0%
(* ePWM[n]).cmPCTL.bit.SHDWAMODE = CC_SHADOW;
(* ePWM[n]).cmPCTL.bit.LOADAMODE = CC_CTR_PRD;
//操作限定符子模块寄存器
(* ePWM[n]).AQCTLA.bit.ZRO = AQ_SET;
(* ePWM[n]).AQCTLA.bit.CAU = AQ_CLEAR;
(* ePWM[n]).AQCTLB.bit.ZRO = AQ_NO_ACTION;
(* ePWM[n]).AQCTLB.bit.CAU = AQ_NO_ACTION;
(* ePWM[n]).AQCTLB.bit.PRD = AQ_NO_ACTION;
//高电平有效互补 PWM -设置死区
(* ePWM[n]).DBCTL.bit.in_mode = DBA_ALL;
(* ePWM[n]).DBCTL.bit.out_mode = DB_full_enable;
(* ePWM[n]).DBCTL.bit.POLSEL = DB_ACTV_HIC;
(* ePWM[n]).DBRED = 10;
(* ePWM[n]).DBFED = 10;
谢谢!
田
田
如果您启用 PWM、那么更改配置当然会发生变化。 尝试禁用 PWM 输出、完全配置 PWM、然后启用 PWM 输出。 有多种方法可以实现这一点、一种方法是将引脚配置为 GPIO、配置 PWM、然后切换 GPxMUXy 中的值以启用 PWM 的输出。
此致、
Cody