工具/软件:
您好:
我尝试在 tms320f28377d 中设置以下配置:
-启用 CMPSS1 - 2 - 3 - 4 - 5 - 6
-启用 ePWM 7 - 8
由于某种原因、当我使用以下函数启用 CMPSS1时、ePWM 7和8会关闭。
CMPSS3 (或2 - 4 - 5 -6)使能函数不会发生这种情况。
此后、您可以找到 CMPSS1使能功能和用于启用其他5个 CMPSS 的函数。 EPWM 7和8的寄存器不会显示与其他跳闸区等的任何明显连接
void CMPSS1_Enable (enum EPWM_module mod){
易失性结构 CLK_CFG_REGS ClkCfgRegs;
CORE_Eallowext ();
CpuSysRegs.PCLKCR14.bit.CMPSS1 = 1;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV =0;
epwmRegs[mod]->TBCTL.BIT.CLKDIV = 0;
epwmRegs[mod]->TBCTL.BIT.HSPCLKDIV = 0;
epwmRegs[mod]->TBCTR = 0;
epwmRegs[mod]->TBPRD = 0xFF;
epwmRegs[mod]->TZCTL.bit.DCBEVT1 =1;// 01:强制 EPWMxA 进入高电平状态
epwmRegs[mod]->TZCTL.bit.DCAEVT2=2;// 10:强制 EPWMxB 进入低电平状态
epwmRegs[mod]->TZDCSEL.bit.DCAEVT2 =2;//010:DCBH =高电平、DCBL =无关
epwmRegs[mod]->DCTRIPSEL.bit.DCAHCOMPSEL = 0xF;
epwmRegs[mod]->DCAHTRIPSEL.bit.TRIPINPUT4 = 1;
epwmRegs[mod]->AQCTLA.bit.CAU= 2;
epwmRegs[mod]->AQCTLA.bit.ZRO= 1;
epwmRegs[mod]->DCACTL.bit.EVT2SRCSEL = 0;
epwmRegs[mod]->DCACTL.bit.EVT2FRCSYNCSEL = 1;
epwmRegs[mod]->TZDCSEL.bit.DCBEVT1=3;//001:DCAH =低电平、DCAL =无关
epwmRegs[mod]->DCTRIPSEL.bit.DCBLCOMPSEL=0xF;
epwmRegs[mod]->DCBLTRIPSEL.bit.TRIPINPUT5 = 1;
epwmRegs[mod]->AQCTLB.bit.cpu = 1;
epwmRegs[mod]->AQCTLB.bit.ZRO= 1;
epwmRegs[mod]->DCBCTL.BIT.EVT1SRCSEL = 0;
epwmRegs[mod]->DCBCTL.bit.EVT1FRCSYNCSEL = 1;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
XBAR_setEPWMMuxConfig (XBAR_TRIP4、XBAR_EPWM_MUX00_CMPSS1_CTRIPH);
XBAR_setEPWMMuxConfig (XBAR_TRIP5、XBAR_EPWM_MUX01_CMPSS1_CTRIPL);
XBAR_enableEPWMMux (XBAR_TRIP4、XBAR_MUX00);
XBAR_enableEPWMMux (XBAR_TRIP5、XBAR_MUX01);
epwmRegs[mod]->TZCLR.bit.bcb = 1;
epwmRegs[mod]->TZCLR.bit.INT = 1;
epwmRegs[mod]->TZEINT.bit.bcb = 1;
epwmRegs[mod]->TBCTL.bit.CTRMODE =TB_COUNT_updown;
CORE_Edisext ();
CMPSS_enableModule (CMPSS1_BASE);
CMPSS_configHighComparator (CMPSS1_BASE、CMPSS_INV_INverted);
CMPSS_configLowComparator (CMPSS1_BASE、CMPSS_INSRC_DAC);
CMPSS_setDACValueHigh (CMPSS1_BASE、cmpss_Hvalue);
CMPSS_setDACValueLow (CMPSS1_BASE、cmpss_lvalue);
CMPSS_setHysteresis (CMPSS1_BASE、HYSTERESIS);
CMPSS_enableModule (CMPSS1_BASE);
EPWM_Start (mod);
}
void CMPSS3_Enable (enum EPWM_module mod){
易失性结构 CLK_CFG_REGS ClkCfgRegs;
CORE_Eallowext ();
CpuSysRegs.PCLKCR14.bit.CMPSS3 = 1;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV =0;
epwmRegs[mod]->TBCTL.BIT.CLKDIV = 0;
epwmRegs[mod]->TBCTL.BIT.HSPCLKDIV = 0;
epwmRegs[mod]->TBCTR = 0;
epwmRegs[mod]->TBPRD = 0xFF;
epwmRegs[mod]->TZCTL.bit.DCBEVT1 =1;// 01:强制 EPWMxA 进入高电平状态
epwmRegs[mod]->TZCTL.bit.DCAEVT2=2;// 10:强制 EPWMxB 进入低电平状态
epwmRegs[mod]->TZDCSEL.bit.DCAEVT2 =2;//010:DCBH =高电平、DCBL =无关
epwmRegs[mod]->DCTRIPSEL.bit.DCAHCOMPSEL = 0xF;
epwmRegs[mod]->DCAHTRIPSEL.bit.TRIPINPUT7 = 1;
epwmRegs[mod]->AQCTLA.bit.CAU= 2;
epwmRegs[mod]->AQCTLA.bit.ZRO= 1;
epwmRegs[mod]->DCACTL.bit.EVT2SRCSEL = 0;
epwmRegs[mod]->DCACTL.bit.EVT2FRCSYNCSEL = 1;
epwmRegs[mod]->TZDCSEL.bit.DCBEVT1=3;//001:DCAH =低电平、DCAL =无关
epwmRegs[mod]->DCTRIPSEL.bit.DCBLCOMPSEL=0xF;
epwmRegs[mod]->DCBLTRIPSEL.bit.TRIPINPUT8 = 1;
epwmRegs[mod]->AQCTLB.bit.cpu = 1;
epwmRegs[mod]->AQCTLB.bit.ZRO= 1;
epwmRegs[mod]->DCBCTL.BIT.EVT1SRCSEL = 0;
epwmRegs[mod]->DCBCTL.bit.EVT1FRCSYNCSEL = 1;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
XBP_setEPWMMuxConfig (XBAR_TRIP7、XBAR_EPWM_MUX04_CMPSS3_CTRL.h);
XBP_setEPWMMuxConfig (XBAR_TRIP8、XBAR_EPWM_MUX05_CMPSS3_CTRLIPL);
XBAR_enableEPWMMux (XBAR_TRIP7、XBAR_MUX04);
XBAR_enableEPWMMux (XBAR_TRIP8、XBAR_MUX05);
epwmRegs[mod]->TZCLR.bit.bcb = 1;
epwmRegs[mod]->TZCLR.bit.INT = 1;
epwmRegs[mod]->TZEINT.bit.bcb = 1;
epwmRegs[mod]->TBCTL.bit.CTRMODE =TB_COUNT_updown;
CORE_Edisext ();
CMPSS_configHighComparator (CMPSS3_BASE、CMPSS_INSRC_DAC);
CMPSS_configLowComparator (CMPSS3_BASE、CmpssConfig);
CMPSS_setDACValueHigh (CMPSS3_BASE、cmpss_lvalue);
CMPSS_setDACValueLow (CMPSS3_BASE、cmpss_Hvalue);
CMPSS_setHysteresis (CMPSS3_BASE、HYSTERESIS);
CMPSS_enableModule (CMPSS3_BASE);
EPWM_Start (mod);
}