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-F280049C:主循环中的 ePWM 相移修改

Guru**** 2531950 points
Other Parts Discussed in Thread: LAUNCHXL-F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/954853/launchxl-f280049c-epwm-phase-shift-modification-in-main-loop

器件型号:LAUNCHXL-F280049C

大家好、我叫 Iulian Popa。

我是´m 萨拉戈萨大学的学生。 我´m 您的开发板'LAUNCHXL-F280049C'、当我尝试控制某些 PWM 信号时、我有一些问题和疑问。

首先、我使用:

-  CodeComposer 版本9.3

-  C2000Ware 版本3.1.0.00

我的问题与使用高分辨率相移有关。 借助不同模块和 PWM 输出的配置、我可以使用函数"ePWM_setPhaseShift (ePWMx_BASE、xxxU)"在 PWM 输出之间执行相移、并且我还可以对所有 PWM 信号执行高分辨率可变相移。 具体的问题是、我无法通过在"主循环"内或甚至在程序执行期间更改寄存器"EPwmXRegs.TBPHS.bit.TBPHS"来执行可变相移。

总结:
-我可以将 ePWM 模块配置为仅使用自己的配置进行同步和偏移
-我设法配置 MEP 和 HRPWM 寄存器以使该功能正常工作。
-我不明白我必须做些什么才能执行 ePWM_setPhaseShift (ePWMx_BASE、xxxU);在主循环内部、以获得变化的相移(因为我只能获得我放置在配置内部的相移)。 程序运行后是否可以写入该寄存器? 我是否必须做一些特殊的事情才能写入该寄存器

我希望你能理解我的问题:D
问候语。 Iulian

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

    因此、有多种事情可能会发生在 Iulian。

    因此、当你设置 TBPHS 值时、没关系、它应该被写入、但是在一个相位事件发生前、它不会被载入。 那么、要更新的 PHS 的来源是什么? 我猜您已将 PHSEN 设置为1。 如果父级 PWM 应生成 PHS 负载事件、则可以根据您的设置将其设置为 CTR=zero/PRD。 由于您使用的是 HR 模式、因此我建议在需要时使用 SWSYNC 与新的相位值同步、以避免抖动。

    NIMA

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

    你好、Nima、谢谢你的回答。

    首先、我已激活"PHSEN = 1"。 我还有一个 PWM "主"信号、从中执行与其相关的相移。
    对于这个"主器件"信号、我已经激活了如上所述的同步功能(ePWM_setSyncOutPulseMode (EPWM1_base、ePWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);)(EPWM1_A 是主器件、下面的 EPWM2、3、4、5、6_A 是"从器件") 我认为我的问题是不能很好地理解手册中出现的同步方案、因为在 PWM "从器件"信号中、我在配置期间激活了以下功能(EPWM_setSyncOutPulseMode (EPWM3_base、EPWM_SYNC_OUT_PULSE_ON_EPWMxSYNCIN);)。
    总结:
    -我认为 PWM 模块配置做得很好(除了同步事件)、因为我获得了初始相移、并且得到了高分辨率相移处理。
    -我认为我不理解如何配置和使用同步功能以及如何解读微控制器手册中的同步方案(图18-7)。 时基计数器同步方案)
    -您能否帮助我了解如何解读图18-7以及如何使用"driverlib"函数来正确配置同步链、其中 PWM 主器件为 EPWM1_A、从器件为以下5个 PWM (EPWM2、4、5、6_A)?

    非常感谢。 Iulian

    使用 www.DeepL.com/Translator 翻译(免费版)

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

    因此、同步的工作方式是:

    父 ePWM 应:

    • 未设置其 PHSEN
    • 具有 SYNCOUT 脉冲 EPWM_setSyncOutPulseMode (EPWM1_base、EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO)

    子 ePWM 应:

    • 设置了相位
    • 配置它们的 SYNCIN。
    • 在另一个 ePWM 链下的 ePWM 上、您应该可以正常工作。 但是、对于 SYNCOSEL 多路复用器高于它们的 ePWM、应通过它们的 SYNCOSEL 对它们进行配置

    另外、请记住、ePWM 链不能长于3个子 ePWM + 1个父 ePWM

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

    Nima、您好、我注意到您的建议。

    在回答的最后一行中、您告诉我无法使5个 PWM 模块与一个主模块保持同步? 如果是这种情况、我是否可以保持同步并为5个子 PWM 模块实现相移控制?

    谢谢你 Nima。

    伊利安!!

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

    这是可能的、但您可以执行同步链

    EPWM1 -> EPWM2 -> EPWM3

    那么您必须执行该操作

    EPWM1 -> EPWM4 -> EPWM5

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

    你好、Nima、

    这正是我为同步6 PWM 所做的事情。

    我为您提供了有关同步设置和同步事件的建议、它已经很好地发挥了作用。 现在、我可以在调试期间修改 EPwmXRegs.TBPHS.bit.TBPHS、以查看信号偏移的效率。

    问题是从机模块与主模块的同步事件配置不正确。

    非常感谢您的问候!