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.

TMS320F28377S: 使用ADC后处理模块来触发EPWM1/2/3的trip zone功能。

Part Number: TMS320F28377S
Other Parts Discussed in Thread: DRV8350

目的是想通过检测3个ADC,A2/B2/C2所表示的电流信号是否超出阈值,超出的话关断EPWM1/2/3,从而保护电机。设计的思路可以从如下手册中的图路线来体现。

按照手册进行了一些配置,下面会给出一些配置代码与结果,最后在设置错误的阈值条件下,电机仍然持续转动,没有触发tripzone,不知错误在何处。

#define ADCLIMHI 100
#define ADCLIMLO 3000   //由于想使ADC直接跳闸,因此将阈值设置的比较奇怪,但并未触发跳闸

AdcaRegs.ADCPPB1TRIPHI.bit.LIMITHI = ADCLIMHI; // limitHigh +5 A
AdcaRegs.ADCPPB1TRIPLO.bit.LIMITLO = ADCLIMLO; // limitLow -5 A

AdcaRegs.ADCEVTSEL.bit.PPB1TRIPHI = 1;  //使能PPB阈值处理
AdcaRegs.ADCEVTSEL.bit.PPB1TRIPLO = 1;

EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX0= 2; // Select ADCA EVT1 on Mux0, IBUS > Hlim
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX0 = 1; // Enable MUX0

EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX2= 2; // Select ADCA EVT2 on Mux2, IBUS < Llim
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX2 = 1; // Enable MUX2

ePWM1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;  // Trip4 as Digital Compare A High Input

ePWM1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI; // DCAH = high, DCAL = don't care

ePWM1Regs.TZSEL.bit.DCAEVT1 = TZ_ENABLE;

ePWM1Regs.TZSEL.bit.DCBEVT1 = TZ_ENABLE;    // Enable DCBEVT1 as a one-shot trip source for this ePWM1/2/3

ePWM1Regs.TZCTL.bit.TZA = TZ_HIZ; // Force EPWMxA to a high impendance state
ePWM1Regs.TZCTL.bit.TZB = TZ_HIZ; // Force EPWMxB to a high state -> a high impendance state <TZ_HIZ>

最后在TZFLG寄存器中能看到DCAEVT1被触发,但电机仍然可以转动。附上一些中间寄存器的值

请问,配置是否符合我的设计思路,中间是否有遗漏或者错误,如果正确,为何在我设计阈值后,电机仍然可以正常转动,或者是否不能通过这种方式来trip,需要通过DCAEVT或OST事件来触发中断,在中断中手动掷位来实现trip功能,请不吝赐教,谢谢!