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.

[参考译文] TMS320F28377D:ePWM 清除问题

Guru**** 2528790 points
Other Parts Discussed in Thread: TMS320F28377D

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/979887/tms320f28377d-epwm-clear-issue

器件型号:TMS320F28377D

尊敬的先生:

我们将 TMS320F28377D 用于 VFD 应用。 禁用栅极脉冲时、EPWMxA (顶部)和 EPWMxB (底部)之间会出现死区问题、如下图所示  

ePWM 用作辅助配置、禁用栅极脉冲时使用的是以下行。 

///----------------------------------------------
void disable_gate_pulse (void) { EPwm1Regs.AQCSFRC.bit.CSFA = 01;//01:强制输出 端 EPwm1Regs.DBCTL.bit.POLSEL = 00;//00:高电平有效(AH)模式。 EPWMxA 和 EPWMxB 均未反相(默认)。 EPwm2Regs.AQCSFRC.bit.CSFA = 01; EPwm2Regs.DBCTL.bit.POLSEL = 00; EPwm3Regs.AQCSFRC.bit.CSFA = 01; EPwm3Regs.DBCTL.bit.POLSEL = 00; } void ENABLE_GATE 脉冲(void 1DBCTL = 00;EPwmPOL.POL.POL.POLL.BLE= 00)//10:高电平有效互补(AHC)。 EPWMxB 反相。 EPwm1Regs.AQCSFRC.BIT.CSFA = 00;//00:强制禁用、即 不会影响 EPwm2Regs.DBCTL.bit.POLSEL = 10; EPwm2Regs.AQCSFRC.BIT.CSFA = 00;EPwm3Regs.DBCTL.bit.POL= 00;EPw24QCSRC.00.POL= 10;EPW3RC.POL.POL.BIT.FFA = 10;EPw3RC.POL.POL.POL.POL= 0AQFPW3RFA

是否有任何同时禁用所有 ePWM 的方法?

此致、

Amtech

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Amtech:

    您可以使用跳闸区域子模块强制 ePWM 输出为低电平。 该子模块位于死区子模块之后 、该子模块会创建互补信号、因此您需要配置跳闸区域以强制 EPWMxA 和 EPWMxB 为低电平。 该子模块可配置为单次触发或逐周期触发。 技术参考手册中介绍了这两种方法 

    此致、

    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Marlyn 推荐 tripzone。 但在我们的情况下、这是不可能的、因为我们使用 tripzone 来处理关键故障。 因此、如果我们同时使用跳匣区域进行跳闸和停止、则很难区分。

    因此、我们修改了在停止期间同时切断栅极脉冲的代码、而不是这样。 代码如下:

    void disable_gate_pulse (void)
    {
    EPwm1Regs.AQCSFRC.bit.CSFA = 01;
    EPwm1Regs.AQCSFRC.bit.CSFB = 01;
    EPwm1Regs.DBCTL.bit.OUT_MODE = 0;
    
    
    EPwm2Regs.AQCSFRC.bit.CSFA = 01;
    EPwm2Regs.AQCSFRC.bit.CSFB = 01;
    EPwm2Regs.DBCTL.bit.OUT_MODE = 0;
    
    
    EPwm3Regs.AQCSFRC.bit.CSFA = 01;
    EPwm3Regs.AQCSFRC.bit.CSFB = 01;
    EPwm3Regs.DBCTL.bit.OUT_MODE = 0;
    
    
    x24.fst_tm_run = 0;
    }
    
    void enable_gate_pulse (void)
    {
    EPwm1Regs.DBCTL.bit.POLSEL = 10;
    EPwm1Regs.AQCSFRC.bit.CSFA = 00;
    EPwm1Regs.AQCSFRC.bit.CSFB = 00;
    EPwm1Regs.DBCTL.bit.OUT_MODE = 3;
    
    EPwm2Regs.DBCTL.bit.POLSEL = 10;
    EPwm2Regs.AQCSFRC.bit.CSFA = 00;
    EPwm2Regs.AQCSFRC.bit.CSFB = 00;
    EPwm2Regs.DBCTL.bit.OUT_MODE = 3;
    
    EPwm3Regs.DBCTL.bit.POLSEL = 10;
    EPwm3Regs.AQCSFRC.bit.CSFA = 00;
    EPwm3Regs.AQCSFRC.bit.CSFB = 00;
    EPwm3Regs.DBCTL.bit.OUT_MODE = 3;
    } 

    您能否验证此代码是否存在任何问题?

    此致

    Rishabh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rishabh、

    我没有看到您配置的代码有任何不正确的地方。  

    您可能考虑的另一个选项是 SOFTPRES2寄存器。 这将重置您选择的 ePWM 模块、并将所有值设置为默认值。 一旦您希望再次启用脉冲、您将必须执行初始化过程来配置 ePWM 模块、但这样您将以已知良好的状态和预期行为启用输出。

    此致、

    Marlyn