主题:controlSUITE中讨论的其他部件
您好,
有人能帮我理解这一点吗? 谢谢。
多个ePWM事件触发ADC转换,请参阅问题1)-4下面的代码。
ePWM 2,3,4分别是A0,B0,B1的触发源。 ePWM2的相位为零。ePWM3的相位为120。 ePWM4的相位为240。
1) 对于ADC设置,ePWM2是A0的触发源,ePWM3是B0的触发源,即使ePWM3是相移,A0和B0是否同时转换? 或者B0转换开始前有2/3的时间?
2) EPwm1Regs.TBCTL.bit.PHSEN = 120;是否所有PWM都只有一个时基计数器? 如果是,这是否意味着只有PWM会相移,计数器保持不变?
3) EPwm1Regs.ETSEL.bit.SOCAEN =1; ePWM1的相位为零。 ADC转换将在计数器=0处开始,并在相移值计数器=处完成?
4) 如果相移为240,则只剩下1/6个周期来完成最后一次ADC转换并在ADC ISR中执行控制部分。 它是如何工作的?
void SetupADCEpwm (void)
{
EALLOW;
//ADCA
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚A0
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 14;
ADcbRegs.ADCSOC0CTL.bit.TRIGSEL = 7;//带phones=0的ePWM2SOCA
//ADCB
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚B0
AdcbRegs.ADCSOC0CTL.bit.ACQPS =14;
ADcbRegs.ADCSOC0CTL.bit.TRIGSEL = 9;// ePWM3SOCA,相位=120
ADcbRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚B1
AdcbRegs.ADCSOC1CTL.bit.ACQPS = 14;
ADcbRegs.ADCSOC1CTL.bit.TRIGSEL = 11;//带相位=240的ePWM4SOCA
ADcbRegs.ADCINTSEL1N2.bit.INT1SEL = 1; // EOC1是ADCINT1的触发器
AdcbRegs.ADCINTSEL1N2.bit.INT1E =1; //启用INT1标志
AdcbRegs.ADCINTFLGCLL.bit.ADCINT1 =1; //确保INT1标志已清除
EDIS;
}
void InitEPwm1 (void)
{
EALLOW;
EPwm1Regs.TBCTL.bit.CTRMODE = 3;
EPwm1Regs.TBPRD = SW_PRD;
EPwm1Regs.TBCTL.bit.PHSEN = 1;
EPwm1Regs.TBPHS.bit.TBPHS = 0;
EPwm1Regs.TBCTR = 0x0000;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 0;
EPwm1Regs.ETSEL.bit.SOCAEN = 0;
EPwm1Regs.ETSEL.bit.SOCASEL = 1;
EPwm1Regs.ETPS.bit.SOCAPRD = 1;
EDIS;
//启动ePWM 1以开始ADC采样和中断
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;
}