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.

[参考译文] TMS320F2.8027万F:具有HRPWM的互补PWM信号

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/659112/tms320f28027f-complementary-pwm-signals-with-hrpwm

部件号:TMS320F2.8027万F
主题中讨论的其他部件:controlSUITE

我正在 C2000 LaunchPad XL上使用TMS320F2.8027万F。 我正在尝试使用高分辨率PWM通道(GPIO 0和2)生成补充信号。 我使用了controlSUITE示例"example_2802xHRPWM.c"中的代码库

是否可以使用两个不同的HRPWM通道(ePWM1A和ePWM2A)来生成互补信号? 如果是,需要什么控制模式,是否有人可以向我提供一个如何执行此操作的示例? 我无法确定完成互补PWM信号所需的边缘模式,控制模式和阴影模式的配置。

谢谢!

Jeff Hensal

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

    Jeff,

    您应该能够使用PWM1A和PWM2A来执行此操作,请注意同步链不是高分辨率,因此两个信号之间应该会出现一些抖动。

    见以下帖子: https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/62564f</s>6.2564万 

    我没有补充HRPWM信道的示例。 您应该能够在不同的边缘模式,控制模式或阴影模式下获得互补信号。 PWM参考指南 将是此处的最大帮助。  

    如果您遇到更明确的问题,在实施此计划时,我或许能够提供更多帮助。

    希望它有所帮助!
    科迪  

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

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

    Cody,

    感谢您的回复。 您认为相对于我所需的750 kHz频率而言,抖动会很明显吗?

    我一直在尝试遵循HRPWM参考指南,但有点卡滞。 我将尝试进一步阐述我的不确定性。  

    我正在尝试同步ePWM1A和ePWM2A通道。 理想情况下,我希望能够通过修改代码中的单个参数来更改一个相位与另一个相位。 我正在尝试实现双有源桥(DAB)直流/直流转换器的单相换档控制。  

    我使用了2802xHRPWM示例中的代码库,并根据需要对其进行了修改。 以下是我拥有的相关代码:


    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    UINT16周期= 80;

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    EDIS;

    EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = 0x1;
    EPwm1Regs.TBCTL.bit.PHSEN = 0x1;
    EPwm1Regs.HRPCTL.bit.HRPE = 0x1;

    EPwm1Regs.TBCTL.bit.PRDLD = TB_shadow;//设置阴影负载

    EPwm1Regs.TBPRD =周期-1;// PWM频率= 1 /周期
    EPwm1Regs.CMPA.Halper.CMPA =周期/ 2;//初始设置占空比50 %
    EPwm1Regs.CMPA.Half.CMPAHR =(1<8);//初始化HRPWM扩展
    EPwm1Regs.CMBB =周期/ 2;//初始设置占空比50 %
    EPwm1Regs.TBPHS.ALL = 0;
    EPwm1Regs.TBCTR = 0;

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm1Regs.TBCTL.bit.PHSEN = TB_enable;// EPwm1是主中继器
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;

    EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;// PWM切换低/高
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
    EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
    EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;

    EALLOW;

    EPwm1Regs.HRCNFG.ALL = 0x0;
    EPwm1Regs.HRCNFG.bit.EDGMODE = HR_BEP;//上升沿上的MEP控制
    EPwm1Regs.HRCNFG.bit.CTLMODE = HR_PHS;
    EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD;
    EDIS;

    EPwm2Regs.HRPCTL.bit.TBPHSHRLOADE = 0x1;
    EPwm2Regs.TBCTL.bit.PHSEN = 0x1;
    EPwm2Regs.HRPCTL.bit.HRPE = 0x1;

    EPwm2Regs.TBCTL.bit.PRDLD = TB_shadow;//设置阴影负载

    EPwm2Regs.TBPRD =周期-1;// PWM频率= 1 /周期
    EPwm2Regs.CMPA.Halper.CMPA =周期/ 2;//初始设置占空比50 %
    EPwm2Regs.CMPA.Half.CMPAHR =(1<8);//初始化HRPWM扩展
    EPwm2Regs.CMBB =周期/ 2;//初始设置占空比50 %
    EPwm2Regs.TBPHS.ALL = 50;
    EPwm2Regs.TBCTR = 0;

    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm2Regs.TBCTL.bit.PHSEN = TB_enable;// EPwm1是主中继器
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;

    EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR;// PWM切换低/高
    EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
    EPwm2Regs.AQCTLB.bit.ZRO = AQ_Clear;
    EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;

    EALLOW;

    EPwm2Regs.HRCNFG.ALL = 0x0;
    EPwm2Regs.HRCNFG.bit.EDGMODE = HR_BEP;//上升沿上的MEP控制
    EPwm2Regs.HRCNFG.bit.CTLMODE = HR_PHS;
    EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD;
    EDIS;

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    上传代码后,我在示波器上看到的是两个750 kHz相位信号。

    我将 EPwm2Regs.TBPHS.ALL设置为任意值,以测试它是否会调整两者之间的相位。 我不能确切地弄清楚哪一个寄存器控制着两者之间的相位值。 请帮帮我。  

    非常感谢,

    Jeff

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

    Jeff,

    抖动应小于一个SYSCLK tick。

    要从PWM1偏移PWM2,您需要配置ePWM2的TBPHS。 然后,TBPHS将在同步事件中加载到TBCTR中。 如果您不熟悉,则设备具有同步链,允许同步时基计数器。

    如果您想了解更多详细信息,请查看 PWM UG

    此致,
    科迪  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeff,
    由于不活动,我将关闭该主题,如果您有更多问题,请随时开始新的主题。

    此致,
    科迪