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.

[参考译文] TMS320F28069:ePWM 模块同步问题

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28069

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/623241/tms320f28069-epwm-module-synchronization-problem

器件型号:TMS320F28069

尊敬的 TI 专家:

我有以下要求来同步其中一个应用的 EPWM。我正在使用 MCU - TMS320F28069。

ePWM 4 (主器件)//充当同步下流模块
ePWM 6 (从器件)//充当同步直通模块
ePWM 1 (从器件)//充当同步直通模块

初始化代码段如下所示。我刚刚跟在时基计数器同步之后
根据 TMS320F28069 MCU 应用手册提供的方案1。

空 InitEPwm4 (空)

   EALLOW;
           
           EPwm4Regs.TBPRD = 3600;                       //设置定时器周期
           EPwm4Regs.CMPA.half.CMPA = 1800;
           EPwm4Regs.CMPB = 400;
           EPwm4Regs.TBPHS.Half.TBPHS = 0x0000;          //相位为0
           EPwm4Regs.TBCTR = 0x0000;                     //清除计数器
           EPwm4Regs.TBCTL.bit.PHSEN = 0;
           //设置 TBCLK
           EPwm4Regs.TBCTL.bit.CTRMODE = 0;//向上计数

           EPwm4Regs.TBCTL.bit.PRDLD = 0;
           EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;       //设置同步下流模块
           EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;      //时钟与 SYSCLKOUT 之比
           EPwm4Regs.TBCTL.bit.CLKDIV = 0;

           EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0;   //每0加载一次寄存器
           EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;
           EPwm4Regs.CMPCTL.bit.LOADAMODE = 0;
           EPwm4Regs.CMPCTL.bit.LOADBMODE = 0;

           //设置操作
           EPwm4Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
           EPwm4Regs.AQCTLA.bit.CAU = 2;

           EPwm4Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
           EPwm4Regs.AQCTLB.bit.CBD = 2;
      EDIS;


空 InitEPwm6 (空)

   EALLOW;
                  
           EPwm6Regs.TBPRD = 1800;                       //设置定时器周期
           EPwm6Regs.CMPA.half.CMPA =400;
           EPwm6Regs.CMPB =400;
           EPwm6Regs.TBPHS.Half.TBPHS = 0x0000;          //相位为0
           EPwm6Regs.TBCTR = 0x0000;                     //清除计数器
           EPwm6Regs.TBCTL.bit.PHSEN = 1;
           //设置 TBCLK
           EPwm6Regs.TBCTL.bit.CTRMODE = 0;//向上计数
           EPwm6Regs.TBCTL.bit.PRDLD = 0;
           EPwm6Regs.TBCTL.bit.SYNCOSEL = 0;//设置同步直通
           EPwm6Regs.TBCTL.bit.HSPCLKDIV = 0;      //时钟与 SYSCLKOUT 之比
           EPwm6Regs.TBCTL.bit.CLKDIV = 0;

           EPwm6Regs.CMPCTL.bit.SHDWAMODE = 0;   //每0加载一次寄存器
           EPwm6Regs.CMPCTL.bit.SHDWBMODE = 0;
           EPwm6Regs.CMPCTL.bit.LOADAMODE = 0;
           EPwm6Regs.CMPCTL.bit.LOADBMODE = 0;

           //设置操作
           EPwm6Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
           EPwm6Regs.AQCTLA.bit.CAU = 2;

           EPwm6Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
           EPwm6Regs.AQCTLB.bit.CBD = 2;
   EDIS;


空 InitEPwm1 (空)

EALLOW;
   //输入周期值
  EPwm1Regs.TBPRD = 1800;                       //设置定时器周期
  EPwm1Regs.CMPA.half.CMPA =400;
  EPwm1Regs.CMPB =400;
  EPwm1Regs.TBPHS.Half.TBPHS = 0x0000;          //相位为0
  EPwm1Regs.TBCTR = 0x0000;                     //清除计数器
  EPwm1Regs.TBCTL.bit.PHSEN = 1;
  //设置 TBCLK
  EPwm1Regs.TBCTL.bit.CTRMODE = 0;//递增计数

  EPwm1Regs.TBCTL.bit.PRDLD = 0;
  EPwm1Regs.TBCTL.bit.SYNCOSEL = 0;//设置同步直通
  EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;      //时钟与 SYSCLKOUT 之比
  EPwm1Regs.TBCTL.bit.CLKDIV = 0;

  EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;   //每0加载一次寄存器
  EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
  EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
  EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;   

  //设置操作
  EPwm1Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
  EPwm1Regs.AQCTLA.bit.CAU = 2;

  EPwm1Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
  EPwm1Regs.AQCTLB.bit.CBD = 2;
EDIS;

//******* //

ePWM 模块4和6与两个不同的频率完全同步、而4和1不起作用。我们注意到两个 PWM 从同一个边沿开始。
但 ePWM 1模块不与 ePWM 4同步。ePWM6和 ePWM1模块的 PWM 频率与 ePWM4 (主器件)相同且不同。

是因为 ePWM 1模块不能设置为同步直通
ePWM 4根据上述代码运行为同步下流模块?
请建议进行任何更正、以便同步 ePWM 4和 ePWM 1模块。

谢谢、此致、

Ramesh P



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

    Ramesh、

    您似乎应该交换 ePWM1和 ePWM4的功能、这样您就可以将所有内容同步到一个 PWM。 这是否适用于您的应用?  

    此致、
    Cody  

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

    感谢您的回复。

    我再次明确我的要求。
    //********* //
    ePWM 4必须是频率为25kHz 的主器件。
    ePWM 1必须是频率为50kHz 的从器件。
    //********* //

    我应该能够调整 ePWM1相对于 ePWM 4的相移。

    我按照建议交换了 ePWM1和 ePWM4、但两者的频率仍然为50kHz。
    我理解以下帖子的原因、该帖子正确切地讨论我的要求。

    e2e.ti.com/.../264347

    请在下面的答复中仔细研究案例2。但我对这一问题的结论仍然不正确。
    如何为 ePWM 4作为主器件而 ePWM 1作为从器件获得两种不同的频率(应相对于 ePWM4调整哪个相位)?


    // //
    2013年5月13日下午4:28

    针对 Brett Larimore 的答复:

    您好、Brett、

    还有一个问题。

    是否需要从机在同步期间以高于或等于主 PWM 频率的频率运行。

    例如:ePWM2_(主器件)、ePWM3_(从器件)在 PWM 同步期间、ePWM3的频率>= ePWM2的频率。 如果是、为什么?

    此致、

    高级


    2013年5月13日下午4:13

    对 Shukla 序言的答复:

    Prem、

    当上行 PWM 达到其 ZRO 事件(或可能是 CMPB)时、会发生同步。

    假设您将 PWM2和 PWM3同步在一起。

    情况1:如果 PWM2以50kHz 运行、PWM3以100kHz 运行、PWM2将每50kHz 生成一个同步事件。 PWM3将在上行同步事件强制其达到特定值之前完成2个完整周期。 一切都应该很好。

    案例2:如果您希望 PWM2以100kHz 运行、PWM3以50kHz 运行、PWM2将每100kHz 生成一个同步事件。 但是、PWM3永远不会在上游同步事件发生之前完成一个完整周期、这将强制它返回到一个特定的值。 因此、PWM2和 PWM3实际上将是100kHz 信号。 请注意、只要您期望、这实际上就不是问题。

    在大多数应用情况下、您希望 PWM3的频率是 PWM2的整数倍。 (只要您了解该模块的工作情况、就可以提出其他想法)

    希望这能解答您的问题。 如果没有、请告诉我。

    谢谢、
    Brett

    // //

    由于我的硬件有一些限制、我必须严格遵循以下条件。

    ePWM 1必须是从器件、并且我必须相对于 ePWM4调整 ePWM1的相位。
    ePWM 1必须遵循 ePWM4。为此、ePWM4必须是主器件、ePWM1必须是从器件。

    希望以上信息对您很清楚、并帮助我解决此问题。

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

    Ramesh、

    "
    案例2:如果您希望 PWM2以100kHz 运行、PWM3以50kHz 运行、PWM2将每100kHz 生成一个同步事件。  但是、PWM3永远不会在上游同步事件发生之前完成一个完整周期、这将强制它返回到一个特定的值。  因此、PWM2和 PWM3实际上将是100kHz 信号。  请注意、只要您期望、这实际上就不是问题。

    "

    如果您的属于上述案例2、我可以认为您有两个选项:

    1. 使 PWM1成为25KHz 信号、而 PWM4成为50kHz 信号、并正常使用 ePWM。 这将导致较慢的信号与较快的信号同步、所有信号都应该正常工作。
    2. 禁用 PWM4和 PWM1之间的周期同步信号、并尝试使用软件 SYNC 来根据 PWM1的需要更新周期。(我希望这很难实现、但这可能取决于您的代码)

    此致、
    Cody  

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

    Cody、

    感谢您的建议。

    现在,我已经通过严格修改硬件来管理 ePWM8A 的情况。

    我稍后将尝试选项2、并在出现任何问题时返回给您。

    此致、

    Ramesh P