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.8377万D:ePWM问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/620879/tms320f28377d-epwm-problem

部件号:TMS320F2.8377万D

尊敬的:

在我的项目中,ePWM的配置如下:

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;  
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;  
EPwm1Regs.TBCTL.bit.PRDLD = TB_shadow;  
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR归零;/
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;  
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x0;
//设置阴影
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;  
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;  
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;  
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;

//设置操作
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;  
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;  
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;  
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;

....

我想在一个PWM周期中更新占空比(比较值)两次。但是,有时工作不好。即,新的占空比在此期间无法生效,但下一个。我的配置是否有问题? 我应该怎么做才能解决此问题?  

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我写这封信是为了告诉您,一位C2000小组成员已被指派担任此职位,应该很快就会回答。

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

    如何更改比较值? 我猜是因为比较值没有在CTR =0和CTR = prd事件之间的影子寄存器中定期更新而导致出现问题。 在这些事件中,比较值将从阴影加载到活动寄存器。 您可以尝试禁用阴影模式。

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

    感谢你的帮助。

    对不起,我没有准确描述问题。在我的项目中,使用了HRPWM,我想同步EPWM1和EPWM2。 EPWM1是主模块,在 EPWM1 CTR =零时,将生成SYNC PLUS。配置如下:

     

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;/
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;  
    EPwm1Regs.TBCTL.bit.PRDLD = TB_shadow;  
    EPwm1Regs.TBCTL.bit.SYNCOSEL =TB_CTR _ZERO;  
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;  
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x0;
    //设置阴影
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;  
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;  
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;/
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;

    //设置操作
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;  
    EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;  
    EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;  

    EPwm1Regs.AQSFRC.bit.RLDCSF = 3;  
    EPwm1Regs.AQCSRC.bit.CSFA = AQC_NO_ACTION;  
    EPwm1Regs.AQCSFRC.bit.CSFB = AQC_NO_ACTION;

    ....

    EPwm1Regs.HRCNFG.ALL = 0x0;
    EPwm1Regs.HRCNFG.bit.EDGMODE = HR_BEP;  
    EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;  
    EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD;  
    EPwm1Regs.HRCNFG.bit.EDGMODEB = HR_BEP;
    EPwm1Regs.HRCNFG.bit.CTLMODEB = HR_CMP;
    EPwm1Regs.HRCNFG.bit.HRLOADB = HR_CTR_ZERO_PRD;
    EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;  
    EPwm1Regs.HRPCTL.bit.HRPE = 1;  
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
    EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = TB_DISABLE;
    EPwm1Regs.HRCNFG2.bit.CTLMODEDBFED = 2;
    EPwm1Regs.HRCNFG2.bit.CTLMODEDBRED = 2;
    EPwm1Regs.HRCNFG2.bit.EDGMODEBB =3;

    我发现,如果我更改上面的粗体配置,例如,EPwm1Regs.HRPCTL.bit.HRPE =0;,它可以正常工作。  

    在《技术参考手册》中,它说:

    注意:启用高分辨率周期模式时,EPWMxSYNC脉冲将引入+/- 1 - 2
    对PWM循环抖动(加载计数模式下的+/- 1循环和加减计数中的+/- 2循环)
    模式)。 因此,TBCTL[SYNCOSEL]不应设置为1 (CTR =0为
    EPWMxSYNCO源)或2 (CTR = CMBB为EPWMxSYNCO源)。 否则,抖动
    将在同步脉冲的每个PWM循环上发生。
    当TBCTL[SYNCOSEL]= 0 (EPWMxSYNCI是EPWMxSYNCO源)时,是一个软件
    在高分辨率初始化期间,同步脉冲只能发出一次。
    如果在PWM运行时应用软件同步脉冲,则抖动将出现在上
    同步脉冲时的PWM输出。

    所以我认为我的问题与HRPWM配置有关。这是什么问题?

    您能否举例说明如何使用HRPWM和 同步ePWM模块?

    谢谢你。

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

    使用CpuSysRegs.PCLKCR0.bit.TBCLKSYNC进行ePWM同步又如何? 您需要向其写入0,如果您需要不同的阶段,则使用不同的初始TBCTR初始化所有ePWM,然后设置TBCLKSYNC=1。

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

    感谢您的建议。

    我认为使用 CpuSysRegs.PCLKCR0.bit.TBCLKSYNCI是不够的。在我的项目中 ,相位和频率应该定期更改,以便 进行频率调制和相移控制。因此,需要使用'主模式和从模式'。 但是,我遇到了上述有关具有高分辨率期间控制的HREPWM模式的一些问题。 实验 表明,该问题与ePWM  的高分辨率期间控制模式有关。我参考了所有可以查找的文档,但找不到 解决方案。因此,是否有一些应用指南 关于高 分辨率时段控制的HRPWM?  

    谢谢。