现象描述:
在调试直流有刷电动机时,发现高压时电机会异常停止。此时硬件电路并没有报警,测试TMS320F2812 的PWM输出均为高电平。通过代码跟踪,发现高压后,FCMPOE会被异常置0.
原因分析:
直流有刷电动机运行时干扰较大,怀疑造成Power Drive Protection误动作。因为硬件单元设有功率电路故障保护机制,所以本意不需要使用TMS320F2812的Power Drive Protection功能。
因此,故障输入引脚在GPIO设置中为GPIO,代码如下:
GpioMuxRegs.GPDMUX.bit.T1CTRIP_PDPA_GPIOD0 = 0;
GpioMuxRegs.GPDDIR.bit.GPIOD0 = 0; //No use input
在事件管理器中设置有一处问题,我的设置如下:
EvaRegs.EVAIMRA.bit.PDPINTA = 1;
EvaRegs.EVAIMRA.bit.PDPINTA位上电复位为1,所以这个设置没有意义。另,手册中有如下描述“If the PDPINTx interrupt is unmasked, all PWM output pins will be put in the high-impedance state immediately after the PDPINTx pin is driven low.”
由于EvaRegs.EVAIMRA.bit.PDPINTA位上电复位为1,所以启动了保护机制,当干扰发生时,导致PWM输出高阻。
起初设计时,以为将故障引脚设置为GPIO输入,就相当于不使用Power Drive Protection,所以并没有关心EvaRegs.EVAIMRA.bit.PDPINTA位的状态。实际测试时,发现即便将故障引脚设置成GPIO输入,也会触发故障保护。
手册GPIO定义部分对故障引脚的描述如下:

有一点不明,设置成GPIO 输入并没有使用该引脚的第二功能T1CTRIP_PDPINTA,为什么会触犯故障保护呢?


从以上分析,是不是设置为GPIO输入或者使能第二功能,上电复位后当故障产生时就可以将PWM置为高阻了呢。
结论:
- EvaRegs.EVAIMRA.bit.PDPINTA位上电复位为1;
- 做如下GPIO设置:
GpioMuxRegs.GPDMUX.bit.T1CTRIP_PDPA_GPIOD0 = 0;
GpioMuxRegs.GPDDIR.bit.GPIOD0 = 0; //No use input
当EvaRegs.EVAIMRA.bit.PDPINTA位为1时,故障条件产生时,PWM为高阻;
欢迎大家指正
mangui zhang:
经验分享啊 学习 感谢分享
TI中文支持网


