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.

[参考译文] CCS/TMS320F28069:相移

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/592355/ccs-tms320f28069-phase-shift

器件型号:TMS320F28069
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

您好!

我将 Piccolo 实验套件与 F28069控制卡配合使用。 我使用 了 controlSUITE 中的 HRPWM 示例。 当我尝试向 Epwm2寄存器添加相移时、它不起作用。 请有人解释一下。

EPwm1Regs.TBCTL.bit.PRDLD = TB_Immediate;//设置立即加载
EPwm1Regs.TBPRD =周期-1; // PWM 频率= 1/周期
EPwm1Regs.CMPA.half.CMPA =周期/ 2; //初始设置占空比50%
EPwm1Regs.CMPA.half.CMPAHR =(1 << 8); //初始化 HRPWM 扩展
EPwm1Regs.CMPB =周期/ 2; //初始设置占空比50%
EPwm1Regs.TBPHS.ALL = 0;
EPwm1Regs.TBCTR = 0;

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 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_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

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_REP; //上升沿上的 MEP 控制
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
EDIS;
}

//
// HRPWM2_Config -
//
void
HRPWM2_Config (uint16周期)
{
//
使用 HRPWM 进行// ePWM2寄存器配置
// ePWM2A 在上升沿由 MEP 控制切换为低电平/高电平
//
EPwm2Regs.TBCTL.bit.PRDLD = TB_Immediate;//设置立即加载
EPwm2Regs.TBPRD =周期-1; // PWM 频率= 1/周期
EPwm2Regs.CMPA.half.CMPA =周期/ 2; //初始设置占空比50%
EPwm1Regs.CMPA.half.CMPAHR =(1 << 8); //初始化 HRPWM 扩展
EPwm2Regs.CMPB =周期/ 2; //初始设置占空比50%
EPwm2Regs.TBPHS.ALL =(周期/2)-1; //180相移
EPwm2Regs.TBCTR = 0;

EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

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_REP; //上升沿上的 MEP 控制
EPwm2Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;

EDIS;
} 

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

    通过查看您的代码、我可以看到 TB_SYNC_DISABLE 被写入 EPWM1的 SYNCOSEL 中、从而禁用 EPWM1SYNCO 信号。 应将主 EPWM 的 SYNCOSEL 设置为非禁用值、即 TB_CTR_ZERO。

    此致、
    Elizabeth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Elizabeth。 它现在可以工作了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒,感谢酒店的更新!

    Elizabeth