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-F28377S
工具/软件:Code Composer Studio
晚上好。
我们在前面提到的 launchpad 上向您发送邮件、因为我们遇到了问题。
问题是、我们需要对8 PWM (pwm7A、B pwm8A、B pwm9A、B pwm10A、B)进行编程、并决定同步 PWM 将为 pwm7。
pwm8、pwm9和 pwm10必须与 pwm7同相、问题是 pwm10不会与7同步。 我们附加了该代码。
谢谢
代码:
void Setup_ePWM1 (void)
{
EPwm7Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1
EPwm7Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 2
EPwm7Regs.TBCTL.bit.CTRMODE = 2;//向上-向下计数模式
EPwm7Regs.AQCTLA.bit.CAU = 1;//在 CMPA 上设置 ePWM1A
EPwm7Regs.AQCTLA.bit.CAD = 2;
EPwm7Regs.AQCTLB.bit.CBU =1;//在 CMPA 上设置 ePWM1A
EPwm7Regs.AQCTLB.bit.CBD = 2;
//在 CMPA 递减时清除 ePWM1A
EPwm7Regs.TBPRD =不正确;//
EPwm7Regs.CMPA.bit.CMPA = 0.5*tope;//首先是50%占空比
EPwm7Regs.CMPB.bit.CMPB = 0.5*tope;
EPwm7Regs.TBCTL.bit.SYNCOSEL = 1;
EPwm8Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1
EPwm8Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 2
EPwm8Regs.TBCTL.bit.CTRMODE = 2;//向上-向下计数模式
EPwm8Regs.AQCTLA.bit.CAU = 1;//在 CMPA 上设置 ePWM1A
EPwm8Regs.AQCTLA.bit.CAD = 2;
EPwm8Regs.AQCTLB.bit.CBU =1;//在 CMPA 上设置 ePWM1A
EPwm8Regs.AQCTLB.bit.CBD = 2;
//在 CMPA 递减时清除 ePWM1A
EPwm8Regs.TBPRD =不正确;//
EPwm8Regs.CMPA.bit.CMPA = 0.5*tope;//首先是50%占空比
EPwm8Regs.CMPB.bit.CMPB = 0.5*tope;
EPwm8Regs.TBCTL.bit.PHSEN = 1;
EPwm8Regs.TBPHS.bit.TBPHS = 0;
// EPwm8Regs.TBCTL.bit.SYNCOSEL = 0;//为 ePWM3启用相移
EPwm9Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1
EPwm9Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 2
EPwm9Regs.TBCTL.bit.CTRMODE = 2;//向上-向下计数模式
EPwm9Regs.AQCTLA.bit.CAU = 1;//在 CMPA 上设置 ePWM1A
EPwm9Regs.AQCTLA.bit.CAD = 2;
EPwm9Regs.AQCTLB.bit.CBU =1;//在 CMPA 上设置 ePWM1A
EPwm9Regs.AQCTLB.bit.CBD = 2;
//在 CMPA 递减时清除 ePWM1A
EPwm9Regs.TBPRD =不正确;//
EPwm9Regs.CMPA.bit.CMPA = 0.5*tope;//首先是50%占空比
EPwm9Regs.CMPB.bit.CMPB = 0.5*tope;
EPwm9Regs.TBCTL.bit.PHSEN = 1;
EPwm9Regs.TBPHS.bit.TBPHS = 0;
//EPwm9Regs.TBCTL.bit.SYNCOSEL = 0;//为 ePWM3启用相移
EPwm7Regs.TBCTL.bit.SYNCOSEL = 1;
SyncSockRegs.SYNCSELECT.BIT.EPWM10SYNCIN=2;
EPwm10Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1
EPwm10Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 2
EPwm10Regs.TBCTL.bit.CTRMODE = 2;//向上-向下计数模式
EPwm10Regs.AQCTLA.bit.CAU = 1;//在 CMPA 上设置 ePWM1A
EPwm10Regs.AQCTLA.bit.CAD = 2;
EPwm10Regs.AQCTLB.bit.CBU =1;//在 CMPA 上设置 ePWM1A
EPwm10Regs.AQCTLB.bit.CBD = 2;
//在 CMPA 递减时清除 ePWM1A
EPwm10Regs.TBPRD =不正确;//
EPwm10Regs.CMPA.bit.CMPA = 0.5*tope;//首先是50%占空比
EPwm10Regs.CMPB.bit.CMPB = 0.5*tope;
EPwm10Regs.TBSTS.bit.SYNCI=1;
EPwm10Regs.TBCTL.bit.SYNCOSEL = 0;
EPwm10Regs.TBCTL.bit.PHSEN = 1;
EPwm10Regs.TBPHS.bit.TBPHS = 0;
}
您好!
感谢您发帖并提供代码。 我们能否尝试两件事情开始:
(1)执行此代码后、您能否在 Code Composer Studio 的"Expressions"窗口中验证 SYNCSELECT.BIT.EPWM10SYNCIN 字段是否正在获取您分配的值?
(2)如果(1)读回正确的值、如果您有可以使用的 GPIO、我们可以将 EPWM7SYNCO 运行到 GPIO、以便能够将引脚上的信号可视化。
(3)您的代码中未显示该指令、但我只是想验证您在运行该代码之前是否正在执行 EALLOW 指令?
谢谢、
Kris