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.

[参考译文] MCU-PLUS-SDK-AM263X:如何经皮激活3个跳闸区域

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1158140/mcu-plus-sdk-am263x-how-to-activate-3-trip-zones-symultaneously

器件型号:MCU-PLUS-SDK-AM263X
主题中讨论的其他器件:AM2632

我成功配置了3个 PWM 模块、用于电机控制所需的空间矢量调制。

在触发保护时、我使用以下命令激活跳闸区域:

ePWM_forceTripZoneEvent (&hwm0、ePWM_TZ_FORCE_EVENT_OST);

ePWM_forceTripZoneEvent (&hwm2、ePWM_TZ_FORCE_EVENT_OST);

ePWM_forceTripZoneEvent (&hwm11、ePWM_TZ_FORCE_EVENT_OST);

在使用 TMS320F18335的先前项目中、我只能使用1条命令同时激活所有跳闸区域。

请提供仅可访问1个 UC 寄存器的同时触发多个跳闸区域的示例吗?  

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

    您好!

    我将对此进行研究、并很快与您联系。

    此致、
    弗兰克

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

    您好!

    您能告诉我您是使用 ADC 感应信号还是任何外部信号来激活 ePWM 跳闸吗?

    通常、每个 ePWM 的跳闸区域都在 syscfg 的跳闸区域小节中进行配置。

    像这样、您需要为每个 ePWM 实例配置一次性跳闸源。

    DCAEVT1和 DCBEVT1在 ePWM 的数字比较子部分中进行配置。

    如需更多信息、请参阅以下示例:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_EPWM_TRIP_ZONE.html

    上述示例使用外部 GPIO 触发器触发。

    另一个使用 ADC 感应-> CMPSS 跳闸的示例:

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_CMPSS_ASYNCHRONOUS_TRIP.html

    请告诉我您是否正在寻找这种解决方案。

    此致

    Sri Vidya

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

    您好!

    我不想使用 GPIO 生成"Trip zone one shot interrupt"、例如 https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_EPWM_TRIP_ZONE.html 。

    我需要通过软件同时激活3个 ePWM 跳闸。  

    是否可以通过软件同时为用于加速空间矢量调制的3个 ePWM 生成3个中断?

    此致。

    一般事务人员

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

    您好!

    是的、您可以生成3个不同的中断。 配置所需的单触发跳闸区域事件或数字比较事件(如下突出显示)后

    下面介绍了如何为跳闸配置数字比较事件

    下面介绍了如何配置一次性跳闸源

    然后、您可以根据要为其生成中断的事件选择中断源。

    需要在 INT XBAR 中配置此中断

     0

    所有这些配置都需要针对所有3个 ePWM 单独进行。

    配置中断后、这些中断需要在您可以将 ISR 例程添加到的代码中构建。

    int32_t  status;
        HwiP_Params  hwiPrms;
    
        /* Register & enable interrupt */
        HwiP_Params_init(&hwiPrms);
        hwiPrms.intNum      = CSLR_R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_0;
        hwiPrms.callback    = &epwm0ISR;
        hwiPrms.isPulse     = APP_INT_IS_PULSE;
        status              = HwiP_construct(&gEpwmHwiObject, &hwiPrms);
        EPWM_clearEventTriggerInterruptFlag(CSL_CONTROLSS_G0_EPWM0_U_BASE);

    您可以参考详细实施示例、但您必须结合两个或多个示例才能使用此系统-

    初始配置 TRIP 信号- ADC 至 ePWM 跳闸通过 CMPSS - https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_CMPSS_ASYNCHRONOUS_TRIP.html

    2、现在设置中断源、然后设置 INT XBAR、如上所述

    然后通过添加回调例程来构建中断。

    此致

    Sri Vidya

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

    您好!

    例如 https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_CMPSS_ASYNCHRONOUS_TRIP.html 

    引脚  CMPIN1P 必须被接至一个电压源来触发中断。

    我不想使用任何硬件引脚。

    是否可以  通过软件触发 CSLR_R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_0而不对 CMPIN1P 引脚进行布线?

    您能提供一个示例吗?

    BR

    一般事务人员

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

    你(们)好

    是的、这是可能的。

    1.您可以配置一次性事件。

    2.按照上述说明设置此事件的中断。

    3.您可以使用此 API -  ePWM_forceTripZoneEvent  来创建软件跳闸

    //*****************************************************************************
    //
    //! Force Trip Zone events.
    //!
    //! \param base is the base address of the EPWM module.
    //! \param tzForceEvent is the forced Trip Zone event.
    //!
    //! This function forces a Trip Zone event.
    //! Valid values for tzForceEvent are:
    //!   - EPWM_TZ_FORCE_EVENT_CBC     - Force Trip Zones Cycle By Cycle event
    //!   - EPWM_TZ_FORCE_EVENT_OST     - Force Trip Zones One Shot Event
    //!   - EPWM_TZ_FORCE_EVENT_DCAEVT1 - Force Digital Compare A Event 1
    //!   - EPWM_TZ_FORCE_EVENT_DCAEVT2 - Force Digital Compare A Event 2
    //!   - EPWM_TZ_FORCE_EVENT_DCBEVT1 - Force Digital Compare B Event 1
    //!   - EPWM_TZ_FORCE_EVENT_DCBEVT2 - Force Digital Compare B Event 2
    //!
    //! \return None.
    //
    //***************************************************************************
    static inline void
    EPWM_forceTripZoneEvent(uint32_t base, uint16_t tzForceEvent)

    此致

    Sri Vidya

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

    你(们)好

    我成功地通过以下示例中的一个引脚激活了3个跳闸区域。

    但 API  ePWM_forceTripZoneEvent  是我之前使用的 API (请参阅初始请求)、仅适用于1个 PWM。

    实际上、第一个参数是1个 PWM 模块的基本地址、但我有3个模块要停止。  

    我不想连接引脚。

    您能否提供解决方案?

    此致。

    一般事务人员

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

    你(们)好

    很抱歉、我得不到您的问题?  

    您可以使用  EPWM_forceTripZoneEvent 跳闸 PWM, 但必须三次调用 API。

    只需在一个 API 调用中为多个 PWM 配置它?

    static inline void
    EPWM_forceTripZoneEvent(uint32_t base, uint16_t tzForceEvent)
    {
        //
        // Check the arguments
        //
        DebugP_assert((tzForceEvent & 0xFF01U)== 0U);
    
        //
        // Force a Trip Zone event
        //
        HW_WR_REG16(base + CSL_EPWM_TZFRC,
            (HW_RD_REG16(base + CSL_EPWM_TZFRC) | tzForceEvent));
    }

    谢谢、此致

    Sri Vidya

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

    您好!

    我的代码是:

    ePWM_forceTripZoneEvent (&hwm0、ePWM_TZ_FORCE_EVENT_OST);

    ePWM_forceTripZoneEvent (&hwm2、ePWM_TZ_FORCE_EVENT_OST);

    ePWM_forceTripZoneEvent (&hwm11、ePWM_TZ_FORCE_EVENT_OST);

    因为我必须立即停止 HEPWM0  HEPWM2 HEPWM11。

    每个调用停止一个强制触发区的 PWM。

    这3个操作之间将有一些纳秒的延迟、此延迟可能会受到中间可能触发的 ISR 例程的影响。

    如果可能 、最好同时停止 HEPWM0 HEPWM2 HEPWM11以同时打开所有开关。

    这应该只能写入1个寄存器(而不是3个)。

    在 AM2632中是否有可能?

    此致。

    一般事务人员

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

    你(们)好

    是的、应该可以使用 TripZone 选项。 我将会对其进行研究并尽快更新。

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

    你(们)好  

    1.初始化 EPWM_enableTripZoneOutput (CONFIG_EPWM0_BASE_ADDR、EPWM_TZ_SELECT_TRIPOUT_OST)。 这将创建 TRIPOUT 信号。

    2.配置 ePWM XBAR OUT、TRIPOUT  信号作为源。

    3.使用此  ePWM XBAR OUT 作为 EPWM2和 EPWM11的触发输入通过 DCAEVT1一次性触发。

    4.因此,当发生强制跳闸时,将触发 EPWM0,然后 TripOut 信号变为高电平并触发 EPWM2和 EPWM11。

    以下是捕获的波形、似乎存在低于1usec 要求的跳闸

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

    要从 EPWM0强制设置 PWM XBar、请执行 TripOut:

    通过 EPWM0_TRIPOUT 信号设置 EPWM2和 EPWM11的跳闸源

    出于测试目的、您可以将 EPWM0_TRIPOUT 信号输出到类似这样的输出 XBar

    此致

    Sri Vidya