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.
我成功配置了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 的数字比较子部分中进行配置。
如需更多信息、请参阅以下示例:
上述示例使用外部 GPIO 触发器触发。
另一个使用 ADC 感应-> CMPSS 跳闸的示例:
请告诉我您是否正在寻找这种解决方案。
此致
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
您好!
引脚 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