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.

[参考译文] TMS320F280049C:生成跨越周期边界的非互补 PWM (PER)

Guru**** 2434370 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1531902/tms320f280049c-generate-non-complementary-pwm-that-crosses-period-boundary-per

器件型号:TMS320F280049C
主题:C2000WARE 中讨论的其他器件

工具/软件:

您好、

继续一个相关问题。
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1500915/tms320f280049c-can-tms320f28004x-generate-non-complementary-pwm-that-crosses-period-boundary-per/5786257#5786257

作为 CLLC 控制的一部分、为了在改变 PWM 相位时改变占空比、有必要输出下面的黄色波形。

在 E2E 工程师的最后一个回答中、我收到了以下评论。

——
您当然可以使用 CLB 来实现此目的。 最直接的方法是将周期性 PMW 信号路由到 CLB、以及第三个信号、该信号将与 PWM2_L 输出进行“或“运算、以根据需要延长输出的高电平时间。 第三个信号可以是使用 CLB 的 GPREG 输入的软件输入。 如果您在实施此方法方面需要帮助、请告诉我。
——

我正在考虑根据 E2E 工程师评论的内容专门实施 PWM 和 CLB、那么您能谈谈详细的方法吗?

谢谢、

Conor

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

    尊敬的 Conor:

    请参阅 CLB 工具用户指南、了解如何使用该工具。 有关更多信息、请参阅 CLB TRM“一章和 C2000 Academy。

    谢谢您、

    Luke

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

    您好 Luke、

    由于 PER 限制、黄色 waveform 无法单独由 ePWM 模块生成、我们正在考虑将 ePWM 与 CLB 组合在一起、如下所示:

    • PWM2_HPWM2_L通过 CLB_XBAR 路由和进入 CLB

    • 使用 CLB FSM 检测 PWM2_H 的上升沿、并转换到在可编程持续时间内将输出保持为高电平的状态

    • 通过 CLB_OUT0 生成最终输出(例如 PWM2_H 和扩展 FSM 信号的“或“运算)

    • 将 CLB_OUT0 路由到 GPIO 引脚或 XBAR、以生成扩展的 PWM2_H 信号(在波形中以黄色突出显示)

    我们想确认这种方法是否可行、并请您就以下几点提供见解:

    1. 这种基于 CLB 的实施方案能否可靠地生成跨越 ePWM 周期边界的 PWM 输出?

    2. 在 CLB 中使用 FSM 和基于计数器的时序进行高持续时间控制时、是否有任何已知的约束或注意事项?

    3. 您是否建议任何动态控制延长持续时间的最佳实践(例如,使用 CLB 的 GPREG 输入)?

    谢谢、

    Conor

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

    黄色波形未处于互补模式、因此不能进行相移、并且 PWM2_L 波形设置为越过 PWM 周期的时序(如所示)、因此似乎无法单独由 PWM 模块生成。

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

    什么是 PWM2_H 和 PWM2_L? 说的是 EPWM2A 和 EPWM2B 吗? 如果是、您需要首先将这些信号路由到 GPIO、然后使用 CLB X-BAR 引入输入 X-BAR 模块作为输入、这些输入 X-BAR 模块将读取 ePWM 输出路由所在的 GPIO。

    对于输出、您可以选择使用输出 X-BAR 选择 CLB 输出 4 或 5、或使用 CLB 输出覆盖特性覆盖 ePWM 级别的 EPWM2A 和 EPWM2B 输出、因此您无需使用任何输出 X-BAR 或修改 GPIO 多路复用器设置。

    CLB 是一种可靠的方法来实现这一点、但我建议使用推挽 FIFO 来可靠地更新延长持续时间。 如果 CPU 在 HLC 将 R0 值复制到计数器匹配寄存器的同时写入 R0 寄存器、则可能会发生竞态条件。

    谢谢您、

    Luke

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

    您好 Luke、

    什么是 PWM2_H 和 PWM2_L? 说的是 EPWM2A 和 EPWM2B 吗? [/报价]

    我忘了解释这个。 这是指 CLLC 谐振全桥电路配置中的 PWMx_H 和 PWMx_L(请参阅附图)。

    [引述 userid=“529193" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1531902/tms320f280049c-generate-non-complementary-pwm-that-crosses-period-boundary-per/5904114 #5904114“]

    对于输出、您可以选择使用输出 X-BAR 选择 CLB 输出 4 或 5、或使用 CLB 输出覆盖特性覆盖 ePWM 级别的 EPWM2A 和 EPWM2B 输出、因此您无需使用任何输出 X-BAR 或修改 GPIO 多路复用器设置。

    CLB 是一种可靠的方法来实现这一点、但我建议使用推挽 FIFO 来可靠地更新延长持续时间。 如果 CPU 在 HLC 将 R0 值复制到计数器匹配寄存器的同时写入 R0 寄存器、则可能会发生竞态条件。

    [/报价]

    感谢您提供有关 CLB 使用的反馈。

    ■我们对 CLB 实现的假设

    1. 将 EPWM 输出路由到 GPIO、然后通过输入 X-BAR 将其馈入 CLB

    2. 使用 CLB 内的 FSM 或 HLC 逻辑来定义 GATE 开/关时序  

    3. 应用 CLB 输出覆盖来直接覆盖 EPWMxA/B 信号

    4. 使用来自 CPU 的 PUSH FIFO 可安全地更新 R0 等参数、而 HLC 读取这些值以设置时序(例如,计数器匹配)

    ■问题

    • 这种方法是否可用于使用 CLB 实现 CLLC 栅极控制?

    • 我们的理解是否正确:在访问 R0 等寄存器时、使用推挽 FIFO 可防止 CPU 和 HLC 之间出现竞态条件? 我不确定如何实现推挽 FIFO。 它是在 C28x 中实现的吗?

    谢谢、

    Conor

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

    尊敬的 Conor:

    我在 CLLC 栅极控制方面没有专业知识、我只能回答以下问题:是否使用任何可用的系统输入来通过 CLB 生成特定波形。

    有关推挽 FIFO、请参阅“TRM"一“一章或查看 c2000ware “C2000WARE_VERSION/driverlib/f28004x/examples/clb"中“中的 CLB 示例 13

    谢谢您、

    Luke

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

    您好 Luke、

    根据您的意见、我们正在考虑以下内容:

    • CPU 通过推送 FIFO 推送控制数据(例如,扩展持续时间)。

    • 在 CLB HLC 内部,我们使用PULL_FIFO检索值CNT1_LOAD,然后将其加载到中,通过启动计数器CNT1_START,并监视CNT1_DONE以确定何时禁用输出。

    • 在计数器运行期间、输出通过 FSM 或直接输出逻辑保持高电平。

    问题:
    在此配置中、建议或需要哪种内部 CLB 控制结构(例如,使用 HLC/FSM/CNT/LUT)来可靠地生成跨多个 PWM 周期扩展的输出脉冲?

    谢谢、

    Conor

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

    尊敬的 Conor:

    我建议采用以下方法:

    1.配置 OUTLUT 以生成原始 PWM 输出和 FSM 状态位的逻辑或。

    2.使用输出覆盖功能覆盖 PWM 输出(您必须选择特定输出和 CLB 实例以覆盖所需的特定 ePWM 信号)

    3.配置 FSM、使其在原始 PWM 输出上升沿变为高电平、在发生计数器 match0 事件时变为低电平。

    示例 FSM 公式:s0 =(s0 | e0)&(~s0 |~e1)、其中 e0 是 PWM 上升沿、e1 是计数器匹配事件。

    4.配置计数器、使其始终处于启用状态、但在 PWM 输出的上升沿复位(您必须对 CLB 输入使用边沿滤波,以便仅过滤上升沿)

    5.配置 两个 HLC 程序。 第一个将由软件控制的 GPREG 输入的上升沿触发、并从 FIFO 执行拉取并编程到 R0 寄存器。 第二个将侦听原始 PWM 上升沿、并将 R0 编程到计数器 0 匹配 0 寄存器中。

    6.每当需要更新 PWM 延展长度时、应将新值写入 FIFO、然后清除并设置在 CLB 配置中选择的软件控制 GPREG 输入。 上升沿滤波对于防止 CPU 重复的 FIFO 推送至关重要。

    您可能需要使用 LUT 来根据需要反转或组合信号

    如果您有其他问题、请告诉我。

    谢谢您、

    Luke

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

    您好 Luke、

    感谢您的回答。 我会把它考虑在内!

    谢谢、

    Conor