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.

[参考译文] TMS320F28375S:TZCTL -跳匣区域配置是否冗余?

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/761550/tms320f28375s-tzctl---are-trip-zone-configurations-redundant

器件型号:TMS320F28375S

您好!

这是一个与 PWM 信号一起使用的跳闸区域模块相关的概念问题、而不是基于单个特定问题。  在 TZCTL 寄存器中、有6个不同的可配置字段:

  • DCAEVT1
  • DCAEVT2
  • DCBEVT1
  • DCBEVT2
  • TZA
  • TZB

我无法确定 DCxEVTy 配置的用途、因为在我的实验中、这些配置无效。  我将 DCAEVT1设置为跳闸信号。  如果我将 DCAEVT1设置为强制 PWM 信号为低电平、并将 TZA 设置为无效、则跳闸永远不会触发。  为了使其正常工作、我还需要设置 TZA 以强制 PWM 处于低电平。

但是、如果我将 TZA 设置为强制 PWM 信号为低电平并将 DCAEVT1设置为无效、则信号仍会跳闸。  因此、DCAEVT1设置为什么并不重要、因为跳闸完全由 TZA 控制。

这是正确的解释吗?  DCAEVT1和其他器件是否有任何实际用途?

谢谢、

Jeff

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

    Jeff、

    TZx 信号的优先级高于 DCxEVTy 信号、它们之间的关系可能会有点混淆。

    1. 如果直流事件设置为 TZ 事件、直流事件强制 PWM 为低电平、TZ 强制 PWM 为高电平、则 TZ 事件优先。
    2. 如果直流事件被设置为 TZ 事件,而直流事件强制 PWM 为低电平,且 TZ 被设置为“不执行任何操作”,则直流甚至应生效。
    您似乎已经尝试配置上面的#2、但它无法正常工作、这是正确的吗?
    您是否已验证 DCAEVT1是否正确触发?
    请注意:针对 DCxEVTy 事件的操作必须与 TZ 操作分开配置、除非您使用 DCxEVTy 信号作为 CBC 或 OSHT 跳闸逻辑的输入。 这可以在 TZCTL 寄存器中完成。
    此致、
    Cody  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Cody、

    都是有道理的。  我很确定我已经为您概述的情形2配置了它;下面是用于实现该目的的代码。

    {
    EALLOW;
    
    /*时钟配置*/
    ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0U;/* EPWMCLK = PLLSYSCLK / 1 = 200MHz */
    EPwm1Regs.TBCTL.bit.CLKDIV = 7U;//设置 CLKDIV = 8 *////* PWM1 CLK = 111607Hz *
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = 7U;/*设置 HSPCLKDIV = 1 */
    
    /**-清除计数器*/
    EPwm1Regs.TBCTR = 0U;
    
    /**-设置控制操作*/
    EPwm1Regs.AQCTLA.bit.CAU = PWM_ACT_CLEAR;
    EPwm1Regs.AQCTLA.bit.ZRO = PWM_ACT_SET;
    
    /**-设置1ms 的周期*/
    EPwm1Regs.TBPRD = 700u;
    EPwm1Regs.CMPA.bit.CMPA = 350u; /*将占空比设置为100%*/
    
    /**- TRIP4的 ePWM Xbar 配置*/
    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX7 = 1U;//选择 INPUTXBAR4 (MUX7.1)*/
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX2 = 0U; /*禁用 MUX2 */
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX7 = 1U; /*启用 MUX7 */
    
    /**-数字比较 A 配置*/
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3U; /*选择 TRIP4作为 DCAH 源*/
    EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT4 = 1U; /*启用 TRIP4作为触发器*/
    EPwm1Regs.TZDCSEL.bit.DCAEVT1 = 2U; /* DCAH 高电平触发*/
    
    /**-选择 DCAEVT1作为 OneShot 源*/
    EPwm1Regs.TZSEL.bit.DCAEVT1 = 1U;
    
    /**-将输入 XBar 配置为从 OV 引脚读取*/
    InputXbarRegs.INPUT4SELECT = PWM_DEMO_PIN_OV;
    
    /**-将 DCFWINDOW 配置为100us 消隐*/
    EPwm1Regs.DCFWINDOW = 11u; /*~98.56us 但 whatevs */
    EPwm1Regs.DCFOFFSET = 0U;
    EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 1U; /*选择 DCEVTFILT 作为 DCAEVT1的源*/
    EPwm1Regs.DCFCTL.bit.PULSESEL = 1U; /*将窗口与 TBCTR 对齐= 0 */
    EPwm1Regs.DCFCTL.bit.SRCEL = 0U; /*选择 DCAEVT1进行过滤*/
    EPwm1Regs.DCFCTL.bit.BLANKINV = 0U;
    EPwm1Regs.DCFCTL.bit.Blanke = 1U; /*启用消隐*/
    
    /**-启用 ePWM1A */
    EPwm1Regs.TBCTR = 0U;
    EPwm1Regs.TBCTL.bit.CTRMODE = 0U;
    
    /**-配置行程控制操作*/
    EPwm1Regs.TZCTL.bit.TZA = 3U;
    EPwm1Regs.TZCTL.bit.DCAEVT1 = 2U;
    EDIS;
    }
    

    唯一的额外细节是、在这个配置中、我尝试创建一个消隐窗口、所以真正的跳闸源是 DCAEVTFLT、而不仅仅是 DCAEVT1。  使用此代码、不会采取跳闸操作、但在 TZFLG 中、DCAEVT1和 OST 位都指示发生了跳闸。

    我在上面使用的代码中是否存在缺陷?

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

    Jeff、

    您能否在下面的跳闸区域子模块图中突出显示您尝试设置的路径?

    此外、我建议您禁用直流事件滤波器、直到您验证是否已正确设置所有内容。 您可以检查是否存在已过滤的触发事件,即使窗口仅为:

    Jeff Campbell91 说:
    ////~98.56us,但 whatevs */

    此致、
    Cody

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

    Cody、

    我尝试激活的路径如下:

    为此、这就是我配置代码的方式(根据您的建议、现在删除了筛选):

    /*部分:GPIO 配置*/
    
    /**-配置 OV 开关引脚*/
    GPIO_SetupPinMux (PWM_DEMO_PIN_OV、GPIO_MUX_CPU1、0U);
    GPIO_SetupPinOptions (PWM_DEMO_PIN_OV、GPIO_INPUT、GPIO_SYNC);
    
    /** PWM 设置:*/
    
    /**-初始化 ePWM1A 的 GPIO */
    InitEPwm1Gpio();
    
    /*部分:PWM 配置*/
    
    EALLOW;
    
    /**-设置 ePWM 时钟分频器*/
    ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0U;/* EPWMCLK = PLLSYSCLK / 1 = 200MHz */
    
    /**-设置时钟分频器和计数模式*/
    EPwm1Regs.TBCTL.bit.CLKDIV = 7U;//设置 CLKDIV = 8 *////* PWM1 CLK = 111607Hz *
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = 7U;/*设置 HSPCLKDIV = 1 */
    
    /**-清除计数器*/
    EPwm1Regs.TBCTR = 0U;
    
    /**-设置控制操作(完全打开)*/
    EPwm1Regs.AQCTLA.bit.CAU = PWM_ACT_CLEAR;
    EPwm1Regs.AQCTLA.bit.ZRO = PWM_ACT_SET;
    
    /**-设置1ms 的周期*/
    EPwm1Regs.TBPRD = 700u;
    EPwm1Regs.CMPA.bit.CMPA = 350u; /*将占空比设置为50%*/
    
    /*部分:行程配置*/
    
    /**-将输入 XBar 配置为从 OV 引脚读取*/
    InputXbarRegs.INPUT4SELECT = PWM_DEMO_PIN_OV;
    
    /**- TRIP4的 ePWM Xbar 配置*/
    EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX7 = 1U;//选择 INPUTXBAR4 (MUX7.1)*/
    EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX7 = 1U; /*启用 MUX7 */
    
    /**-数字比较 A 配置*/
    EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3U; /*选择 TRIP4作为 DCAH 源*/
    EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT4 = 1U; /*启用 TRIP4作为触发器*/
    EPwm1Regs.TZDCSEL.bit.DCAEVT1 = 2U; /* DCAH 高电平触发*/
    
    /**-选择 DCAEVT1作为 OneShot 源*/
    EPwm1Regs.TZSEL.bit.DCAEVT1 = 1U;
    
    
    /**-配置行程控制操作*/
    EPwm1Regs.TZCTL.bit.TZA = 3U; /*忽略 TZA */
    EPwm1Regs.TZCTL.bit.DCAEVT1 = 2U; /*强制 DCAEVT1为低电平*/
    
    /**-启用 ePWM1A */
    EPwm1Regs.TBCTR = 0U;
    EPwm1Regs.TBCTL.bit.CTRMODE = 0U;
    
    EDIS;
    

    使用此配置、我可以观察到跳闸事件 DCAEVT1触发、但对 PWM 信号没有影响。  我可以通过将 TZCTL[TZA]设置为2 (强制为低电平)或0 (HiZ 模式)来解决此问题、但这似乎应该能够正常工作。

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

    Jeff、

    您已经部分配置了2次 PWM 跳变。

    1. 完全设置方法是直接使用 DCAEVT1、以橙色突出显示。
      1. 这不会锁存、仅在事件处于活动状态时瞬时、如果在低电平期间发生、您将永远看不到它。
      2. 如果未将 TZx 事件设置为"不执行任何操作"、这也会被 TZx 事件覆盖
    2. 部分设置路线是您以黄色突出显示的 TZA 路径。  
      1. 除了操作(TZCTL.bit.TZA)外、您似乎已经为 OSHT 行程配置了所有内容。 这就是当您启用 TZA 时、它似乎可以正常工作的原因。

    我相信您的困惑在于、DCAEVT 可用于直接跳闸 PWM、也可用作 OSHT 跳闸逻辑的 TZA 跳闸源。

    此致、
    Cody  

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

    这会显著清除问题。 我完全禁用了 OSHT 逻辑、它开始像我预期的那样工作。 您是对的、正是这种双路可能性路由让我感到困惑。

    感谢您的帮助!
    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒,很高兴我能帮忙!

    如果我在跳闸区域逻辑方面添加一些额外的措辞、您认为这会对其他客户有所帮助吗?

    当然、如果您有任何其他问题、可以随意开始另一个主题。

    此致、
    Cody
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这会有所帮助、是的。 在我的第一次阅读中、很难看到直流事件可以直接使用或作为 TZA/B 的输入;方框图中就暗示了这一点。