You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TMS320F28335的EPWM1死区模块工作异常技术求助

PMSM矢量控制EPWM1死区模块异常排查求助

EPWM2工作正常,但EPWM1B与EPWM1A信号完全一致,未生成预期的互补带死区信号。相关配置代码如下:

EPWM1配置代码

EPwm1Regs.TBPRD = PERIOD;// Period =  TBCLK counts
EPwm1Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Master module
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // Sync down-stream module
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // set actions for EPWM1A
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary
EPwm1Regs.DBFED = DEAD_TIME; //
EPwm1Regs.DBRED = DEAD_TIME; //

EPWM2配置代码

EPwm2Regs.TBPRD = PERIOD; // Period = 1600 TBCLK counts
EPwm2Regs.TBPHS.half.TBPHS = 0; // Set Phase register to zero
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Symmetrical mode
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Slave module
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // sync flow-through
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // set actions for EPWM2A
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary
EPwm2Regs.DBFED = DEAD_TIME; //
EPwm2Regs.DBRED = DEAD_TIME; //

比较值初始化与更新代码

初始化

EPwm1Regs.CMPA.half.CMPA = 0; // adjust duty for output EPWM1A
EPwm2Regs.CMPA.half.CMPA = 0; // adjust duty for output EPWM2A

更新

EPwm1Regs.CMPA.half.CMPA = PERIOD - Sa;
EPwm2Regs.CMPA.half.CMPA = PERIOD - Sb;

Sa、Sb为调制算法输出值,参考手册sprug04a的3.4示例配置,已用示波器确认信号异常,求排查方向。


排查建议

  • 补全EPWM1B的动作寄存器配置:当前仅配置了AQCTLA(EPWM1A的动作逻辑),死区模块需要EPWM1B的基础动作作为输入参考。需明确配置AQCTLB的CAU为AQ_CLEAR、CAD为AQ_SET,与EPWM1A的动作形成互补。EPWM2可能默认完成了该配置,而EPWM1未设置。
  • 验证死区输入源配置:确认DBCTL.bit.IN_MODE的取值,需确保其设置为DB_IN_SRC_A(默认值,但要排查是否被其他代码修改),否则死区模块不会以EPWM1A为基准生成互补信号。
  • 检查寄存器配置生效情况:在EPWM1配置完成后,立即读取DBCTL、DBFED、DBRED寄存器的值,对比EPWM2的对应寄存器,确认配置未被其他代码意外覆盖。
  • 校验PERIOD与DEAD_TIME数值合理性:如果DEAD_TIME数值过大(接近或超过PERIOD的一半),在对称升降计数模式下,死区模块无法正常生成互补信号;同时检查PERIOD宏定义是否符合预期值。
  • 排查GPIO引脚复用配置:确认EPWM1B对应的GPIO引脚是否被正确配置为EPWM输出功能,避免被误设为通用IO或其他外设功能。
  • 检查EPWM1时钟使能状态:部分TI MCU的EPWM模块死区功能需要单独的时钟使能,确认PCLKCR等全局时钟寄存器中EPWM1的时钟使能位已正确置位。

内容的提问来源于stack exchange,提问作者Muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:40:23