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.

[参考译文] LAUNCHXL-F28P65X:HRPWM 同步

Guru**** 2515435 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1564441/launchxl-f28p65x-hrpwm-synchronization

器件型号:LAUNCHXL-F28P65X


工具/软件:

我尝试在启用 HR 的情况下创建 2 个 PWM(周期,占空比和死区)、并同步它们、以便可以在它们之间添加一个相位。
问题是当我尝试在同步时将值设置为 TBPRDHR 时、PWM 会出现抖动。 如果我将 TBPRDHR 设置为 0、或禁用两者之间的同步、则抖动会消失。

这个意义上是否存在一些限制、或者我是否遗漏了其他内容?  

PWM->HRCNFG.ALL = 0x0;//复位 HRCNFG 寄存器

PWM->HRCNFG.bit.EDGMODE = HR_BEP;//在两个边沿上进行 MEP 控制。

PWM->HRCNFG.bit.CTLMODE = HR_CMP;// CMPAHR 和 TBPRDHR HR 控制。

PWM->HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD;// CTR 上的 LOAD = 0

PWM->HRCNFG.bit.EDGEMODEB = HR_BEP;//在两个边沿上进行 MEP 控制。

PWM->HRCNFG.bit.CTLMODEB = HR_CMP;// CMPAHR 和 TBPRDHR HR 控制。

PWM->HRCNFG.bit.HRLOADB = HR_CTR_ZERO_PRD;// CTR 上的负载= 0

PWM->HRCNFG.bit.AUTOCONV = 1;//启用 HR 周期的自动转换

PWM->HRPCTL.bit.TBPHSHRLOADE = 1;//启用 TBPHSHR 同步(更新计数 HR 控制时需要)

PWM->HRPCTL.bit.HRPE = 1;//开启高分辨率周期控制。

PWM->TBCTL.BIT.SWFSYNC = 1;

PWM->CMPA.bit.CMPAHR =(1 << 8);
PWM->CMPB.bit.CMPBHR =(1 << 8);

PWM->DBCTL.BIT.IN_MODE = DBA_ALL;
PWM->DBCTL.BIT.SHDWDBREDMODE = 1;
PWM->DBCTL.BIT.SHDWDBFEDMODE = 1;
PWM->DBCTL.BIT.LOADREDMODE = 2;//加载计数器=0
PWM->DBCTL.BIT.LOADFEDMODE = 2;//加载计数器=0
PWM->DBCTL.BIT.DEDB_MODE = 0x0;
PWM->DBCTL.BIT.HALFRECYCLE = 1;
PWM->DBCTL.BIT.POLSEL = 0x2;
PWM->DBCTL.BIT.OUT_MODE = DB_FULL_ENABLE;
PWM->DBCTL.BIT.OUTSWAP = 0x0;

PWM->DBRED.BIT.DBRED = 0;
PWM->DBREDHR.BIT.DBREDHR = 0x0;
PWM->DBFED.BIT.DBFED = 0;
PWM->DBFEDHR.BIT.DBFEDHR = 0x0;

PWM->HRCNFG2.bit.EDGEMODEDB = HR_BEP;
PWM->HRCNFG2.bit.CTLMODEDBRED = HR_CTR_ZERO_PRD;// ZRO 上加载
PWM->HRCNFG2.bit.CTLMODEDBFED = HR_CTR_ZERO_PRD;//在 ZRO 上加载
PWM->DBREDHR.BIT.DBREDHR =(0 << 9);

CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;  


//////////////////


EPWM_enableSyncOutPulseSource ((uint32_t) masterPWM->pstEPwmAddr、EPWM_SYNC_OUT_PULSE_ON_CNTR_ZERO);
ePWM_selectPeriodLoadEvent ((uint32_t) slavePWM->pstEPwmAddr、ePWM_shadow_load_mode_counter_sync);

slavePWM->pstEPwmAddr->TBCTL.BIT.SWFSYNC = 1;


slavePWM->pstEPwmAddr->TBCTL.bit.PHSEN = TB_enable;


谢谢!

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

    您好、

    使用 HRPWM 周期功能时、请参阅 TRM 中的注释以了解同步。

    谢谢