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:HRPWM 周期和占空比控制

Guru**** 2378650 points
Other Parts Discussed in Thread: PMP41081, TIDM-02013, SYSCONFIG, PMP23340C2K
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1346958/tms320f280049c-hrpwm-period-and-duty-cycle-control

器件型号:TMS320F280049C
主题中讨论的其他器件:PMP41081TIDM-02013PMPSysConfigPMP23340C2K

大家好!

我对 TI 很陌生、我正在为 HRPWM 周期控制而苦恼。

我正在尝试"允许 SPRUI33G 文档"、但我无法理解如何实现所需的 PWM 输出、此外、我认为它在计算方面存在一些拼写错误。

简言之、我正在设计 LLC 转换器。 因此、我将 更改由控制器计算出的开关频率。

此外、我们还需要更改某些条件下的 PWM 占空比。  

因此、我需要控制周期和占空比。

如果有可能、我想拥有更清楚的 HRPWM 解释文档或其他材料。

第一个问题是:

我发现 MEP_ScaleFactor 计算结果为72、PWM 时钟周期为10ns。

现在、如何进行此操作?

此致、

Gökhan

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

    您好! Gökhan

    您可以通过放置高分辨率边沿来控制占空比和周期。 请注意、要同时实现这两个功能、您应该启用 MEP 对两个边沿的控制、并将 SMPAHR CTR 的影子加载设置为"MEP=0和周期"并且启用自动转换。 这是因为 HRPWM 模块具有内部计算、该计算会在 CTR = PRD 上进行加载(内部)、以便它可以精细地放置第一个边沿和第二个边沿。

    为此、您可以使用    HRCNFG 寄存器中的 CTLMODE 设置为0 (边沿放置由 CMPAHR/TBPRDHR 控制)和 EDGMODE 设置为11 (两个边沿都是高分辨率控制)。

    就换算系数而言、TRM 中有一些示例计算。 您是否已了解以下内容?

    • 8.15.1.5.2 CMPAHR 的缩放注意事项
    • 18.15.1.5.4 TBPRDHR 的高分辨率周期

    此外、如果有拼写错误、请将其指出、我们可以 在必要时进行检查和修复   

    您尝试更改 PWM 占空比的条件是什么? 如果您想画出草图、请务必说明这张图很有用。  

    此致、

    艾里森

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

    尊敬的 Gokhan:

    您能帮助我了解您在什么情况下需要更改职责吗? LLC 通常是一种变频拓扑、因此在我们的参考设计中、我们希望占空比接近50%、并且两个 PWM 桥臂都能匹配占空比。 参考设计、如 TIDA-10062、PMP41081、PMP23340等

    您是说您希望同时控制占空比和频率吗? 控制起来会非常复杂。 或者、您是说您是否会在某些情况下从恒定占空比、可变频率转变为可变占空比、恒定频率?

    如果是后者、我们 已经在 TIDM-02013参考设计中完成了类似的操作、其中我们根据补偿器指示的控制量明确地在频率模式和相移模式之间进行切换。 您可以参考此值并实现类似于频率模式和占空比模式之间切换的内容

    此致、

    彼得

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

    尊敬的 Allison:

    感谢您的答复。  
    我已经检查了 TRM 中有关 HRPWM 的相关小节。

    条件是、频率达到限值后。 然后、我将从降低占空比开始、以获得更多增益。

    此致、

    Gökhan

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

    尊敬的 Peter:

    感谢您的答复。

    与后一种情况类似、我将在频率变为上限后启动占空比控制。  

    我将检查 TIDM-02013软件

    此致、

    Gökhan μ A。

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

    彼得,你好!

    TIDA-10062或 PMP 的问题是、我可以看到他们不使用 HRPWM。

    当我尝试配置 AQ 设置时、它们会为 xA 和 xB 产生对称 PWM (占空比为50%的推挽式 PWM)、SysConfig 会提供警告:

    如果处于向上和向下计数模式、并且执行两个边沿控制、则在这种情况下、您需要按如下方式设置动作限定符:CMPxU =设置、CMPXD =清除、TBCTR= PRD 或 ZRO 上无动作"

    我仍然按照我的设置进行操作、PWM 频率不稳定、且在1kHz 左右变化。

    然后、当我根据 SysConfig 的要求更改 AQ 设置时、我可以生成稳定的高分辨率 PWM 频率、但这些设置不适合 LLC PWM 驱动。
    我需要这样的 PWM:

    我可以使用常规 PWM (非高分辨率)生成此值。 但当我尝试使用高分辨率时。 不管用。 我想这与 ı 上面写的警告有关

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

    尊敬的 Gokhan:

    您是否曾有机会了解过 TIDM-02013? 它使用 HRPWM 实现 LLC 控制、支持高达800kHz 的开关频率。  

    PMP23340C2K 还在1 MHz 的开关频率下使用 HRPWM 进行 LLC 控制、但目前采用开环设计。 将在即将发布的 Digital Power SDK 版本中发布

    HRPWM 的限制是、在向上向下计数模式下、对于 HRPWM MEP、要将150ps 边沿分辨率放置在脉冲的上升沿和下降沿、 EPWMA 必须配置为在向上计数时启用 CMPA/HR、在向下计数时清除 CMPA/HR。 原因是、只有 CMPAHR 可以应用于 EPWMA 输出、只有 CMPBHR 可以应用于 EPWMB 输出。 不能让 CMPBHR 应用于 EPWMA 输出、也不能让 CMPAHR 应用于 EPWMB 输出。 常规分辨率计数器比较 CMPA 和 CMPB 没有该限制。

    此外、在 ZRO 前后的3个 CLK 周期和 PRD 前后的3个 CLK 周期、MEP 不激活。 因此、MEP 将无法在 PWM 的任何上升沿提供高分辨率定位。

    过去、我们对 LLC 拓扑中的高分辨率 PWM 所做的是、将 AQ 配置为上升至 CMPA 和下降至 CMPA、并使用 DB 模块为 ePWM B 输出生成高电平有效互补信号。 您需要调整 CMPA/HR、以确保 A 和 B 输出的宽度相同。 要调整占空比、而不是更改 CMPA/HR、您可以增加上升沿和下降沿死区、以缩短脉冲宽度。

    此致、

    彼得

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

    尊敬的 Peter:

    在 TIDM-02013中、它们使用以下 AQ 设置:

    // CTR = CMPA@0,XA 设置为1
    //
    ePWM_setActionQualifierAction (base1、ePWM_AQ_OUTPUT_A、ePWM_AQ_OUTPUT_HIGH、ePWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);

    我想这应该意味着、当时基计数器为零时、让 XA 设置、不是吗?

    但当我使用 SysConfig 选择相同内容时、该工具会提供您上文所述的警告。

    为我的选项生成的代码为:

    HRPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A 、 EPWM_AQ_OUTPUT_HIGH、 EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);    
    我在 SysConfig 中启用了 HRPWM、因此它使用不同的内置函数("HR")。
     另外、在示例中、当 CTR 在向上计数时为 CMPA 时、它清除 PWMA。 由于 SysConfig 警告、我们也不应该这么做。
    那么为什么示例函数可以正常工作、但我的函数提供了会导致不稳定的警告?
     
    TIDM-02013中、会首先将 AQ 设置配置为非高分辨率模式、然后启用高分辨率模式。 也许这就是区别吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,郭汉

    对于许多 HRPWM driverlib 函数、除非它们专门编辑高分辨率配置、如 DBREDHR 寄存器或 CMPAHR 寄存器、否则它们实际上会混叠到相应的 EPWM driverlib 函数中。 因此、  在本例中、HRPWM_setActionQualifierAction 和 EPWM_setActionQualifierAction 执行相同的操作。  

    在参考设计指南时、提到初级桥臂 PWM 配置为向上向下双向计数模式、并以周期为中心。 这与 SysConfig 警告中描述的配置相同、因此 TIDM-02013中的 PWM 符合我们的 HRPWM AQ 要求。

    您指的是代码的哪一部分? 可以观察次级侧的 SR 桥臂、

    此致、

    彼得

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

    尊敬的 Peter:
    再次感谢您的支持。

    我想在此处分享有关我的问题的最新状态。


    正如我们昨天所讨论的、我仍然无法控制 CMPAHR 寄存器。  

    无论我做什么、它都不会改变任何东西。  
    我找到了一个示例"HRPWM_ex4_DUTY_UPDOWN_SFO"。 其中 CMPAHR 会生效、在本示例中、PWMA 输出的设置基本相同。  

    此外、 高电平有效互补死区设置适用于对称 PWMB 的生成、但 PWMA 和 PWMB 之间有2个 PWMclock (2 * 10ns)差异。 正如您昨天所知道的、我们已经通过变化的 FED 值发现了这一点、但我们仍然不知道为什么会发生这种情况。

    此致、

    Gökhan Bayraktar

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

    我用于更新 TBPRD、TBPRDHR、CMPA 和 CMHR 的运行时代码如下:

    EPwm1Regs.TBPRD=gress_prd;
    EPwm1Regs.TBPRDHR=periodFine*256;

    CMPA_1=(gress_prd/2)+ cmpA_var;

    EPwm1Regs.CMPA.bit.CMPA=CMPA_1;

    EPwm1Regs.CMPA.bit.CMPAHR=CMPA_HR_1;
    // HRPWM_setCounterCompareValue (myEPWM0_BASE、HRPWM_COUNTER_COMPARE_A、compCount);(该函数仍然对 CMPAHR 无影响)

    EPwm1Regs.DBRED.bit.DBRED=RED_1;
    EPwm1Regs.DBFED.bit.DBFED=FED_1;

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

    最后、

    当我在 SysConfig 中更改 CMPAHR 时、我可以看到 PWM 输出发生了变化。

    但我无法在运行时更改任何内容。 它是如此的有趣!

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

    最后一个、
    存在这种有趣的行为。

    使用初始 SysConfig 设置以及在 I 设置 gress_prd=50和 periodFine=0后;  
    PWMA 和 PWMB 之间存在20ns 的脉冲宽度差。


    然后、我将 periodFine 变量更改为255以下的任何数字。 PWM 频率会发生变化。 然后、我像开头一样将其设为0。
    20ns 的差异消失了。 "我不知道你在胡说什么。"

    此外、当我将 CMPAHR 和 CMPBHR 设置为与 SysConfig 不同时(在运行时更改这些设置仍然无效)。 然后、如果我将 periodFine 的任何数从零更改为零、在 PWMB 输出上会有抖动。 PWMB 的频率不稳定。

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

    尊敬的 Gokhan:

    我怀疑您的运行时代码存在以下行中的问题

    EPwm1Regs.CMPA.bit.CMPAHR=CMPA_HR_1;

    请记住、CMPAHR 是16位寄存器、但硬件会忽略最低8位。 因此、您只需要注意写入高8位。 如果您要写入0到255的值、则只会写入底部的8位、这不会影响硬件。

    相反、它应该

    EPwm1Regs.CMPA.bit.CMPAHR = CMPA_HR_1 << 8;

    请参阅以下 TRM 摘录

    此致、

    彼得

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

    Peter、您好!

    自开始以来、我已经将256的倍数写入该寄存器。  

    在运行时代码中、我将 TBPRDHR 乘以256、因此我将 0-255之间的值写入 TBPRDHR。

    这是寄存器值、

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

    尊敬的 Gokhan:

    寄存器视图会显示正确的值、因此我不确定您为什么能够使用 SysConfig 调整 CMPAHR、但不能使用位域或寄存器写入。 您是否愿意与我们共享您的项目或项目的一部分、以便我们能够更轻松地调试 HRPWM 输出? 我没有注意到您的运行时代码有任何问题、但可能缺少我们之前没有看到的 HRPWM 配置

    此致、

    彼得

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

    尊敬的 Peter:
    我相信我已经给您发送了一些关于此问题和上次更新的邮件。 您收到了它们吗?

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

    尊敬的 Gokhan:

    似乎有一些困惑。 我原本以为您希望通过 E2E 继续进行调试。 我将跟进您的电子邮件。 谢谢

    此致、

    彼得