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.

[参考译文] TMS320F28388D:TMS320中的 ePWM 同步

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180069/tms320f28388d-epwm-sync-in-tms320

器件型号:TMS320F28388D

您好!

请帮助我完成以下工作:

同步两 个 PWM 的确切工作方式。 请说明有哪些方法可以实现相同的目标。

2.从代码侧执行 相同的配置时,应注意哪些配置。

我已经用红色标记了 TRM 数据表,但未能得到一个想法,相同的示例代码也不起作用。这是一种紧急情况,请快速重放。

谢谢、此致、

步进  

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

    您好、Stevin、

    我不知道您在 ePWM 方面有多少经验、所以我将从基本层面开始、然后开始工作、对吧?  如果时间过长、在我签名之后、帖子的末尾会有一个简洁的版本。 此外、关键注 释以粗体显示 、易于注意。

    如果我们有2个不同的 ePWM 模块、在最基本的层面上、我们只有2个不同的计数器和相当多的逻辑 、它们以 CC、AQ、DB 等子模块的形式对这些计数器做出反应。  实际上只有2个因素会影响这些计数器:

    1. 时基子模块配置
    2. 来自 ePWM 外部的同步输入信号

    (这有点过于简化、但我认为它很适合解释同步方案的用法)

    现在、在这2个选项中、TB 子模块配置在程序开始时完成、并被设计为行为。 TRM 第26.4节介绍了此初始配置的所有可用选项。 现在对我们来说重要的是以下摘录:

    • 图26-5、从逻辑角度概述时基子模块
      • 查看此图像以查找同步输入或"EPWMxSYNCI"信号的位置。 请注意、它是如何仅位于一个位置的?
      • 如果您沿着连接到的导线、在 OR 门之后、您会看到一个由 TBCTL[PHSEN]或时基控制[相位启用]控制的开关。
        • 实际上、这意味着  EPWM 同步输入信号影响 CTR 的唯一方法是如果 PHSEN=1
      • 接下来、看看该线连接到的计数器上的端口名称-"Load"。 这意味着同步输入信号控制 TBCTR 的"负载"功能。 请记住、这很重要!

    • 图26-10、倒计数模式下的时基子模块行为示例
      • 这些波形有许多示例、但这一个示例对于解释 EPWMxSYNCI 信号的行为特别有用
      • 首先、看看 EPWMxSYNCI 信号- 同步输入信号是一个影响系统的脉冲、而不是一个恒定信号。

    现在、我们最终得到了 有关 ePWM 同步如何工作的简要说明? 从上面的图和解释中可以看到、

    当 ePWM 接收到同步输入脉冲时、它加载 TBPHS (相位)寄存器中存储的值、取代 TBCTR 的当前值。

    例如、如果'150'被存储在 TBPHS 中、并且计数器的计数值为250、计数周期高达 350、那么我们希望同步输入信号将计数器值设置为150、计数周期高达350。 默认情况下、TBPHS 为0。

    每个 ePWM 都能够从多个位置接收同步输入信号(在 TRM 第26.17.2.3节中列出)。 如果您查看该列表、您将注意到 许多选项是 ePWMx.SYNCOUT。 回顾我发布的第一幅图、您将看到每个 ePWM 都能够生成同步输出脉冲、以响应各种事件、例如达到 CTR=0。 如果 TBPHS 为0且在 CTR=0时生成 SYNCOUT、则接收 ePWM 计数器应与发送 ePWM 计数器相同!

    我希望这种解释对您有所帮助、

    Jason Osborn

    汇总版本:

    • 每个 ePWM 都可以发送或接收同步脉冲。 当 ePWM 接收到同步脉冲时、它将 TB 子模块中的当前 CTR 值替换为 TBPHS 中存储的值。 这可以完美地同步两个信号。 如果 TBPHS =/= 0、则接收 ePWM 与发送 ePWM 的偏移量为 TBPHS 中存储的量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jason,

    感谢您的讲解。 我真的很了解 PWM 模块是如何工作的、或者处理信号中的 PWM 同步。但我真的想了解该信号是如何进入 PWM 模块的
    根据我在 TRM 中的红色信息、我了解到有2种方法可以生成 SYNC OUT 信号。

    1.这里有一个 PWM 模块被设置为主 PWM 模块,它向所有其他 PWM 模块提供同步输出信号。假设我有3个 PWM 模块。 PWM1可向 PWM2和 PWM3发送 SYNC OUT 脉冲
    因此 PWM2和 PWM3可以配置为从 PWM1接收 SYNCOUT 信号。

    第二种方法是我不知道的、但它显示在 PWM 同步示例中。 在这里、我们使用 PWM1生成同步输出信号、该信号路由到输入 XBAR 5
    和输入 XBAR 6、并且还配置了 GPIO。 该信号的终点被馈送到 ePWM 模块,我们将其并行用作 EXTSYNC 信号。 不确定信号路由和对我的理解是否良好。
    也请帮我解决这个问题。

    请参阅 e2e 中支持此功能的帖子,但该帖子没有明确地说明这一美弦和 TRM。:

    e2e.ti.com/.../tms320f28388d-synchronize-epwm-modules-with-external-signal-on-gpioxx

    我们是否可以同意,如果方法一是同步 PWM 的顺序方法,那么第2种方法是将所有 PWM 同步在一起的并行方法?


    谢谢、此致、

    Stevin Martin

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

    您好、Stevin、

    您的第一点是正确的、是的。 不过、第二  个问题有点偏。 查看器件的 TRM、第26.17.2.3节、表26-26。 具体而言、查看选项0x18和0x19:

    X-Bar 允许用户将外部信号路由到 ePWM 中。 基本上、总结一下这篇文章、它们并不是在 ePWM1的每隔一个 ePWM 次级进行设置。 相反、它们会将每个 ePWM ( 包括  ePWM1)设置为来自 C2000外部的未指定信号的次要信号。

    在这方面、ePWM_ex3示例有点令人困惑。 我没有意识到 XBAR 正在被启用-我并不完全确定为什么在这里使用 XBAR、它 没有 被用于同步 EPWM、就我所能说的那样。

    都是如此。

    总结;

    • 每个 ePWM 都可以配置为通过 EPWMSYNCOUTEN 发出同步脉冲、该脉冲还定义了导致同步事件发生的原因。
    • 每个 EPWM 均可配置为通过 EPWMSYNCINSEL 接收同步脉冲、该脉冲定义了将哪个输入路由到 TB 子模块的同步输入端口。
      • EPWMSYNCINSEL 的选项包括:每个 ePWM SYNCOUT 信号(以及来自几个其他外设的类似信号)以及2个输入 XBAR 端口。
    • 输入 XBAR 或多或少是一种总线、它允许我们更自由地连接 C2000内部和外部信号和端口。
      • 对于 ePWM、这是相关的、因为(如果需要)您可以将手动同步脉冲发送到所选的 GPIO 中、并使用 XBAR 将该 GPIO 路由为 ePWM 的同步输入信号、前提是您已正确配置 EPWMSYNCINSEL。

    这有道理吗?

    此致、

    Jason Osborn