请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 尊敬的团队:
我的客户使用内部比较器通过直流事件触发 ePWM 保护(事件触发器配置为单次触发)。 他发现、当使用软件强制触发直流事件时、需要设置两个标志:
EPwm1Regs.TZFRC.bit.DCAEVT1 = 1; EPwm1Regs.TZFRC.bit.DCBEVT1 = 1; //and EPwm1Regs.TZFRC.bit.OST = 1;
他多次对其进行测试、发现仅设置 EVT 事件和 OST 标志不起作用。 他想知道问题在哪里?
{
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;
}
此致