大家好、
I m 尝试实现 梯形控制、如下所示:
/* HS3 HS2 HS1 SCR TP1 TP3 BT1 BT2 BT3
"0""0""1""1" 1 "0""1""1" PWM "0""0"
"1""0""1""1" 5 "0""0" PWM "1""1""0""0"
"1""0""0""0" 4 "0""0""1""1" PWM "0"
"1""1""0" 6 PWM "0""0""0""0""0""1""1""0"
"0""1""0""0" 2 "1""0""0""0""0" PWM
"0""1""1""1" 3 "0" PWM "0""0""0""0""0""0""1"
*
根据 BLDC 控制套件的示例、我设法在 A 输出(TOPS)上仅获得 PWM、 在 B 输出(底部)上仅获得高电平。
我的代码如下所示、表示传感器等于1和5:
案例1:
{
DrvPWM_EPwm1Regs.AQCSFRC.bit.CSFB = 0;/*在 EPWM1的输出 B 上禁用强制*
DrvPWM_EPwm1Regs.AQCTLB.bit.CBU = 2;//在递增计数时将 CTR = CMPB 时设置为高电平*
DrvPWM_EPwm1Regs.AQCTLB.bit.CBD = 1;//在递减计数时将 CTR = CMPB 时设置为低电平*
DrvPWM_EPwm1Regs.CMPB.all = p_u16PWM;/* EPWM1输出 B 上的 PWM 信号*
DrvPWM_EPwm1Regs.AQCSFRC.bit.CSFA = 1;//在 EPWM1的输出 A 上强制一个持续低电平*
/**//
DrvPWM_EPwm2Regs.AQCSFRC.bit.CSFA = 2;//在 EPWM2的输出 A 上强制设置连续高电平*
DrvPWM_EPwm2Regs.AQCSFRC.bit.CSFB = 1;//在 EPWM2的输出 B 上强制一个持续低电平*
/**//
DrvPWM_EPwm3Regs.AQCSFRC.bit.CSFA = 1;//在 EPWM3的输出 A 上强制为连续低电平*
DrvPWM_EPwm3Regs.AQCSFRC.bit.CSFB = 1;//在 EPWM3的输出 B 上强制一个持续低电平*
}
中断;
情况5:
{
DrvPWM_EPwm1Regs.AQCSFRC.bit.CSFA = 1;//在 EPWM1的输出 A 上强制为连续低电平*
DrvPWM_EPwm1Regs.AQCSFRC.bit.CSFB = 2;/*在 EPWM1的输出 B 上强制为连续高电平*
DrvPWM_EPwm2Regs.AQCSFRC.bit.CSFA = 1;//在 EPWM2的输出 A 上强制一个持续低电平*
DrvPWM_EPwm2Regs.AQCSFRC.bit.CSFB = 1;//在 EPWM2的输出 B 上强制一个持续低电平*
DrvPWM_EPwm3Regs.AQCSFRC.bit.CSFA = 0;/*在 EPWM3的输出 A 上禁用强制*
DrvPWM_EPwm3Regs.AQCTLA.bit.CAU = 2;//在递增计数时 CTR = CMPA 时设置为高电平*
DrvPWM_EPwm3Regs.AQCTLA.bit.CAD = 1;//在倒计数时 CTR = CMPA 时设置为低电平*
DrvPWM_EPwm3Regs.CMPA.all = p_u16PWM;/* EPWM3的输出 A 上的 PWM 信号*
DrvPWM_EPwm3Regs.AQCSFRC.bit.CSFB = 1;//在 EPWM3的输出 B 上强制一个持续低电平*
}
中断;
我预期在输出 B 上使用以下公式进行 PWM:
"DrvPWM_EPwm1Regs.AQCSFRC.bit.CSFB = 0;/*在 EPWM1的输出 B 上禁用强制*
DrvPWM_EPwm1Regs.AQCTLB.bit.CBU = 2;//在递增计数时将 CTR = CMPB 时设置为高电平*
DrvPWM_EPwm1Regs.AQCTLB.bit.CBD = 1;//在递减计数时将 CTR = CMPB 时设置为低电平*
DrvPWM_EPwm1Regs.CMPB.all = p_u16PWM;/* EPWM1输出 B 上的 PWM 信号*/"
但到目前为止、我的输出 B 只有一个高电平、并且没有 PWM……
我应该去哪里?
AQCTLA 和 B 配置如下:
/******** /
/* AQCTLA 寄存器*/
/******** /
// CBD
DrvPWM_EPwm1Regs.AQCTLA.bit.CBD =
DrvPWM_EPwm2Regs.AQCTLA.bit.CBD =
DrvPWM_EPwm3Regs.AQCTLA.bit.CBD = AQ_NO_ACTION;
// CBD
DrvPWM_EPwm1Regs.AQCTLA.bit.CBU =
DrvPWM_EPwm2Regs.AQCTLA.bit.CBU =
DrvPWM_EPwm3Regs.AQCTLA.bit.CBU = AQ_NO_ACTION;
// cad
DrvPWM_EPwm1Regs.AQCTLA.bit.CAD =
DrvPWM_EPwm2Regs.AQCTLA.bit.CAD =
DrvPWM_EPwm3Regs.AQCTLA.bit.CAD = AQ_SET;
// CAU
DrvPWM_EPwm1Regs.AQCTLA.bit.CAU =
DrvPWM_EPwm2Regs.AQCTLA.bit.CAU =
DrvPWM_EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;
// PRD
DrvPWM_EPwm1Regs.AQCTLA.bit.PRD =
DrvPWM_EPwm2Regs.AQCTLA.bit.PRD =
DrvPWM_EPwm3Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;
// ZRO
DrvPWM_EPwm1Regs.AQCTLA.bit.ZRO =
DrvPWM_EPwm2Regs.AQCTLA.bit.ZRO =
DrvPWM_EPwm3Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;
/******** /
/* AQCTLB 寄存器*/
/******** /
// CBD
DrvPWM_EPwm1Regs.AQCTLB.bit.CBD =
DrvPWM_EPwm2Regs.AQCTLB.bit.CBD =
DrvPWM_EPwm3Regs.AQCTLB.bit.CBD = AQ_SET;
// CBD
DrvPWM_EPwm1Regs.AQCTLB.bit.CBU =
DrvPWM_EPwm2Regs.AQCTLB.bit.CBU =
DrvPWM_EPwm3Regs.AQCTLB.bit.CBU = AQ_SET;
// cad
DrvPWM_EPwm1Regs.AQCTLB.bit.CAD =
DrvPWM_EPwm2Regs.AQCTLB.bit.CAD =
DrvPWM_EPwm3Regs.AQCTLB.bit.CAD = AQ_NO_ACTION;
// CAU
DrvPWM_EPwm1Regs.AQCTLB.bit.CAU =
DrvPWM_EPwm2Regs.AQCTLB.bit.CAU =
DrvPWM_EPwm3Regs.AQCTLB.bit.CAU = AQ_NO_ACTION;
// PRD
DrvPWM_EPwm1Regs.AQCTLB.bit.PRD =
DrvPWM_EPwm2Regs.AQCTLB.bit.PRD =
DrvPWM_EPwm3Regs.AQCTLB.bit.PRD = AQ_NO_ACTION;
// ZRO
DrvPWM_EPwm1Regs.AQCTLB.bit.ZRO =
DrvPWM_EPwm2Regs.AQCTLB.bit.ZRO =
DrvPWM_EPwm3Regs.AQCTLB.bit.ZRO = AQ_NO_ACTION;
谢谢!
功率放大器

