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.

[参考译文] TMS320F280049:使用 XBAR 的安全手册 ePWM 故障检测

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/974609/tms320f280049-safety-manual-epwm-fault-detection-using-xbar

器件型号:TMS320F280049

您好!

在安全手册 SPRUI78C 中提到了一个特性"使用 XBAR 的 ePWM 故障检测"。 是否有任何示例说明如何执行此操作以节省时间? 谢谢你

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

    您好 Juraj、  

    这不是我们在标准示例中涵盖的用例之一、因为实现方案需要具有特定于应用的相关性才能发挥作用。   

    您是否有需要的具体问题或说明?  

    谢谢、
    Krishna  

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

    您好!

    感谢您的回答。

    我的问题是、我们是否可以将其作为 OneShot tripzone 执行、或者它是否只能逐周期执行?

    您如何配置 TZ1 &!TZ2器件? 它是这样的:

    TZ1 -> ePWM_DC_TYPE_DCAH

    TZ2 -> ePWM_DC_TYPE_DCAL

    然后配置:

    ePWM_TZ_DC_OUTPUT _A1 -> ePWM_TZ_EVENT_DCXL_HIGH_DCXH_LOW

    或者如何操作? 因为这对我不起作用。

    无论如何、当 PWM 输出被关闭并且两个 PWM 都处于零时、我不明白如何处理状态、因为它也会触发 tripzone 并且无法启动。

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

    您好 Juraj、  

    感谢您的反馈。  我们正在寻找合适的域专家来帮助您。  我们很快会回来。

    谢谢!

    Krishna  

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

    是的、您可以将 ePWM 直流模块配置为在 DCxH 和 DCLL 上输出事件、然后获取该 DCEVT 并将其传递到 OST 或 CBC 逻辑、无论您需要哪种逻辑。

    NIMA

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

    您好!

    感谢您的回答。

    嗯、我尝试过、但它对我不起作用。 下面是我配置的内容:


    GPIO_setPadConfig (1、  GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig (12、GPIO_PIN_TYPE_INPin);

    Xbar_setInputPin (XBAR_Input1、 1U);
    Xbar_setInputPin (XBAR_INPUT2、12U);

       ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN1、ePWM_DC_TYPE_DCAL);
       //ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN3、ePWM_DC_TYPE_DCBL);
       ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN2、ePWM_DC_TYPE_DCAH);
       //ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN6、ePWM_DC_TYPE_DCBH);
       ePWM_setTripZoneDigitalCompareEventCondition (EPWM7_BASE、ePWM_TZ_DC_OUTPUT A2、ePWM_TZ_EVENT_DCXL_HIGH_DCXH_LOW);
       //ePWM_setTripZoneDigitalCompareEventCondition (EPWM7_BASE、ePWM_TZ_DC_OUTPUT _B2、ePWM_TZ_EVENT_DCXL_LOW);
       ePWM_setDigitalCompareEventSource (EPWM7_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_2、ePWM_DC_EVENT_SOURC_ORIG_SIGN);
       //ePWM_setDigitalCompareEventSource (EPWM7_BASE、ePWM_DC_MODULE_B、ePWM_DC_EVENT_2、ePWM_DC_EVENT_SOURCE _ORIG_SIGN);
       ePWM_setDigitalCompareEventSyncMode (EPWM7_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_2、ePWM_DC_EVENT_INPUT_NOT 已同步);
       //ePWM_setDigitalCompareEventSyncMode (EPWM7_BASE、ePWM_DC_MODULE_B、ePWM_DC_EVENT_2、ePWM_DC_EVENT_INPUT_NOT 已同步);
       ePWM_setTripZoneAction (EPWM7_BASE、ePWM_TZ_ACT_EVENT_TZA、ePWM_TZ_ACT_LOW); //将 ePWMxA 配置为在 TSB 跳闸时输出低电平
       //ePWM_setTripZoneAction (ulEPWM_base、ePWM_TZ_ACT_EVENT_TSZ、ePWM_TZ_ACT_LOW); //将 ePWMxB 配置为在 TSB 跳闸时输出低电平
       ePWM_DisableDigitalCompareSyncEvent (EPWM7_BASE、ePWM_DC_MODULE_A);
       //ePWM_DisableDigitalCompareSyncEvent (EPWM7_BASE、ePWM_DC_MODULE_B);
       ePWM_DisableDigitalCompareBlankingWindow (EPWM7_BASE);
       ePWM_DisableDigitalCompareWindowInverseMode (EPWM7_BASE);
       ePWM_selectCyclByCyclone TripZoneClearEvent (EPWM7_BASE、ePWM_TZ_CBC_PULSE_CLR_CNTR_ZERO);
       ePWM_enableTripZoneSignals (EPWM7_BASE、ePWM_TZ_SIGNEL_DCAEVT2 /*| ePWM_TZ_SIGNEL_DCBEVT2*/);

    重点是当我查看调试器时、我在启动时看到 PWM 关闭(两个输出都在逻辑0中):

    但是、当我打开 PWM 时、我看到 PWM 引脚交替:

      

    但 Xbar Input1和 INPUT2始终为逻辑1。 它不会改变。 它就像逻辑1中的锁存状态。

    TripZone 从未激活。  

    您能提出建议吗?

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

    如果您查看 XBAR 标志、它们将被锁存。 您必须在它们锁存后清除它们。

    NIMA

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

    清除 Xbar 标志是问题的一部分。 我无法清除每个中断过多的 PWM 脉冲。 因此、由于频繁清除、它只能实现 OST tripzone、而不能实现 CBC。。

    另一方面、PWM 输出无论如何也未锁存。 您能在我的配置中看到任何错误吗?

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

    标志是唯一被锁存的部分... 信号本身未锁存。 它会欺骗输入信号。

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

    感谢 Xbar 标志的解释。

    tripzone 完全未激活。 您是否在我之前发送的源代码中看到任何明显的错误?

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

    [引用用户="Juraj Koys"]

    GPIO_setPadConfig (1、  GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig (12、GPIO_PIN_TYPE_INPin);

    Xbar_setInputPin (XBAR_Input1、 1U);
    Xbar_setInputPin (XBAR_INPUT2、12U);

       ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN1、ePWM_DC_TYPE_DCAL);
       //ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN3、ePWM_DC_TYPE_DCBL);
       ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN2、ePWM_DC_TYPE_DCAH);
       //ePWM_enableDigitalCompareTripCombinationInput (EPWM7_BASE、ePWM_DC_Combinational_TRIPIN6、ePWM_DC_TYPE_DCBH);
       ePWM_setTripZoneDigitalCompareEventCondition (EPWM7_BASE、ePWM_TZ_DC_OUTPUT A2、ePWM_TZ_EVENT_DCXL_HIGH_DCXH_LOW);
       //ePWM_setTripZoneDigitalCompareEventCondition (EPWM7_BASE、ePWM_TZ_DC_OUTPUT _B2、ePWM_TZ_EVENT_DCXL_LOW);
       ePWM_setDigitalCompareEventSource (EPWM7_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_2、ePWM_DC_EVENT_SOURC_ORIG_SIGN);
       //ePWM_setDigitalCompareEventSource (EPWM7_BASE、ePWM_DC_MODULE_B、ePWM_DC_EVENT_2、ePWM_DC_EVENT_SOURCE _ORIG_SIGN);
       ePWM_setDigitalCompareEventSyncMode (EPWM7_BASE、ePWM_DC_MODULE_A、ePWM_DC_EVENT_2、ePWM_DC_EVENT_INPUT_NOT 已同步);
       //ePWM_setDigitalCompareEventSyncMode (EPWM7_BASE、ePWM_DC_MODULE_B、ePWM_DC_EVENT_2、ePWM_DC_EVENT_INPUT_NOT 已同步);
       ePWM_setTripZoneAction (EPWM7_BASE、ePWM_TZ_ACT_EVENT_TZA、ePWM_TZ_ACT_LOW); //将 ePWMxA 配置为在 TSB 跳闸时输出低电平
       //ePWM_setTripZoneAction (ulEPWM_base、ePWM_TZ_ACT_EVENT_TSZ、ePWM_TZ_ACT_LOW); //将 ePWMxB 配置为在 TSB 跳闸时输出低电平
       ePWM_DisableDigitalCompareSyncEvent (EPWM7_BASE、ePWM_DC_MODULE_A);
       //ePWM_DisableDigitalCompareSyncEvent (EPWM7_BASE、ePWM_DC_MODULE_B);
       ePWM_DisableDigitalCompareBlankingWindow (EPWM7_BASE);
       ePWM_DisableDigitalCompareWindowInverseMode (EPWM7_BASE);
       ePWM_selectCyclByCyclone TripZoneClearEvent (EPWM7_BASE、ePWM_TZ_CBC_PULSE_CLR_CNTR_ZERO);
       ePWM_enableTripZoneSignals (EPWM7_BASE、ePWM_TZ_SIGNEL_DCAEVT2 /*| ePWM_TZ_SIGNEL_DCBEVT2*/);

    [/报价]

    这是您的 ePWM 跳闸区域代码吗?

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

    是的、是的。

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

    因此、您已经设置了 DCAEVT2和 DCBEVT2、以便使用 TRIPIN1/2和 TRIPIN3/6。 然后、您可以通过 TZA 操作清除 EPWM 低电平、通过 TXB 操作清除 EPWM 低电平。

    TZA 和 TXB 信号来自 ORed OST 和 CBC 电路。

    然后、您在 CBC 源中启用了 DCAEVT2。 您已将 CBC 设置为在 CTR=ZERO 时锁定以清除。

    通过此设置、当 TRIPIN2为低电平且 TRIPIN1为高电平时、您将关闭 ePWM。

    您将 TRIPIN1作为 GPIO1。

    TRIPIN2为反相 GPIO12。

    这就是您的配置、我看不到错误。

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

    谢谢你。 我终于设法使它发挥作用了:-)所以我的问题得到了解决。

    但是、使用此解决方案时存在一定的缺点。

    如果我仅将 tripzone 配置为过压保护、我只需使用 ePWM_TZ_EVENT_DCXL_HIGH、以便每当过压比较器立即检测到过压时、tripzone 就会被激活。 直流条件 DCXL_HIGH 立即得到满足。

    让我们假设我想保护器件免受过压和 H 桥短路的影响、如上所述。

    我必须配置 EPWM_TZ_EVENT_DCXL_HIGH_DCXH_LOW、因此、每当过压比较器检测到过压时、只有在 DCXH_LOW 时才会激活跳匣区域。 这意味着我们可能会等待几微秒、让 PWM1A 更改其状态。

     

    正确吗? 还是我错了?

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

    您知道这个 ePWM_TZ_EVENT_DCXL_HIGH_DCXH_LOW 意味着、在触发之前、DCAL 为高电平、DCAH 为低电平吗?

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

    DCXL 高电平和 DCXH 低电平的两个条件被与在一起。 它们都必须处于活动状态。

    NIMA