尊敬的 TI 专家:
我有以下要求来同步其中一个应用的 EPWM。我正在使用 MCU - TMS320F28069。
ePWM 4 (主器件)//充当同步下流模块
ePWM 6 (从器件)//充当同步直通模块
ePWM 1 (从器件)//充当同步直通模块
初始化代码段如下所示。我刚刚跟在时基计数器同步之后
根据 TMS320F28069 MCU 应用手册提供的方案1。
空 InitEPwm4 (空)
{
EALLOW;
EPwm4Regs.TBPRD = 3600; //设置定时器周期
EPwm4Regs.CMPA.half.CMPA = 1800;
EPwm4Regs.CMPB = 400;
EPwm4Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
EPwm4Regs.TBCTR = 0x0000; //清除计数器
EPwm4Regs.TBCTL.bit.PHSEN = 0;
//设置 TBCLK
EPwm4Regs.TBCTL.bit.CTRMODE = 0;//向上计数
EPwm4Regs.TBCTL.bit.PRDLD = 0;
EPwm4Regs.TBCTL.bit.SYNCOSEL = 1; //设置同步下流模块
EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0; //时钟与 SYSCLKOUT 之比
EPwm4Regs.TBCTL.bit.CLKDIV = 0;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0; //每0加载一次寄存器
EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm4Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm4Regs.CMPCTL.bit.LOADBMODE = 0;
//设置操作
EPwm4Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
EPwm4Regs.AQCTLA.bit.CAU = 2;
EPwm4Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
EPwm4Regs.AQCTLB.bit.CBD = 2;
EDIS;
}
空 InitEPwm6 (空)
{
EALLOW;
EPwm6Regs.TBPRD = 1800; //设置定时器周期
EPwm6Regs.CMPA.half.CMPA =400;
EPwm6Regs.CMPB =400;
EPwm6Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
EPwm6Regs.TBCTR = 0x0000; //清除计数器
EPwm6Regs.TBCTL.bit.PHSEN = 1;
//设置 TBCLK
EPwm6Regs.TBCTL.bit.CTRMODE = 0;//向上计数
EPwm6Regs.TBCTL.bit.PRDLD = 0;
EPwm6Regs.TBCTL.bit.SYNCOSEL = 0;//设置同步直通
EPwm6Regs.TBCTL.bit.HSPCLKDIV = 0; //时钟与 SYSCLKOUT 之比
EPwm6Regs.TBCTL.bit.CLKDIV = 0;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = 0; //每0加载一次寄存器
EPwm6Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm6Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm6Regs.CMPCTL.bit.LOADBMODE = 0;
//设置操作
EPwm6Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
EPwm6Regs.AQCTLA.bit.CAU = 2;
EPwm6Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
EPwm6Regs.AQCTLB.bit.CBD = 2;
EDIS;
}
空 InitEPwm1 (空)
{
EALLOW;
//输入周期值
EPwm1Regs.TBPRD = 1800; //设置定时器周期
EPwm1Regs.CMPA.half.CMPA =400;
EPwm1Regs.CMPB =400;
EPwm1Regs.TBPHS.Half.TBPHS = 0x0000; //相位为0
EPwm1Regs.TBCTR = 0x0000; //清除计数器
EPwm1Regs.TBCTL.bit.PHSEN = 1;
//设置 TBCLK
EPwm1Regs.TBCTL.bit.CTRMODE = 0;//递增计数
EPwm1Regs.TBCTL.bit.PRDLD = 0;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 0;//设置同步直通
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; //时钟与 SYSCLKOUT 之比
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0; //每0加载一次寄存器
EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;
//设置操作
EPwm1Regs.AQCTLA.bit.ZRO = 1;//设置 EPWM1A 的操作
EPwm1Regs.AQCTLA.bit.CAU = 2;
EPwm1Regs.AQCTLB.bit.PRD = 1;//设置 EPWM1B 的操作
EPwm1Regs.AQCTLB.bit.CBD = 2;
EDIS;
}
//******* //
ePWM 模块4和6与两个不同的频率完全同步、而4和1不起作用。我们注意到两个 PWM 从同一个边沿开始。
但 ePWM 1模块不与 ePWM 4同步。ePWM6和 ePWM1模块的 PWM 频率与 ePWM4 (主器件)相同且不同。
是因为 ePWM 1模块不能设置为同步直通
ePWM 4根据上述代码运行为同步下流模块?
请建议进行任何更正、以便同步 ePWM 4和 ePWM 1模块。
谢谢、此致、
Ramesh P