Other Parts Discussed in Thread: SYSCONFIG
您好!我在配置CMPSS1的HP1与LP2两个引脚,使两个引脚能够触发不同阈值的TZ动作。现在CMPSS1的HP1已经配置成功,按照我所给定的最高电压进行判断(端口电压超过给定电压触发TZ保护),但LP2却不按照给定触发TZ动作。具体情况为:当我将触发阈值设置为1.2V/3.3V时,只要端口有极小电压值就会触发保护;当我将触发阈值设置为3V/3.3V时,端口电压为1V左右时触发TZ动作。下面是程序内容。请问程序是否存在问题,我应该如何修改?
需配置的端口:
宏定义:
#define PVCA_IPK_CMPSS_BASE CMPSS1_BASE //PGA1_IN
#define PVCA_IPK_CMPSS_ASYSCTRL_CMPLPMUX ASYSCTL_CMPLPMUX_SELECT_1//通道号应和CMPSS编号一致
#define PVCA_IPK_CMPSS_ASYSCTRL_MUX_VALUE 2
CMPSS配置:
setupCMPSSVN_L(PVCA_IPK_CMPSS_BASE,120,330);
void setupCMPSSVN_L(uint32_t base1, float32_t High_limit, float32_t cmp_max_sense )
{
CMPSS_enableModule(base1);
CMPSS_configDAC(base1, CMPSS_DACVAL_SYSCLK | CMPSS_DACREF_VDDA |
CMPSS_DACSRC_SHDW);
CMPSS_setDACValueLow(base1, (int16_t)((float32_t)High_limit*
(float32_t)4095.0/(float32_t)cmp_max_sense));
CMPSS_configLowComparator(base1, CMPSS_INSRC_DAC);
CMPSS_configFilterLow(base1,2,10,7);
CMPSS_initFilterLow(base1);
CMPSS_configOutputsLow(base1, CMPSS_TRIPOUT_SYNC_COMP|CMPSS_TRIP_SYNC_COMP);
CMPSS_clearFilterLatchLow(base1);
PVA_TZClear=1;
PVB_TZClear=1;
PVC_TZClear=1;
}
引脚选择(参考宏定义):
ASysCtl_selectCMPLPMux(PVCA_IPK_CMPSS_ASYSCTRL_CMPLPMUX,
PVCA_IPK_CMPSS_ASYSCTRL_MUX_VALUE);
EPWM TZ配置:
//--------------------PVC_A_IPK------------------------------------------------//
XBAR_setEPWMMuxConfig(XBAR_TRIP9, XBAR_EPWM_MUX01_CMPSS1_CTRIPL);//PVCA_IPK
XBAR_enableEPWMMux(XBAR_TRIP9, XBAR_MUX01);
EPWM_setTripZoneAction(PVC_PhaseA_PWM_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_HIGH);
EPWM_selectDigitalCompareTripInput(PVC_PhaseA_PWM_BASE,
EPWM_DC_TRIP_TRIPIN9, EPWM_DC_TYPE_DCBH);
EPWM_setTripZoneDigitalCompareEventCondition(PVC_PhaseA_PWM_BASE,
EPWM_TZ_DC_OUTPUT_B1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSource(PVC_PhaseA_PWM_BASE,
EPWM_DC_MODULE_B, EPWM_DC_EVENT_1, EPWM_DC_EVENT_SOURCE_ORIG_SIGNAL);
//DCAE1/DCBE1:One-shot TZ
EPWM_enableTripZoneSignals(PVC_PhaseA_PWM_BASE,
EPWM_TZ_SIGNAL_DCBEVT1);
//--------------------PVC_VDS------------------------------------------------//