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.

[参考译文] TMS320F280039:FED 值的问题超过 TBPRD 值

Guru**** 2392905 points
Other Parts Discussed in Thread: TMS320F280039

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1505534/tms320f280039-issue-of-fed-value-exceeds-tbprd-value

器件型号:TMS320F280039

工具/软件:

尊敬的专家:

我正在测试频率变化时 DB 和全局负载的功能。 详情如下。

所有 CMPB TBPRD 提供的红色 CMPA 都使用全局加载(OSH)。 全局加载的时刻是 TB 计数器达到0。

如果 馈入的值超过 TBPRD 值、 下图中描述的以下内容是否正确?

即使 TB 计数器达到0、FED 也将继续计数并继续产生死区延迟效应。

当频率变化和全局加载发生时、 由于进纸计数器此时尚未达到0、因此它不会响应此加载指令。

根据2、 此全局加载指令将由 FED 缓存、然后在 FED 计数达到0时执行全局加载指令。

4.根据3和4、 在频率转换后的第一个 PWM 周期中、脉冲将在图中圈出的位置丢失

谢谢、

Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    1.即使 TB 计数器已达到0、FED 仍将继续计数并继续产生死区延迟效应。

    是的、这是对的。

    2.当频率变化和全局加载发生时、 由于 FED 计数器此时尚未达到0、它将不会响应此加载指令。

    是的、这是对的。

    Unknown 说:
    3.基于2、 此全局加载指令将由 FED 缓存、然后在 FED 计数达到0
    时执行全局加载指令

    是的、这是对的。

    4.根据3和4、 在频率转换后的第一个 PWM 周期中、脉冲将在图
    中圈出的位置丢失

    是的、如果 FED 值大于新的 CMPA 值、可能会发生这种情况。

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    在我的客户端、我们发现、如果 FED 值太大以至于 超过 TBPRD 值、则会发生漏脉冲事件、如图中所示的全局加载。

    不过、如果我们降低 FED 值以确保 FED 值不超过 TBPRD 值、则全局加载不会发生漏脉冲事件。

    谢谢、

    Leo

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

    嗨、Leo、
    感谢您分享您的观察结果。 您是否有一些可以共享的示例代码、以便我可以更轻松地在我这边复制此方案?

    此致、

    Marlyn

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

    尊敬的  Marlyn:

    很抱歉耽误你的时间。 我修改了客户端的代码并在 LaunchPad TMS320F280039上重新生成了问题。

    这是脉冲缺失的结果。 TBPRD 和 DB 的设置如下所示:

    与我之前计算出的值相同。

     

    为了进行比较、我测试了其他一些更改对。

    对于此更改、FED 不会超过 TBPRD。

    这没关系

    对于此更改、FED 将超过 TBPRD。  FED 计数器达到零的事件 早于 CMPA AQ 操作

    不会出现脉冲丢失。

    我会 将代码共享到 TI 驱动器。 这是代码注释。

    在此工程中、我测试 EPWM1、您可以参考 syscfg 中的 EPWM1设置。

    当您运行代码时、此程序将在短暂延迟后启用 EPWM1输出。 客户端在 ISR 函数 INT_EPWM3_LA_ISR (line18、pfc_loop.c)中更改 EPWM1设置。 该 ISR 的频率为35k。 EPWM1设置的变化流程为:isr INT_EPWM3_la_isr (line18、 pfc_loop.c)-> cllc_loop_task (line32、 pfc_loop.c)-> charge_LOOP_STATE_TRANSITION (line68、cllc_loop.c)->charge_lp_handle (line96、cllc_loop.c)-> EPWM1  设置更改。

    我添加一些变量(在 line74-83、main.c 中定义)以测试频率变化。 将 SAMPLE 设置为1时、  GPIO23 (line56、cllc_loop.c)将切换(低电平->高电平)。 TBPRD 和 DB 的新值将写入寄存器(line296-366、cllc_loop.c)。

    演示链接: tidrive.itg.ti.com/.../4980f3a5-f0dd-4ca2-a5ac-9d4d229f4276

    谢谢、

    Leo

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

    嗨、Leo、

    感谢您分享代码和其他详细信息。 我已确认你的观察是真实的。 我修改了我的第一个回答、以避免给他人造成混淆。 实际上、新的进给值(全局加载后)只影响下一个边沿、而不影响当前边沿。 在您的示例场景中、如果未考虑这一点、可能会导致脉冲丢失。

    此致、

    Marlyn