您好!我在试图用当前设备配置CMPSS,以触发epwm的TZ保护,但始终无法成功触发。
触发CMPSS比较器的外部引脚为C0:

我只需要配置高触发,也就是当引脚采集电压高于设定值时触发TZ保护。CMPSS相关的宏定义如下:
#define PVA_VDS_CMPSS_BASE CMPSS1_BASE //C0 #define PVA_VDS_CMPSS_ASYSCTRL_CMPHPMUX ASYSCTL_CMPHPMUX_SELECT_4 #define PVA_VDS_CMPSS_ASYSCTRL_MUX_VALUE 1
EPWM相关宏定义以及配置程序如下:
#define PVA_PhaseA_PWM_BASE EPWM1_BASE//0x00004000U
#define PVA_PhaseA_PWM_DCBEVT1 EPWM_TZ_INTERRUPT_DCBEVT1//0x20U
#define PVA_PhaseA_PWM_INT INT_EPWM1//0x00300301U
#define PVA_PhaseA_PWM_GPIO 0
#define PVA_PhaseA_PWM_GPIO_PIN_CONFIG GPIO_0_EPWM1A
//#define PVA_PhaseA_PWM_GPIO_PIN_CONFIG GPIO_0_GPIO0
#define PVA_PhaseB_PWM_BASE EPWM2_BASE
#define PVA_PhaseB_PWM_INT INT_EPWM2
#define PVC_PhaseA_PWM_GPIO 12
#define PVC_PhaseA_PWM_GPIO_PIN_CONFIG GPIO_12_EPWM7A
//#define PVC_PhaseA_PWM_GPIO_PIN_CONFIG GPIO_12_GPIO12
#define PVC_PhaseB_PWM_BASE EPWM8_BASE
GPIO_setDirectionMode(PVC_PhaseA_PWM_GPIO,GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(PVC_PhaseA_PWM_GPIO,GPIO_PIN_TYPE_STD); // disable pull up
GPIO_setPinConfig(PVC_PhaseA_PWM_GPIO_PIN_CONFIG);
CMPSS配置程序与EPWM TZ配置程序如下:
void setupVNCMPSS(void)
{
//
// Enable CMPSS and configure the negative input signal to come from
// the DAC
//
CMPSS_enableModule(PVA_VDS_CMPSS_BASE);
CMPSS_configHighComparator(PVA_VDS_CMPSS_BASE, CMPSS_INSRC_DAC);
// Select positive input to come from C0
ASysCtl_selectCMPHPMux(PVA_VDS_CMPSS_ASYSCTRL_CMPHPMUX,
PVA_VDS_CMPSS_ASYSCTRL_MUX_VALUE);
//
// Use VDDA as the reference for the DAC and set DAC value to ~1.5V
//
CMPSS_configDAC(PVA_VDS_CMPSS_BASE, CMPSS_DACREF_VDDA |
CMPSS_DACVAL_SYSCLK | CMPSS_DACSRC_SHDW);
// Initial - corresponds to ~1V
CMPSS_setDACValueHigh(PVA_VDS_CMPSS_BASE, 1240);
// CMPSS_setDACValueLow(PVA_VDS_CMPSS_BASE, 1240);
// End digital filter specific code
//
// Configure the output signals. Both CTRIPH and CTRIPOUTH will be fed by
// the asynchronous comparator output.
//
CMPSS_configOutputsHigh(PVA_VDS_CMPSS_BASE, CMPSS_TRIP_SYNC_COMP |
CMPSS_TRIPOUT_SYNC_COMP);
XBAR_setEPWMMuxConfig(XBAR_TRIP7, XBAR_EPWM_MUX00_CMPSS1_CTRIPH);
XBAR_enableEPWMMux(XBAR_TRIP7, XBAR_MUX00);
EPWM_enableDigitalCompareTripCombinationInput(PVC_PhaseA_PWM_BASE, EPWM_DC_COMBINATIONAL_TRIPIN7, EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition(PVC_PhaseA_PWM_BASE, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSource(PVC_PhaseA_PWM_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_SOURCE_ORIG_SIGNAL);
EPWM_setDigitalCompareEventSyncMode(PVC_PhaseA_PWM_BASE, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);
EPWM_setTripZoneAction(PVC_PhaseA_PWM_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_enableTripZoneSignals(PVC_PhaseA_PWM_BASE, EPWM_TZ_SIGNAL_DCAEVT1 );
}
现在,当我将1.65V电压接到C0上时(阈值设置为1024,即1V左右),PVC_PhaseA_PWM_BASE并没有触发TZ保护,我是否搞错了某些内容?另外,我想请教如何查看CMPSS模块比较器的实时输出值为高还是低,这可以做到吗?