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.

TMS320F280049: 配置CMPSS的低位比较器(CMPSS1_LP)失败

Part Number: TMS320F280049
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------------------------------------------------//