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.

[参考译文] LAUNCHXL-F28P65X:在软件中打开和关闭 ePWM

Guru**** 2519760 points
Other Parts Discussed in Thread: LAUNCHXL-F28P65X, LAUNCHXL-F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1559390/launchxl-f28p65x-turning-on-and-off-epwms-in-software

器件型号:LAUNCHXL-F28P65X
《Thread 中讨论的其他器件: LAUNCHXL-F280049C》

工具/软件:

您好:

我使用的是 LaunchXL-F28P65X、我配置了 2 个 ePWM、我想通过带有 CAN 消息的 C#接口打开和关闭它们。

我在 LaunchXL-F280049C 上做了类似的设置,使用一次性行程,强制它这样:


ePWM->TZFRC.bit.OST = 1;//触发 PWM

ePWM->TZCLR.bit.OST = 1;//清除跳闸 PWM

 

它运行得很好。
我在 65x 上尝试相同的方法、 但它无法可靠工作、有时会按预期工作、有时不会关闭 PWM。
我阅读了关于二极管仿真、最小死区和非法组合逻辑子模块的内容、并使用 AQCSFRC 中的“连续软件强制“寄存器找到了另一种解决方案。

              ePWM->AQCSFRC.bit.CSFA = 1;// 01b =强制低电平

            ePWM->AQCSFRC.bit.CSFB = 1;// 01b =强制低电平



              ePWM->AQCSFRC.bit.CSFA = 0; //重新开启 PWM

               ePWM->AQCSFRC.bit.CSFB = 0;  

但这不适用于我们当前的 DB 设置、因为我处于高电平活动互补状态(EPWMxB 反转)。 因此、当我强制 EPWMxA 为低电平时、EPWMxB 变为高电平。  

 

              PWM->pstEPwmAddr->DBCTL.BIT.POLSEL    = 0x2;

 

为此、我找到了另一种解决方案、即在使用 CSF 强制 ePWM 为低电平之前切换到高电平有效模式、并在 ePWM 重新导通之前切换回高电平有效互补模式。

 

    ePWM->DBCTL.BIT.POLSEL    = 0x0;

    ePWM->AQCSFRC.bit.CSFA = 1;// 01b =强制低电平

    ePWM->AQCSFRC.bit.CSFB = 1;// 01b =强制低电平

               /////////////////////

    ePWM->DBCTL.BIT.POLSEL    = 0x2;

    ePWM->AQCSFRC.bit.CSFA = 0; //重新开启 PWM

    ePWM->AQCSFRC.bit.CSFB = 0;

 

这种解决方案似乎能按我们的需要发挥作用、但我不确定它是最佳方法。 有什么我遗漏的吗? 还是有更好的方法?

谢谢!

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

    您好、

    有关跳闸区软件强制、请参阅下面的勘误表。

    谢谢