请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28375D 我有一个项目、在该项目中、我想使用 ePWM 跳闸硬件功能、并且能够从多个源跳闸 PWM、然后在事件发生后检测 PWM 跳闸源。 目前、我正在通过在软件中手动轮询跳闸源的 GPIO 引脚状态(请参阅下面的代码)来完成此操作、但如果跳闸事件持续时间非常短、则可能会错过正确记录跳闸源的机会。 理想情况下、我想找到一种查询硬件寄存器的方法、该方法可以将我指向跳闸信号的源。 这是可行的吗?
软件轮询方法的代码如下:
// INITIALIZATION (call once)
//================
//Select DRV_FAULT & estop as INPUTXBAR1
XBAR_setInputPin(XBAR_INPUT1, XBAR_INPUT_GPIO_M1);
XBAR_setInputPin(XBAR_INPUT2, ESTOP_SENSE);
// Configure TRIP 4 to OR the High and Low trips from both
// comparator 1, 2 & 3, clear everything first
EALLOW;
HWREG(XBAR_EPWM_CFG_REG_BASE + XBAR_O_TRIP4MUX0TO15CFG) = 0;
HWREG(XBAR_EPWM_CFG_REG_BASE + XBAR_O_TRIP4MUX16TO31CFG) = 0;
EDIS;
// Enable Muxes for ored input of CMPSS1H and 1L, mux for Mux0x
//cmpss1 - tripH or tripL
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX00_CMPSS1_CTRIPH_OR_L);
//cmpss4 - tripH or tripL
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX06_CMPSS4_CTRIPH_OR_L);
//cmpss3 - tripH or tripL
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX04_CMPSS3_CTRIPH_OR_L);
//inputxbar1 trip DRV_FAULT
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX01_INPUTXBAR1);
//inputxbar2 trip estop
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX03_INPUTXBAR2);
//================
// FOREGROUND CHECK (run continuously)
//================
// Check for PWM trip
if((EPWM_getTripZoneFlagStatus(obj->pwmHandle[0]) & EPWM_TZ_FLAG_OST) || (EPWM_getTripZoneFlagStatus(obj->pwmHandle[1]) & EPWM_TZ_FLAG_OST)
|| (EPWM_getTripZoneFlagStatus(obj->pwmHandle[2]) & EPWM_TZ_FLAG_OST)) {
if(pMotor->faults.indirect.latchFault) {
pMotor->faults.fault_source.drv = GPIO_readPin(XBAR_INPUT_GPIO_M1);
pMotor->faults.fault_source.estop = GPIO_readPin(ESTOP_SENSE);
pMotor->faults.indirect.latchFault = 0;
}
}
//================