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:同时使用高分辨率周期和高分辨率占空比将导致 ePWM 输出端出现抖动

Guru**** 2616675 points

Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/694073/tms320f28377d-use-high-resolution-period-and-high-resolution-duty-cycle-simultaneously-will-cause-jitter-on-epwm-out

器件型号:TMS320F28377D
主题中讨论的其他器件:TMS320F280049M、controlSUITE

您好、香榭丽舍

在我客户的应用中 、将同时使用高分辨率周期和高分辨率占空比。 他们发现 ePWMxA 的输出存在一些抖动。

您可以看到示波器捕获、如下所示。 黄色波形为 ePWM1A 输出、蓝色波形为 ePWM3A 输出。

此外、如果 EPwm1Regs.HRPCTL.bit.HRPE 设置为零、则抖动将消失。  

那么、问题是 是否可以同时使用高分辨率周期和高分辨率占空比?  

谢谢。

此致、

年轻

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

    据此:

    这是可能的、但您必须遵循以下步骤:

    //禁用 TBCLKSYNC
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
    EDIS;
    
    //写入 CMP、TBPRD、TBPHS 寄存器。
    (* ePWM[j]).TBCTL.bit.PRDLD = TB_SHADOW; //设置影子加载
    (* ePWM[j]).TBPRD =周期; // PWM 频率= 1/(2*TBPRD)
    (* ePWM[j]).cmpa.half.cmpA =周期/2; //初始设置占空比50%
    (* ePWM[j]).cmpa.half.cmpaHR =(0 << 8); //初始化 HRPWM 扩展
    (* ePWM[j]).TBPHS.ALL = 0;
    
    //配置模式、时钟分频器和动作限定器
    (* ePWM[j]).TBCTR = 0;
    (* ePWM[j]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //选择向上/向下计数模式
    (* ePWM[j]).TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
    (* ePWM[j]).TBCTL.bit.HSPCLKDIV = TB_DIV1;
    (* ePWM[j]).TBCTL.bit.CLKDIV = TB_DIV1; // TBCLK = SYSCLKOUT
    (* ePWM[j]).TBCTL.bit.free_soft = 00;
    
    (* ePWM[j]).cmPCTL.bit.LOADAMODE = CC_CTR_ZERO; //在 CTR = 0时加载 CMPA
    (* ePWM[j]).cmPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    (* ePWM[j]).cmPCTL.bit.SHDWAMODE = CC_SHADOW;
    (* ePWM[j]).cmPCTL.bit.SHDWBMODE = CC_SHADOW;
    
    (* ePWM[j]).AQCTLA.bit.CAU = AQ_SET;
    (* ePWM[j]).AQCTLA.bit.CAD = AQ_CLEAR;
    (* ePWM[j]).AQCTLB.bit.ZRO = AQ_SET
    (* ePWM[j]).AQCTLB.bit.PRD = AQ_CLEAR;
    
    //配置 HRPWM 寄存器
    EALLOW;
    (* ePWM[j]).HRCNFG.ALL = 0x0;
    (* ePWM[j]).HRCNFG.bit.EDGMODE = HR_BEP; //两个边沿上的 MEP 控制
    (* ePWM[j]).HRCNFG.bit.CTLMODE = HR_CMP; // CMPAHR 和 TBPRDHR 控制
    (* ePWM[j]).HRCNFG.bit.HRLOAD = HR_CTR_Zero_PRD;// CTR 上的负载= 0且 CTR = TBPRD
    (* ePWM[j]).HRCNFG.bit.AUTOCONV = 1; //启用自动转换
    (* ePWM[j]).HRPCTL.bit.HRPE = 1; //开启高分辨率周期控制
    
    //设置 TBCTL[PHSEN]= 1
    (* ePWM[j]).TBCTL.bit.PHSEN = 1;
    
    //设置 HRPCTL[TBPHSHRLOADS]= 1
    (* ePWM[j]).HRPCTL.bit.TBPHSHRLOADE = 1;
    
    //对所有其他 PWM 模块执行相同
    …
    
    //启用 TBCLKSYNC
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
    
    //执行软件同步
    EPwm1Regs.TBCTL.bit.SWFSYNC = 1; 

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

    你好、Nima、

    客户相应地修改代码、但问题仍然存在。 您是否愿意帮助查看以下代码?

    空 HRPWM_TG_Config (周期)

    {
    uint16 j;
    //
    具有 HRPWM 的// ePWM 通道寄存器配置
    // ePWMxA 在上升沿由 MEP 控制切换为低电平/高电平
    //
    //禁用 TBCLKSYNC
    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=0;
    EDIS;
    
    for (j=1;j <
    

    谢谢。

    年轻

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

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Nima、
    是否有更新?
    谢谢。
    此致、
    年轻
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我在使用 TMS320F280049M 时遇到了同样的问题。 我正在从 POST 中跟踪示例代码  

    e2e.ti.com/.../189224

     在任何情况下、只要进行 UP_DOWN 或 UP 计数、我都会得到大小为1计数的抖动(在我的情况下、每粗步长为10nsec)... 目前是否有解决方案?

    此致、

    Alberto  

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

    是的、代码中的问题是:


         (*ePWM[j]).HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD;    // load on CTR = 0 and CTR = TBPRD

    它们必须在零和周期上加载。

    如果他们不这样做,他们就会面临这一问题。

    上面的链接是相同的问题。

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

    您是否愿意帮助检查客户的 HRPWM 配置代码? 现在、由于这个问题、项目正在挂起。
    谢谢。

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

    没问题。 我将在实验中尝试该方法。

    NIMA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    客户是否遇到范围限制?
    请查看 TRM 并搜索"向上/向下计数占空比范围限制示例"。 我怀疑它们可能违反了 PWM 模块的限制。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    NIMA、
    我已检查"上-下计数占空比范围限制示例"、设置了50%占空比、但无法达到限制。
    您是否愿意帮助测试代码?
    我的客户正在等待我们的解决方案。
    非常感谢。
    此致、
    年轻
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、当然可以。 您能否发送他们的 CCS 项目以使我具有与他们完全相同的设置?

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

    你好、Nima、

    您可以通过以下链接引用工程、并将该文件解压缩到 C:\TI\controlSUITE\device_support\F2837xD\V210\F2837xD_examples_CPU1。

    e2e.ti.com/.../hrpwm_5F00_prdupdown_5F00_sfo_5F00_v8.zip

    非常感谢、

    年轻

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

    找到问题。 在 HRPWM 配置函数中、代码未将 EDGEMODE 设置为两个边沿。 在评论中、它说"双边沿"、但在您发送给我的客户代码中、使用的值为"2"。 如果您将其更改为"3"、这是 TRM 中提到的两个边沿、您会看到抖动将消失。  

    那么、我在代码中更改了以下内容: