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.

TMS320F280025C: A9/C8使用CMPSS4 正常,使用CMPSS2无效

Part Number: TMS320F280025C
static void SetupCMPSS(void)
{

CMPSS_enableModule(CMPSS1_BASE);
CMPSS_enableModule(CMPSS2_BASE);
CMPSS_enableModule(CMPSS4_BASE);

CMPSS_configHighComparator(CMPSS1_BASE, CMPSS_INSRC_DAC);
CMPSS_configLowComparator(CMPSS1_BASE, CMPSS_INSRC_DAC | CMPSS_INV_INVERTED);

CMPSS_configHighComparator(CMPSS2_BASE, CMPSS_INSRC_DAC);
CMPSS_configLowComparator(CMPSS2_BASE, CMPSS_INSRC_DAC);

CMPSS_configHighComparator(CMPSS4_BASE, CMPSS_INSRC_DAC);
CMPSS_configLowComparator(CMPSS4_BASE, CMPSS_INSRC_DAC);



CMPSS_configDAC(CMPSS1_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK | CMPSS_DACSRC_SHDW);
CMPSS_setDACValueHigh(CMPSS1_BASE, 3445);
CMPSS_setDACValueLow(CMPSS1_BASE, 651);

CMPSS_configDAC(CMPSS2_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK | CMPSS_DACSRC_SHDW);
CMPSS_setDACValueHigh(CMPSS2_BASE,20);
CMPSS_setDACValueLow(CMPSS2_BASE,20);


CMPSS_configDAC(CMPSS4_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK | CMPSS_DACSRC_SHDW);
CMPSS_setDACValueHigh(CMPSS4_BASE, 20);
CMPSS_setDACValueLow(CMPSS4_BASE, 20);



CMPSS_configFilterHigh(CMPSS1_BASE, 5, 30, 20);
CMPSS_initFilterHigh(CMPSS1_BASE);
CMPSS_configFilterLow(CMPSS1_BASE, 5, 30, 20);
CMPSS_initFilterLow(CMPSS1_BASE);

CMPSS_configFilterHigh(CMPSS2_BASE, 5, 30, 20);
CMPSS_initFilterHigh(CMPSS2_BASE);
CMPSS_configFilterLow(CMPSS2_BASE, 5, 30, 20);
CMPSS_initFilterLow(CMPSS2_BASE);

CMPSS_configFilterHigh(CMPSS4_BASE, 5, 30, 20);
CMPSS_initFilterHigh(CMPSS4_BASE);
CMPSS_configFilterLow(CMPSS4_BASE, 5, 30, 20);
CMPSS_initFilterLow(CMPSS4_BASE);


CMPSS_configOutputsHigh(CMPSS1_BASE, CMPSS_TRIP_LATCH );
CMPSS_configOutputsLow(CMPSS1_BASE, CMPSS_TRIP_LATCH );

CMPSS_configOutputsHigh(CMPSS2_BASE, CMPSS_TRIP_LATCH );
CMPSS_configOutputsLow(CMPSS2_BASE, CMPSS_TRIP_LATCH );

CMPSS_configOutputsHigh(CMPSS4_BASE, CMPSS_TRIP_LATCH );
CMPSS_configOutputsLow(CMPSS4_BASE, CMPSS_TRIP_LATCH );

//6.配置比较器的正负两端输入信号来源
EALLOW;
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL = 1; // A11C0
AnalogSubsysRegs.CMPLPMXSEL.bit.CMP1LPMXSEL = 1; // A11C0

//正常使用时 注释掉下面其中一个,为做示例全部放出
AnalogSubsysRegs.CMPHPMXSEL.bit.CMP2HPMXSEL = 2; //A9*C8使用CMPPS4
AnalogSubsysRegs.CMPLPMXSEL.bit.CMP2LPMXSEL = 2; //

AnalogSubsysRegs.CMPHPMXSEL.bit.CMP4HPMXSEL = 0; //A9*C8使用CMPPS4 1
AnalogSubsysRegs.CMPLPMXSEL.bit.CMP4LPMXSEL = 0; // 1
EDIS;

XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX00_CMPSS1_CTRIPH_OR_L);
XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX00);

XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX02_CMPSS2_CTRIPH_OR_L);
XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX02);

XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX06_CMPSS4_CTRIPH_OR_L);
XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX06);

DELAY_US(1000);
}

以上是代码示例,当A9/C8通过AIO使用CMPSS4时,结果正常,查看寄存器有正常置位;但使用CMPSS2时,无效,同样ADC输入(ADC寄存器值正常)但CMPSS无效不起作用。 芯片型号:280025C