Part Number: TMS320F280049C
buck项目,PCMC模式(峰值电流),
需要用到MCU的比较器,自动比较电流达到阈值,则关闭PWM波,等到下一个PWM周期,再自动发新的PWM波
这需要用PWM的CBC(逐周期)保护功能
请问下面的初始化代码有问题吗?
调试时,观测CCS上的PWM寄存器值,不符合预期(见下面的图, 按理应该是CBC字段变1,为什么这里却是DCAEVT1变1 )
=========================================================
void SetupProtectionForOnePwm(uint32_t pwmBase, EPWM_DigitalCompareTripInput tripSource)
{
// Enable trip4 code
//////////////////////////////////////////////////////////////////////////////////////////////////////
//Trip 4 is the input to the DCAHCOMPSEL
EPWM_selectDigitalCompareTripInput(pwmBase, tripSource, EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition(pwmBase, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_setDigitalCompareEventSource(pwmBase, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_SOURCE_FILT_SIGNAL);
EPWM_setDigitalCompareEventSyncMode(pwmBase, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1,EPWM_DC_EVENT_INPUT_NOT_SYNCED);
// DCxEVTn管多个周期,一旦DCxEVTn标志被置上后,标志不会被自动清除,需要软件去把标志清除
//EPWM_enableTripZoneSignals(pwmBase, EPWM_TZ_SIGNAL_DCAEVT1);
EPWM_enableTripZoneSignals(pwmBase, EPWM_TZ_SIGNAL_CBC6); // Emulator Stop
//EPWM_enableTripZoneSignals(pwmBase, EPWM_TZ_SIGNAL_OSHT1); // one-shot trip1
//
// TZA events can force EPWMxA
// TZB events can force EPWMxB
//
//////////////////////////////////////////////////////////////////////////////////////////////////////
EPWM_setTripZoneAction(pwmBase, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(pwmBase, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Clear any spurious trip
EPWM_clearTripZoneFlag(pwmBase, (EPWM_TZ_FLAG_OST | EPWM_TZ_FLAG_CBC |
EPWM_TZ_FLAG_DCAEVT1|
EPWM_TZ_FLAG_DCBEVT1));
#if 0
// 这里不要触发事件,在调用setupBoardProtection之后,会紧接着用软件启动保护或调用DoBoardProtect
// 刚开始的时候,启动保护,
// 等板子的状态被更新为正常工作(UpdateBoardStatus_New)之后,会撤销保护(先EnableHbridgePwm,再EnableFlybackPwm)
for (i = 0; i < inPwmBasesCount; i++) {
EPWM_forceTripZoneEvent(inPwmBases[i].pwmBase, EPWM_TZ_FORCE_EVENT_OST);
}
#endif
}
调试时,观测CCS上的PWM寄存器值,不符合预期
按理应该是CBC字段变1
为什么这里却是DCAEVT1变1
