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
{
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