F28335 ePWM计数模块(CC)与 动作模块(AC)及其寄存器配置 ————TMS320F28335学习笔记(六)

1 计数比较模块
1.1 计数比较模块作用

计数比较模块是以时基计数器的值作为输入,与比较寄存器CMPA和CMPB不断进行比较的,当时基计数器的值等于其中之一时,就会产生相应的事件。
F28335就是通过对比这些值,来产生事件,与动作模块AC相配合来调节PWM的占空比以及频率。

补充:采用影子寄存器来更新比较值CMPA和CMPB 能够有效的防止在PWM周期内出现故障以及毛刺。

1.2 计数比较模块的关键信号

  • CTR=CMPA 时基计数器的值等于CMPA的值
  • CTR=CMPB 时基计数器的值等于CMPB的值
  • CTR=0 时基计数器的值等于0
  • CTR=TBPRD 时基计数器的值等于周期寄存器的值

1.3 计数比较模块的特点

  • 计数比较模块需要产生两个独立的比较事件,才能产生PWM波

对于向上递增或者向下递减计数模式来说,在一个PWM周期内,CTR和CMPA和CMPB比较事件只发生一次,所以就需要和0或PRD相对比。而增减模式,CTR和CMPA和CMPB比较事件发生两次,更加灵活。

  • 计数比较模块需要与动作模块AC相互配合

以上每个关键信号的到来,都可以产生一个动作信号,这个动作信号可以是置高和置低,我们在设置的时候,灵活运用就可以产生不同的PWM。

1.4 计数比较器寄存器配置

计数比较寄存器 A与计数比较器B
在这里插入图片描述
在这里插入图片描述
配置方式:直接赋值

     EPwm1Regs.CMPA.half.CMPA = 500;
     EPwm1Regs.CMPB = 0;

计数比较控制寄存器

在这里插入图片描述

在这里插入图片描述

采用影子寄存器来更新比较值CMPA和CMPB 能够有效的防止在PWM周期内出现故障以及毛刺。
一般对计数控制寄存器的配置主要是配置好影子寄存器。
配置方式:

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    //CMPA影子装载模式
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;    //CMPB影子装载模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;   //CTR=0 影子寄存器A装载
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;   //CTR=0 影子寄存器B装载

2 动作模块 AC
2.1 动作模块的作用
动作模块在PWM波形形成过程中起到关键作用,它决定了相应事件发生时间时应该输出什么电平。

  1. 根据计数比较器模块的关键信号(CTR=0,CMPA,CMPB和PRD)产生动作(置高,拉低,翻转)
  2. 管理以上事件发生后PWM的输出极性
  3. 针对时基计数器递增或者递减时提供独立的动作控制。

2.2 动作模块的关键信号
动作模块的关键信号就是计数比较寄存器和时基寄存器的比较结果,还有软件的强制信号software forced event

  • CTR=CMPA 时基计数器的值等于CMPA的值
  • CTR=CMPB 时基计数器的值等于CMPB的值
  • CTR=0 时基计数器的值等于0
  • CTR=TBPRD 时基计数器的值等于周期寄存器的值
  • 软件强制信号 由AQSFRC和 AQCSF两个寄存器处理。

2.3 动作模块事件的优先级
动作模块区别于其他模块的一个很大特性就是它具有优先级。
这是因为动作模块在同一时刻有可能会收到2个到2个以上的事件,这个就需要优先级控制他的动作顺序。
增减模式下优先级表
在这里插入图片描述
增计数模式下优先级表
在这里插入图片描述
减计数模式下优先级表
在这里插入图片描述

2.4 动作模块寄存器的配置

动作控制寄存器
在这里插入图片描述
在这里插入图片描述
**配置方式:**根据不同的计数比较器的信号来输出动作

如下是一个增计数模式下,AQCTL的配置

EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;                 // CTR上升至CMPA值 置1 ePWMA输出高
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;               // CTR下降至CMPA值 置0 ePWMA输出低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;                 // CTR上升至CMPB值 置1 ePWMB输出高
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;               // CTR下降至CMPB值 置0 ePWMB输出低

3 典型的波形配置例子
以下的程序内只包括计数模式寄存器,计数比较器寄存器和动作控制寄存器这三个关键点的代码
3.1 单边不对称波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP;           //计数模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 500;
EPwm1Regs.CMPB = 200;

EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;                 // CTR=0 置0 ePWMA输出低
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;               // CTR上升至CMPA值 置1 ePWMA输出高
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;                 // CTR=0 置0 ePWMB输出低
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;               // CTR上升至CMPB值 置1 ePWMB输出高

在这里插入图片描述

3.2 双边对称波形


EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN;           //计数模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 200;
EPwm1Regs.CMPB = 500;

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;                 // CTR上升至CMPA值 置1 ePWMA输出高
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;               // CTR减少至CMPA值 置0 ePWMA输出低
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;                 // CTR上升至CMPB值 置1 ePWMB输出高
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;               // CTR减少至CMPB值 置1 ePWMB输出低

在这里插入图片描述

3.3 双边沿不对成波形

EPwm1Regs.TBCTL.bit.CTRMODE=TB_UP_DOWN;           //计数模式

EPwm1Regs.TBPRD = 1000;
EPwm1Regs.CMPA.half.CMPA = 400;
EPwm1Regs.CMPB = 800;

EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;               // CTR上升至CMPA值 置1 ePWMA输出高
EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR;             // CTR减少至CMPB值 置0 ePWMA输出低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;             // CTR=0  置0 ePWMB输出低
EPwm1Regs.AQCTLB.bit.PRD = AQ_SET;               // CTR=PRD值 置1 ePWMB输出高

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sy243772901/article/details/83149332