各位工程师们好,现在我有个问题;我用F28335做三相交错并联双向DCDC,PWM1,3,5各移相120°,PWM2,4,6各移相120°;我用PWM1的过零点触发PWM中断,之后就进行AD采样,得三相电感电流;但是目前我只有PWM1时采样的电感电流值是正确的,采样在了电感电流上升沿的中电,但是其他的PWM动作时,采样的电感电流与PWM1互差了120°,采样的电感电流值就不在上升沿的中点了,这应该怎么样才可以时PWM1~6都动作时,都可以采样到电感电流上升沿的中电呀;期望工程师们的回答,感谢!
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.
各位工程师们好,现在我有个问题;我用F28335做三相交错并联双向DCDC,PWM1,3,5各移相120°,PWM2,4,6各移相120°;我用PWM1的过零点触发PWM中断,之后就进行AD采样,得三相电感电流;但是目前我只有PWM1时采样的电感电流值是正确的,采样在了电感电流上升沿的中电,但是其他的PWM动作时,采样的电感电流与PWM1互差了120°,采样的电感电流值就不在上升沿的中点了,这应该怎么样才可以时PWM1~6都动作时,都可以采样到电感电流上升沿的中电呀;期望工程师们的回答,感谢!
AD采样可以由EPWM模块的ET子模块自动触发。每一路采样可以单独设置在每一路PWM信号的特定时刻进行采样:
sprui07_TMS320x2833x, TMS320x2823x Technical Reference Manual第222页
这种方法我也试了,我用PWM2做了实验,还是在电感电流的下降沿采样的,我的配置如下:
EPwm2Regs.ETSEL.bit.SOCASEL = 2;
EPwm2Regs.ETSEL.bit.SOCAEN = 1;
EPwm2Regs.ETPS.bit.SOCAPRD = 1;
// EPwm2Regs.ETPS.bit.SOCACNT = 1;
// EPwm1Regs.ETSEL.bit.INTSEL = 1;
// EPwm1Regs.ETSEL.bit.INTEN = 1;
// AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=1; //start AD
// asm(" RPT #10 || NOP");
while (AdcRegs.ADCST.bit.INT_SEQ1== 0); // Wait for interrupt
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
mMainRlyOn;
wDcIlACurrSample = (INT16U)(((ADCRESULT2>>4)+(ADCRESULT3>>4))/2);
fDcIlACurrReal = ((float)(wDcIlACurrSample * 3)/4095);
fDcIlACurrReal = (fDcIlACurrReal - 1.495)*70-0.132882819;
// fDcIlACurrReal = fDcIlACurrRealy - fDcIlACurrRealOffset;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;