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.

[参考译文] TMS320F280025C:EPWM 死区不精确

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1350810/tms320f280025c-epwm-dead-band-doesn-t-accurate

器件型号:TMS320F280025C
主题中讨论的其他器件:SysConfig

您好!

我正在尝试将特定的死区时间  

在 HRPWM 模式下工作、因此死区时钟*2速率系统时钟= 10ns (100 MHz)
我想设置 FED = 90nSec、因此计算了以下值
DBFED = feed/(2*TBCLK)=90nSec/5nSec = 18 DBCYC
因此我将其插入到 DBFED、  

但使用示波器 I measurement ~80nSec DB:


当我 将 DBFED 更改为20时、它适合相关 DB (每 增加一次 DBCYC、5nSec):



为什么会有2个 DBCYC 偏移? 如何解决这个问题?
我在 https://www.ti.com/content/dam/videos/external-videos/9/3816841626001/6304743885001.mp4/subassets/epwm_dead-band_submodule_slides.pdf 上工作


谢谢!
迈克尔

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

    我认为它与直流有关、当开始在直流= 0.1上运行代码时、我得到了正确的死区:

    当仅更改设置了新 D.C.的 CMPA 时(不触摸 DB 寄存器)、因此我将 DB 降至80nSec:

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

    还指出 CMPHR 寄存器出于某种原因正在移动 DB:
    当 CMPHR = 0X0100时:



    当 CMPHR = 0XFF00时:



    再说一次、DBFED 根本没有变化。

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

    我想的另一个 问题是、在 PWM 的可变频率中(可变 TBPRD)、我有同样的问题:
    正在研究频率 为200kHz、TBPRD = 250、且 DBRED DBFED 如下所示-  


    我具有以下死区  

    当将频率更改为300kHz 时、TBPRD = 167  和 DBRED DBFED 保持不变-

    我具有以下死区  


    请帮助:)  

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

    Michael、您好!

    感谢您提供所有信息-您还可以帮助简要总结目前的问题吗? 您似乎已经找到了最初的帖子/问题;CMPAHR 无法正常工作的问题是否符合您的预期? 或者它是不是不符合预期的死区?

    是否正在使用其他 HR 配置(TBPRDHR、死区 HR 等)? 还是仅通过 CMPxHR 来控制高分辨率占空比?

    如果您可以为您尝试实现的波形提供更多背景信息(或者添加图表可能有用)、通常会有所帮助。  

    此致、

    艾里森

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

    尊敬的 Allison:

    因此、主要问题是死区始终无法准确、我会根据本文中的计算方法设置 DBRED 和 FED:
    https://www.ti.com/lit/an/sprad12a/sprad12a.pdf?ts = 1713270874468 第5章.
    以及使用高电平有效互补模式时、测量的 DB 与所需的 DB 不同。
    我正在使用所有 HRPWM 功能 TBPRDHR 、死区 HR、DUTY。  
    我将尝试  在 B 与 A 互补时实现 HRPWM A、B 信号、死区为90nSec。
    我确实获得了所需的 DB、但当由于某种原因开始更改 CMPAHR 值时、DB 会缩小
    例如、当我将 CMPAHR 的默认值设置为0x0100且 CMPA 时、我得到的 DB 为90nSec:


    例如,当我将 CMPAHR 更改为0x8000时,我得到的 DB 为85nSec (参见 DBRED DBFED 不会改变):



    即使我将 CMPAHR 更 改为0X0A00、情况也会更糟(请参阅 DBRED DBFED 不会更改):



    为什么?  

    谢谢!
    迈克尔

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

    您能帮助我理解吗? 当使用 HRDB 时、死区或死区时间由 EPWMA (CMPA)生成。 因此、修改 HRPWM (CMPAHR)会改变占空比、但不会再次调整 DB/HRDB、这是我从该 HRPWM 系统接口识别的。

    https://www.ti.com/lit/ug/spru924f/spru924f.pdf?ts = 1713423306162&ref_url=https%253A%252F%252Fwww.google.com%252F  第11页

    本质上、我可以相对于 EPWMA 调整 HRDB、但当我通过 CMPAHR 寄存器更改 HRPWM 时、HRDB 仍对应于 EPWMA、而不是 HRPWM。 这使得它对 CMPAHR 的全刻度看起来是"盲"的、这就是为什么我在之前的响应中观察到了在死区时间上的10nSec 差值。

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

    Michael、您好!

    您能否分享您的 PWM 配置/初始化? 我想知道还有哪些用于背景的其他设置。

    您是否启用了半周期时钟? 您是否也在向 CMPBHR 写入数据?  

    此致、

    艾里森

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

    尊敬的 Allison:

    当然、这里有更多详细信息:
    计数器模式-上-下计数模式

    AQ:  


    数据库:  
    HRPWM:

    还有其他信息吗?

    您是否还在写信给 CMPBHR

    否、我正在仅更新 CMPA:CMPAHR

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

    Michael、您好!

    您能否 共享完整的 ePWM 初始化和 SysConfig 文件、以便我也可以使用相同的 ePWM/HRPWM 配置?

    您是否还可以启用半周期时钟、确保使用自动转换、并实现与 CMPAHR 相同的 CMPBHR 值?  

    另请注意、DBRED 和 DBFED 值必须大于3才能使用高分辨率死区。

    此致、

    艾里森

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

    尊敬的 Allison:

    很抱歉我的回复延迟了。
    我将从 board.c 添加配置(C 代码、而不是大量屏幕截图)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    HRPWM_setEmulationMode(PWM_BASE, EPWM_EMULATION_FREE_RUN);
    HRPWM_setClockPrescaler(PWM_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
    EPWM_setTimeBasePeriod(PWM_BASE, 250);
    HRPWM_setupEPWMLinks(PWM_BASE, EPWM_LINK_WITH_EPWM_1, EPWM_LINK_TBPRD);
    HRPWM_setTimeBaseCounter(PWM_BASE, 0);
    HRPWM_setTimeBaseCounterMode(PWM_BASE, EPWM_COUNTER_MODE_UP_DOWN);
    HRPWM_setCountModeAfterSync(PWM_BASE, EPWM_COUNT_MODE_UP_AFTER_SYNC);
    HRPWM_disablePhaseShiftLoad(PWM_BASE);
    HRPWM_setPhaseShift(PWM_BASE, 0);
    EPWM_setCounterCompareValue(PWM_BASE, EPWM_COUNTER_COMPARE_A, 250);
    HRPWM_setCounterCompareShadowLoadMode(PWM_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD);
    HRPWM_setupEPWMLinks(PWM_BASE, EPWM_LINK_WITH_EPWM_1, EPWM_LINK_COMP_A);
    EPWM_setCounterCompareValue(PWM_BASE, EPWM_COUNTER_COMPARE_B, 1);
    HRPWM_setCounterCompareShadowLoadMode(PWM_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD);
    EPWM_setupEPWMLinks(PWM_BASE, EPWM_LINK_WITH_EPWM_1, EPWM_LINK_COMP_B);
    HRPWM_setActionQualifierShadowLoadMode(PWM_BASE, EPWM_ACTION_QUALIFIER_A, EPWM_AQ_LOAD_ON_CNTR_ZERO_PERIOD);
    HRPWM_setActionQualifierAction(PWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
    HRPWM_setActionQualifierAction(PWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
    HRPWM_setActionQualifierAction(PWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
    HRPWM_setActionQualifierAction(PWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
    HRPWM_setActionQualifierAction(PWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    Michael、您好!

    非常感谢您发送此内容。 请再花2-3天的时间对此进行研究。 请随时更新任何进度/发现/问题。

    此致、

    艾里森

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

    Michael、您好!

    对于周末的延误、我们深表歉意。 我仍在尝试在我的设置中复制此行为、但会让您随时了解最新进度。

    此致、

    艾里森

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

    Michael、您好!

    很抱歉耽误了很长时间-我一直在尝试实施 SysConfig .c 设置、但仍然无法复制您在该主题前面的示波器捕获中显示的信号。 您可以考虑发送完整的项目(仅包含 PWM 和 HRPWM 实施)、以便我可以查看正确的信号吗?

    还想检查您是否有机会验证我之前(下面)建议的内容? 我没有在 SysConfig .c 中实现 CMPBHR。 您如何更新这些 HR 值?

    您是否还可以启用半周期时钟,确保使用自动转换,并实现与 CMPAHR 相同的 CMPBHR 值?  [/报价]

     您是否有进一步的发展?

    此致、

    艾里森