工具/软件:Code Composer Studio
我正在尝试使用我的3个电流感应 ADC 输入(A1、A3、B1)来实现过流保护(当电流变得过高时关闭 PWM)。 我想使用 CTRIPM1作为数字比较子模块的输入、然后在 TZ 中生成跳闸并将所有 ePWM 信号设置为低电平。 我可以强制跳闸并使 PWM 成功关闭、但无法从 ADC 引脚上的模拟比较器生成跳闸。 有关此主题的信息似乎非常分散、因此我们非常感谢您的任何帮助。 谢谢。
以下是我的相关代码(出于简单起见、现在仅在 ePWM 1上工作):
AnalogSubsysRegs.ADCINSWITCH.bit.ADCINA1SEL = 0;//设置开关以将 A1连接到 A1 AnalogSubsysRegs.ADCINSWITCH.bit.ADCINB1SEL = 0;//设置开关以将 B1连接到 B1 AnalogSubsysRegs.PGAEN.bit.AMPA1EN = 1;//在 A1上启用增益放大器 AnalogSubsysRegs.PGAEN.bit.AMPA3EN = 1;//在 A3上启用增益放大器 AnalogSubsysRegs.PGAEN.bit.AMPB1EN = 1;//在 B1上启用增益放大器 AnalogSubsysRegs.AMPM1_Gain.all = 0;//在 A1、A3、B1上设置增益放大器(增益3 = 0、6 = 1、11 = 2) // DAC 的设置 AnalogSubsysRegs.DACEN.bit.DAC1EN = 1; //启用 DAC AnalogSubsysRegs.DAC1CTL.bit.DACVAL = 32;// 6位(/64) //模拟比较器的设置 AnalogueSubsysRegs.COMPEN.bit.COMPA1EN = 1; AnalogueSubsysRegs.COMPEN.bit.COMPA3EN = 1; AnalogueSubsysRegs.COMPEN.bit.COMPB1EN = 1; // Ctrip AnalogueSubsysRegs.CTRIPA1ICTL.bit.COMPHINPEN = 1; AnalogueSubsysRegs.CTRIPA1ICTL.bit.COMPLINPEN = 1; AnalogueSubsysRegs.CTRIPA3ICTL.bit.COMPHINPEN = 1; AnalogueSubsysRegs.CTRIPA3ICTL.bit.COMPLINPEN = 1; AnalogueSubsysRegs.CTRIPB1ICTL.bit.COMPHINPEN = 1; AnalogueSubsysRegs.CTRIPB1ICTL.bit.COMPLINPEN = 1; AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPA1EN = 1; AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPA3EN = 1; AnalogSubsysRegs.CTRIPM1OCTL.bit.CTRIPB1EN = 1; //跳闸区域的设置 EPwm1Regs.TZSEL.bit.DCAEVT1 = 1;//启用直流事件触发 EPwm1Regs.TZSEL.bit.DCBEVT1 = 1; EPwm1Regs.TZCTL.bit.DCAEVT1 = 2;//跳闸时设置为低电平 EPwm1Regs.TZCTL.bit.DCBEVT1 = 2; EPwm1Regs.TZEINT.BIT.DCAEVT1 = 1;//在 TZ 中启用直流强制 EPwm1Regs.TZEINT.BIT.DCBEVT1 = 1; EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 8;// CTRIPM1输入 EPwm1Regs.DCTRIPSEL.bit.DCALCOMPSEL = 8; EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 8; EPwm1Regs.DCTRIPSEL.bit.DCBLCOMPSEL = 8; EPwm1Regs.DCACTL.bit.EVT1SRCSEL = 1;//已过滤 EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = 1;//异步 EPwm1Regs.DCBCTL.bit.EVT1SRCSEL = 1; EPwm1Regs.DCBCTL.bit.EVT1FRCSYNCSEL = 1;


