我现在在用28379D这颗芯片,我用内部比较器做DC事件触发EPWM保护(事件触发配置成one-shot),当我想用软件强制触发DC事件的时候我需要设置两个标志位,
EPwm1Regs.TZFRC.bit.DCAEVT1 = 1;
EPwm1Regs.TZFRC.bit.DCBEVT1 = 1;
和
EPwm1Regs.TZFRC.bit.OST = 1;
因为我试了好久,发现单独设置EVT事件和OST标志位都是没有效果的,所以想知道一下为什么,多谢。
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.
DC配置代码如下
{
EALLOW;
//======配置DC Submodule
(*ePWM[i]).DCBHTRIPSEL.bit.TRIPINPUT1 = 1;
(*ePWM[i]).DCAHTRIPSEL.bit.TRIPINPUT1 = 1;
(*ePWM[i]).DCBHTRIPSEL.bit.TRIPINPUT2 = 1;
(*ePWM[i]).DCAHTRIPSEL.bit.TRIPINPUT2 = 1;
(*ePWM[i]).DCBHTRIPSEL.bit.TRIPINPUT3 = 1;
(*ePWM[i]).DCAHTRIPSEL.bit.TRIPINPUT3 = 1;
(*ePWM[i]).DCBHTRIPSEL.bit.TRIPINPUT4 = 1;
(*ePWM[i]).DCAHTRIPSEL.bit.TRIPINPUT4 = 1;
(*ePWM[i]).DCTRIPSEL.bit.DCBHCOMPSEL = 0xF; //对TRIP4、TZ1、TZ2、TZ3信号使能
(*ePWM[i]).DCTRIPSEL.bit.DCAHCOMPSEL = 0xF; //对TRIP4、TZ1、TZ2、TZ3信号使能
(*ePWM[i]).DCTRIPSEL.bit.DCBLCOMPSEL = 0x4; //对TRIP5信号使能
(*ePWM[i]).DCTRIPSEL.bit.DCALCOMPSEL = 0x4; //对TRIP5信号使能
//DC的出发源为TRIP4
(*ePWM[i]).TZDCSEL.bit.DCBEVT1 = TZ_DCBH_HI; //高电平触发DC事件
(*ePWM[i]).TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI; //高电平触发DC事件
(*ePWM[i]).TZDCSEL.bit.DCAEVT2 = TZ_DCAL_HI; //高电平触发DC事件
(*ePWM[i]).TZDCSEL.bit.DCBEVT2 = TZ_DCBL_HI; //高电平触发DC事件
(*ePWM[i]).TZSEL.bit.DCAEVT1 = 1; //DC配置为One-shot
(*ePWM[i]).TZSEL.bit.DCBEVT1 = 1; //DC配置为One-shot
(*ePWM[i]).TZSEL.bit.DCBEVT2 = 0; //DC配置为CBC
(*ePWM[i]).TZSEL.bit.DCAEVT2 = 0; //DC配置为CBC
(*ePWM[i]).DCBCTL.bit.EVT1SRCSEL = DC_EVT1; //不使用滤波器
(*ePWM[i]).DCBCTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC; //异步触发
(*ePWM[i]).DCACTL.bit.EVT1SRCSEL = DC_EVT1; //不使用滤波器
(*ePWM[i]).DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC; //异步触发
(*ePWM[i]).DCBCTL.bit.EVT2SRCSEL = DC_EVT2; //不使用滤波器
(*ePWM[i]).DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC; //异步触发
(*ePWM[i]).DCACTL.bit.EVT2SRCSEL = DC_EVT2; //不使用滤波器
(*ePWM[i]).DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC; //异步触发
//======配置TZ触发
(*ePWM[i]).TZCTL.bit.DCAEVT1 = 2; //配置故障输出为低电平
(*ePWM[i]).TZCTL.bit.DCBEVT1 = 2; //配置故障输出为低电平
(*ePWM[i]).TZCTL.bit.DCAEVT2 = 2; //配置上管输出为低电平
(*ePWM[i]).TZCTL.bit.DCBEVT2 = 3; //配置下管输出为不处理
(*ePWM[i]).TZCLR.bit.DCBEVT1 = 1;
(*ePWM[i]).TZCLR.bit.DCAEVT1 = 1;
(*ePWM[i]).TZCLR.bit.DCAEVT2 = 1;
(*ePWM[i]).TZCLR.bit.DCBEVT2 = 1;
EDIS;
}