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.

[参考译文] TMS320F28379D:如何设置软件来触发 DCAEVT 事件?

Guru**** 2611705 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001031/tms320f28379d-how-to-set-software-to-trigger-dcaevt-event

器件型号: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;
}

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色环保、

    客户还应 通过 TZCTL 寄存器定义 TZA/TSB 的操作。 当触发单次触发事件(在这种情况下通过软件强制)时、ePWM 输出将执行 TZCTL 寄存器的 TZA 和 TXB 位指定的操作。  

    此致、

    Marlyn