工具/软件:Code Composer Studio
大家好、
我正在尝试了解一些旧代码(2014)、但我在理解前三行时遇到了困难。
我到目前为止的理解是:
- 从.TBPRD 到.AQCTLA 的一切内容都是关于设置 PWM A 和 B 信号来控制半个 H 桥;
- 这与文档中提供的示例类似。
- PWM A 的启动为高电平、并在 CMPA 遇到低电平时切换
- PWM B 的启动为低电平、并在 CMPB 遇到高电平时切换
但是、前三行(AQCSFRC)似乎表明、只要加载了影子寄存器中的某个内容(在本例中、只要计数器等于周期)、输出 A 和 B 就会被强制为低电平。 因此、在一个周期后、PWM A 被强制为低电平、这似乎与以下情况相矛盾:
- EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
我缺少什么?
当前在机器上运行的相关代码。
EPwm1Regs.AQCSFRC.bit.CSFA = 1;//事件计数器等周期使能强制低电平高侧电桥 //事件计数器等周期 使能强制低电平
EPwm1Regs.AQCSFRC.bit.CSFB = 1;//事件计数器的周期相等使能强制低侧电桥
EPwm1Regs.AQSFRC.bit.RLDCSF = 1;//事件计数器加载等效周期29-10-2014 -活动寄存器从影子选项重新加载(开启周期)
EPwm1Regs.TBPRD =周期;//周期= 601 TBCLK 计数
EPwm1Regs.CMPA.half.CMPA = Cmpa;//比较 A = 350 TBCLK 计数
EPwm1Regs.CMPB = CMPB;//比较 B = 200 TBCLK 计数
EPwm1Regs.TBPHS.ALL = 0;//将相位寄存器设置为零
EPwm1Regs.TBCTR = 0;//清除 TB 计数器
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLK。 TB_DIV1 = 1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;// TB_DIV1 = 1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;// CTR 上的负载=零
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD;// CTR 上的负载=零
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//动作限定器输出 A 控制寄存器.bit。 计数器等于零时的操作。 SET =高电平
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//@Cmpa、设置为低电平;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
此致、
Karel