Thread 中讨论的其他器件:controlSUITE、 C2000WARE
尊敬的:
我有一个全 H 桥进行控制。 为此、我使用 ePWM1和 ePWM2。
ePWM1用于一个分支、具有零相移。
epWM2用于其他分支、相移是用于设置占空比的变量。
当我改变 ePWM2的相移时、ePWM2会损失一个周期?
我通过使用 EPwm2Regs.TBPHS.half-TBPHS 来更改相移。
我忘记设置了什么吗?
这是我使用的配置:
// ePWM 模块1
EPwm1Regs.AQCSFRC.bit.CSFA=ePWM_AQ_CLEAR;
EPwm1Regs.TBPRD=0;
EPwm1Regs.CMPA.half.CMPA=0;
EPwm1Regs.TBPHS.Halt.TBPHS=0;
EPwm1Regs.TBCTL.bit.CLKDIV=ePWM_DIV1;
EPwm1Regs.TBCTL.bit.HSPCLKDIV=ePWM_DIV1;
EPwm1Regs.TBCTL.bit.CTRMODE=ePWM_TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN=ePWM_TB_DISABLE;
EPwm1Regs.TBCTL.bit.PRDLD=ePWM_TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL=ePWM_TB_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE=ePWM_CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE=ePWM_CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE=ePWM_CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE=ePWM_CC_CTR_ZERO;
EPwm1Regs.AQCTLA.bit.ZRO=ePWM_AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU=ePWM_AQ_CLEAR;
EPwm1Regs.DBCTL.bit.OUT_MODE=ePWM_DB_ENABLE_FULL;
EPwm1Regs.DBCTL.bit.POLSEL=ePWM_DB_Activ_LOC;
EPwm1Regs.DBFED=50;
EPwm1Regs.DBRED=70;
// ePWM 模块2.
EPwm2Regs.AQCSFRC.bit.CSFA=ePWM_AQ_CLEAR;
EPwm2Regs.TBPRD=0;
EPwm2Regs.CMPA.half-CMPA=0;
EPwm2Regs.TBPHS.Halt.TBPHS=0;
EPwm2Regs.TBCTL.bit.CLKDIV=ePWM_DIV1;
EPwm2Regs.TBCTL.bit.HSPCLKDIV=ePWM_DIV1;
EPwm2Regs.TBCTL.bit.CTRMODE=ePWM_TB_COUNT_UP;
EPwm2Regs.TBCTL.bit.PHSEN=ePWM_TB_ENABLE;
EPwm2Regs.TBCTL.bit.PRDLD=ePWM_TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL=ePWM_TB_SYNC_IN;
EPwm2Regs.CMPCTL.bit.SHDWAMODE=ePWM_CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE=ePWM_CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE=ePWM_CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE=ePWM_CC_CTR_ZERO;
EPwm2Regs.AQCTLA.bit.ZRO=ePWM_AQ_SET;
EPwm2Regs.AQCTLA.bit.CAU=ePWM_AQ_CLEAR;
EPwm2Regs.DBCTL.bit.OUT_MODE=ePWM_DB_ENABLE_FULL;
EPwm2Regs.DBCTL.bit.POLSEL=ePWM_DB_Activ_LOC;
EPwm2Regs.DBFED=30;
EPwm2Regs.DBRED=40;
//********
//步骤2:配置 ePWM 跳闸区域
//********
//启用 CPU CLK 失败
EPwm1Regs.TZSEL.bit.OSHT5=true;
EPwm2Regs.TZSEL.bit.OSHT5=true;
//使能驱动器故障
EPwm1Regs.TZSEL.bit.OSHT1=true;
EPwm2Regs.TZSEL.bit.OSHT2=true;
//将驱动程序故障配置为触发区输入
//故障1连接到 GPIO14
TrigRegs.INPUT1SELECT = 14;
//故障2连接到 GPIO15
TrigRegs.INPUT2SELECT = 15;
//电桥 A 侧将关闭
EPwm1Regs.TZCTL.bit.TZA=ePWM_TZ_FORCE_LO;
EPwm2Regs.TZCTL.bit.TZA=ePWM_TZ_FORCE_LO;
更改控件的参数如下所示:
期间=11111;
EPwm1Regs.TBPRD=(uint16)周期;
EPwm1Regs.CMPA.half.CMPA=(uint16)(周期>>>>1);
EPwm2Regs.TBPRD=(uint16)周期;
EPwm2Regs.CMPA.half.CMPA=(uint16)(周期>>>>1);
//根据°设置在时钟脉冲中设置相位
EPwm1Regs.TBPHS.Halt.TBPHS=0;
EPwm2Regs.TBPHS.half.TBPHS=(uint16)(Period*(uint32) Phase/360);
