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.

[参考译文] TMS320F28375S:如何直接控制 PWM 消隐

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/854847/tms320f28375s-how-to-directly-control-pwm-blanking

器件型号:TMS320F28375S

您好!

我正在尝试了解如何在驱动 PWM 信号时精确控制消隐窗口过程。

我希望能够打开 PWM 信号并立即启用一段时间内的消隐。  稍后、我将禁用消隐、以便信号实际上在第一个 X 时间内具有消隐支持、并且能够在该时间之后正常跳闸。

我无法创建宽度一致的消隐窗口。  我将通过驱动我们用来强制 PWM 跳闸的输入引脚来测试这一点、同时使用此代码来打开驱动器:

/*设置代码*/
ePWM[pParams->ulOutputChannel]->DCTRIPSEL.bit.DCAHCOMPSEL = 0U;
ePWM[pParams->ulOutputChannel]->DCAHTRIPSEL.bit.TRIPINPUT1 = 1U;
ePWM[pParams->ulOutputChannel]-> DCAHTRIPPIPSEL.bit.TCA1U= 1U;ePWM[pIPPUT1 = UPT1u.TCALE]

(笑声)

//启用消隐的//
enable_blank()
{
/**-允许编辑*/
EALLOW;

/**-停止 PWM */
ePWM[pObj->uwChannel]->TBCTL.bit.CTRMODE = 3U;

/**-禁用消隐*/
ePWM[pObj->uwChannel]->DCFCTL.bit.Blanke = 0U;

/**-设置消隐窗口*/
ePWM[pObj->uwChannel]->DCFWINDOW = uwBlankWidth;

/**-启用消隐*/
ePWM[pObj->uwChannel]->DCFCTL.bit.Blanke = 1U;

/**-清除计数器(触发消隐窗口)*/
ePWM[pObj->uwChannel]->TBCTR = 0U;

/**-清除 OneShot 标志以允许开始消隐*/
ePWM[pObj->uwChannel]->TZCLR.bit.DCAEVT1 = 1U;
ePWM[pObj->uwChannel]->TZOSTCLR.bit.DCAEVT1 = 1U;
ePWM[pObj->uwChannel]->TZCLR.bit.OST = 1U;

/**-重新启用 PWM */
ePWM[pObj->uwChannel]->TBCTL.bit.CTRMODE = 0U;

/**-禁用编辑*/
EDIS;
} 

但是、信号仅在时间不一致的情况下有效。  消隐持续时间从几微秒到我要达到的最大值。

参考手册规定 DCFCOUNT 寄存器在 TBCTR=0脉冲上加载 DCFWINDOW 值。  手动设置 TBCTR=0是否会触发该脉冲?  我在这里是否遗漏了一些东西、以便更好地控制消隐窗口的确切时序?

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

    您好!


    [引用 user="Jeff Campbell91">我希望能够打开 PWM 信号并立即启用一段时间内的消隐。  稍后、我将禁用消隐、以便信号实际上在第一个 X 时间内具有消隐支持、并且能够在该时间之后正常跳闸。[/QUERP]

    消隐窗口功能可精确满足您的要求。

    [引用 user="Jeff Campbell91">]参考手册指出、DCFCOUNT 寄存器在 TBCTR=0脉冲上加载 DCFWINDOW 值。  手动设置 TBCTR=0是否会触发该脉冲?  我是否在这里遗漏了一些东西、以便更好地控制消隐窗口的确切时序?

    让消隐窗口根据计数器零(TBCTR=0)事件生效。 当计数器返回到零值时、将发生此事件。 您不必手动将此值设置为零。 让计数器正常计数并达到零值。

    [引用 user="Jeff Campbell91)]我无法创建宽度一致的消隐窗口。  [/报价]
    您是否说消隐窗口宽度在您尚未更改 DCFCOUNT/DCFWINDOW 的情况下有所变化?
    这种情况不太可能发生。 您如何测量消隐时间?

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

    您好、Subrahmanya、

    感谢您的快速响应。  我知道尝试像这样手动控制消隐窗口是很奇怪的、但此应用需要精确的计时。

    您建议让计数器自动变为零是关键。  我将计数器设置为周期值减1 (即、当重新启用计数时、通道将立即节拍为零并影响消隐窗口)。  这是一个奇怪的用例、但这对我们有很大帮助。

    谢谢!