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:TBPHS 改变时、ePWM 缺失周期

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1163045/tms320f28069-epwm-miss-cycle-while-tbphs-change

器件型号:TMS320F28069

你(们)好

我的应用程序需要逐渐将 TBPHS 降为0以关闭全桥拓扑, 如 本帖子所示
但在降低 TBPHS (EPWM1导联、EPWM2跟随、EPWM2中缺少波形 )的过程中缺少波形
阅读一些 帖子后 ,仍然无法解决问题

ePWM 模块的设置如下(上-下模式)

void ConfigPWM(){

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

    EPwm1Regs.TBPRD = FreqCounterTop;
    EPwm1Regs.TBPHS.half.TBPHS =0;    //TimeBase Phase Register 0 for now
    EPwm1Regs.TBCTL.bit.CTRMODE =TB_COUNT_UPDOWN;     
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; 
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm1Regs.TBCTL.bit.SYNCOSEL =TB_CTR_ZERO; 
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm1Regs.AQCTLA.bit.CAU =AQ_SET;
    EPwm1Regs.AQCTLA.bit.CAD =AQ_CLEAR;
    EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;
    EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;
    EPwm1Regs.DBFED=50; //counter: 1/45M*50~=1.11uS
    EPwm1Regs.DBRED=50;
    EPwm1Regs.CMPA.half.CMPA = FreqCounterTop/2;

    EPwm2Regs.TBPRD = FreqCounterTop;
    EPwm2Regs.TBPHS.half.TBPHS =0;    //TimeBase Phase Register 0 for now
    EPwm2Regs.TBCTL.bit.CTRMODE =TB_COUNT_UPDOWN;    
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; 
    EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm2Regs.TBCTL.bit.SYNCOSEL =TB_SYNC_IN; 
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm2Regs.AQCTLA.bit.CAU =AQ_SET;
    EPwm2Regs.AQCTLA.bit.CAD =AQ_CLEAR;
    EPwm2Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;
    EPwm2Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;
    EPwm2Regs.DBFED=50;
    EPwm2Regs.DBRED=50;
    EPwm2Regs.CMPA.half.CMPA = FreqCounterTop/2;

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

减少中断例程中的 TBPHS

OutputAmpCounter-=ChargeInter;
EPwm2Regs.TBPHS.half.TBPHS = OutputAmpCounter;

频率设置

EPwm1Regs.TBPRD =FreqCounterTop;
EPwm2Regs.TBPRD =EPwm1Regs.TBPRD;
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD/2;
EPwm2Regs.CMPA.half.CMPA = EPwm1Regs.CMPA.half.CMPA;

是否有任何其他建议可以解决此问题、或者设置是否有问题?

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

    您好!

    您似乎错过了其他内容。 在这种情况下、您可能需要在代码中处理它。 CMP 值应小于 TMPHS。

    谢谢、此致、

    桑托什

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

    你(们)好

    感谢您的回复


    进行了一些测试
    增加频率(减少  CMP)同时降低  TBPHS 会改变 缺失波的时序


    例如,我之前用40ms 将  TBPHS (相位差) 从175度降低到0 度 。 误差将在20ms (相位差约为90度、接近 CMP 设置)时发生

    但是、当我测试在降低 TBPHS 的同时增加频率时、缺失波在30ms 发生

    看起来只有当 TBPHS "通过"CMP 时才会发生错误?

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

    PoWei、

    我想在这种情况下、您需要保持 CMP < TBPHS。

    谢谢、此致、

    桑托什