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.

[参考译文] TMS320F28377D:HRPWM:当 CMPA=0x03E60000 (TBPRD = 0x03E8)时的 HR 占空比问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/606562/tms320f28377d-hrpwm-hr-duty-cycle-problem-when-cmpa-0x03e60000-tbprd-0x03e8

器件型号:TMS320F28377D

我写信给您的原因是我们在使用 HRPWM 时发现的一个问题,我们不确定导致此问题的原因:

在此项目中、我们将使用德州仪器(TI)的微处理器 TMX320F28377D。

PWM 模块的时钟频率为100MHz,PWM 以50kHz 的频率(TBPRD = 1000)在“上-下计数器模式”下运行。

PWM 必须具有高分辨率占空比。

实际的 PWM 配置可在随附的文件 EPwm1Regs_CMPA_0x03E60000_Export.txt 中看到(仅配置 EPwm1)。

我们观察到的实际问题以及我们需要 TI 帮助了解和理想解决该问题的地方如下:

 

由于支持 HRPWM、我们可以精确地将 PWM 周期的占空比设置为0到99.999%(ePWM 寄存器 CMPA=从0x0到0x03E5FF00)。 但是、如果 CMPA=0x03E60000 (精确地达到99.8%)、我们将获得50%的占空比、而不是所需的占空比

当将寄存器 CMPA 的值增加到0x03E60100 (即下一个可能的占空比)时、该占空比再次正常(大约99.8005%)。

因此、只有当 CMPA 寄存器设置为0x03E60000时、才会出现问题(我们获得50%的占空比、而不是所需的占空比)。

乍一看、我们认为我们正面临这一问题、因为占空比的下降沿在 PWM 周期结束时非常接近3个时钟。

 

随附三张示波器图片。 每张图片都显示了由 CMPA 寄存器等效值创建的 PWM。

随附的.pdf 文件汇总了三个 CMPA 值。

 

PWM 配置的简短摘要:

PWM 模块的时钟频率为100MHz。

每个 PWM 具有50kHz 的频率。

PWM 配置为向上/向下计数器模式、两侧都有一个100ns 的死区。

 

TBCTL:

 PWM_TBCTL_FREE_SOFT (PWM_TBCTL_FREE_SOFT_STOP_AT 结束周期)

 PWM_TBCTL_PHSDIR (PWM_TBCTL_PHSDIR_DOWN)

 PWM_TBCTL_CLKDIV (PWM_TBCTL_CLKDIV_DIV1)

 PWM_TBCTL_HSPCLKDIV (PWM_TBCTL_HSPCLKDIV_DIV1)

 PWM_TBCTL_SWFSYNC (ON)

 PWM_TBCTL_SYNCOSEL (PWM_TBCTL_SYNCOSEL_DISABLED)

 PWM_TBCTL_PRDLD (PWM_TBCTL_PRDLD_SHADOW)

 PWM_TBCTL_PHSEN (关闭)

 PWM_TBCTL_CTRMODE (PWM_TBCTL_CTRMODE_UP_DOWN)

 

AQCTLA:

PWM_AQCTLA_CBD =禁用

PWM_AQCTLA_CBU =禁用

PWM_AQCTLA_CAD =置1

PWM_AQCTLA_CAU =清除

PWM_AQCTLA_PRD =禁用

PWM_AQCTLA_ZRO =置1

 

HRPWM 寄存器配置如下。

HRPCTL:

 PWM_HRPCTL_PWMSYNCSELX (0U)

 PWM_HRPCTL_TBPHSHRLOADE (关闭)

 PWM_HRPCTL_PWMSYNCSEL (关闭)

 PWM_HRPCTL_HRPE (接通)

 

HRCNFG:

  PWM_HRCNFG_HRLOADB (LOAD_ON_ZERO PRD)

  PWM_HRCNFG_CTLMODEB (SEL_CMPHR_OR_TBPRDHR)

  PWM_HRCNFG_EDGEMODEB (两者)

  PWM_HRCNFG_SWAPAB (PWMA_PWMB_unchanged)

  PWM_HRCNFG_AUTOCONV (启用)

  PWM_HRCNFG_SELOUTB (EPWMXB_OUT_NORMAL)

  PWM_HRCNFG_HRLOAD (LOAD_ON_ZERO PRD)

  PWM_HRCNFG_CTLMODE (SEL_CMPHR_OR_TBPRDHR)

  PWM_HRCNFG_EDGEMODE (两者)

MEP_ScaleFactor 由 SFO ()函数计算一次(在配置 PWM 之后并且在 TBCLKSYNC 设置为1之前)。

提前非常感谢您的支持。

附件:

Picture1:CMPA=0x03E5FF00时的示波器屏幕截图

Picture2:CMPA=0x03E60000时的示波器截屏

Picture3:CMPA=0x03E60100时的示波器屏幕截图

Picture1: Oscilloscope screenshot when CMPA=0x03E5FF00Picture2: Oscilloscope screenshot when CMPA=0x03E60000

e2e.ti.com/.../EPwm1Regs_5F00_CMPA_5F00_0x03E60000_5F00_Export.txt

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

    感谢您的详细博文。 我同意这可能是由于比较值的3个周期限制在 TBPRD 的3个周期内。 当 HRPWM 被启用时、这些周期中的行为未定义。

    您是否能够尝试禁用 HRPWM 以验证 CMPA 的值在标准分辨率模式下是否正常工作?

    此致、
    Kris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关这方面的更多详细信息-

    看起来正在发生的是、CMPAD 事件被错过、因为它在使用 HRPWM 时处于限制的3周期窗口内。 然后计数器回绕、在 TBCTR=ZRO 时再次设置 PWM。 这就是使其具有(接近) 50%占空比外观的原因。 如果在未启用 HRPWM 的情况下运行此功能、则会确认这一点。

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

    您好、Kris、

    感谢您的快速回答、感谢您的延迟回复。

    我已经使用标准分辨率 PWM (禁用 HRPWM 功能)和 CMPA=0x03E60000进行了测试、负载为预期的 C.A.99.8%。

    此致

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

    哪个是 CMPAD 事件?

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

    这一行代码是我称为 CMPAD 事件的代码:

    PWM_AQCTLA_CAD =置1

    似乎错过了这个事件、这导致 PWM 保持低电平、直到 TBCTR = 0再次且 PWM 被置位(PWM_AQCTLA_ZRO =置位)。

    由于您已确认这在标准分辨率模式下工作正常、因此这肯定是该范围内未定义 HRPWM 行为的结果。

    如果有任何其他我们可以帮助的东西、请告知我们。

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

    谢谢 Kris

    此致、

    伊凡