首页 > 其他分享 >计数比较模块(CC)与动作模块

计数比较模块(CC)与动作模块

时间:2023-11-27 18:06:02浏览次数:43  
标签:CTR CMPA CC 计数 模块 寄存器 EPwm1Regs bit

1.4 计数比较模块CC

1.计数比较模块的作用

计数比较模块(CC)与动作模块_非对称

图10 ePWM计数比较模块原理框图

计数比较模块以时基计数器的值作为输入,与比较寄存器CMPA和比较寄存器CMPB不断进行比较,当时基计数器的值等于其中之一时,就会产生相应的事件。

①产生比较事件具体取决于编程时是采用寄存器A还是寄存器B:

--CTR=CMPA:时基计数器的值与比较寄存器A的值相等。

--CTR=CMPB:时基计数器的值与比较寄存器B的值相等。

②动作模块 AC 恰当配置后可以控制PWM的占空比。

③采用影子寄存器来更新比较值可以有效防止在PWM周期内出现故障以及毛刺

2. 计数比较模块的特点

计数比较模块可以产生两个独立的比较时间,对于向上(递增)或者向下(递减)计数模式来说,在一个PWM,周期内,比较时间只发生一次。而对于向上向下计数模式来说,如果比较寄存器的值处于0~TBPRD之间,在一个PWM周期内,比较事件就会发生两次。

CMPA与CMPB都有相对应的影子寄存器,通过CMPCTRL[SHDWAMODE]位使能,默认情况下,CMPA与CPMB影子寄存器是使能的。

若影子寄存器被使能,那么在以下集中情况,影子寄存器的值会传递到有效寄存器中。

① CTR=PRD 时基计数器的值与周期寄存器的值相同

② CTR=ZERO时基计数器值为0

1.5 动作模块AC

1 动作模块的作用

动作模块决定相应事件发生时应该输出什么样的电平。从而使 ePWMxA 和 ePWMxB 输出所需要的开关波形。

计数比较模块(CC)与动作模块_寄存器_02

图10 动作模块框图

①动作模块根据下列事件产生动作(置高、拉低、翻转)。

--CTR=PRD:时基模块来的信号,时基计数器的值等于周期寄存器的值。

--CTR=ZERO:时基模块来的信号,时基计数器的值等于 0。

--CTR=CMPA:计数比较模块来的信号,时基计数器的值等于比较寄存器A的值。

--CTR=CMPB:计数比较模块来的信号,时基计数器的值等于比较寄存器B的值。

②管理以上事件发生后PWM的输出极性。

③针对时基计数器递增或者递减时提供独立的动作控制。

【例①】单边非对称波形(ePWMxA 和 ePWMxB 独立调制,高电平有效)如下所示

计数比较模块(CC)与动作模块_框图_03

图11 单边非对称波形

void EPWM1_INIT(void)
{
	EALLOW;
	SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =1 ;
	SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;
	EDIS;

	InitEPwm1Gpio();

	//   时基模块 TB
	EPwm1Regs.TBCTR = 0;   // 计数器从0开始
	EPwm1Regs.TBPRD = 600;  // 周期指设置为600
	EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // TBPRD使用影子寄存器
	EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 静止相位控制
	EPwm1Regs.TBCTL.bit.CTRMODE = TB_UP;
	EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;  // 设定TBCLK = SYSCLK = 系统时钟 = 150MHZ
	EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
	EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;//  禁止同步信号

	//	比较模块CC
	EPwm1Regs.CMPA.half.CMPA = 150;	  //CMPA的值设置为150
	EPwm1Regs.CMPB = 300; //CMPB的值设置为400
	EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// 设置CMPA为影子寄存器模式
	EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
	EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;  // 在CTR=ZERO时状态
	EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

	//动作模块
	EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;  // CTR=ZERO时,将epw1A置高
	EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;// CTR=ZERO时,将epw1B置高
	EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;  //  CTR=CAU时,将epw1A置低  COMARE A ' 比较寄存器
	EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;   //  CTR=CBU时,将epw1B置低 COMARE B
}
若要修改显示波形可以通过调整占空比,或者调整动作模块的触发方式
EPwm1Regs.CMPA.half.CMPA = 150;	  //CMPA的值设置为150
EPwm1Regs.CMPB = 300; //
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;  // CTR=ZERO时,将epw1A置高
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;// CTR=ZERO时,将epw1B置高
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;  //  CTR=CAU时,将epw1A置低  COMARE A ' 比较寄存器
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; 

标签:CTR,CMPA,CC,计数,模块,寄存器,EPwm1Regs,bit
From: https://blog.51cto.com/u_16192117/8587362

相关文章

  • 死区模块(DB)与斩波模块
    死区模块1死区模块作用F28335的死区模块主要作用就是让两个互补的对称的PWM波形中,上升沿的发出滞后于PWM波的下降时间发出。在实际编程或者实际情况中更灵活一些,有可能管子是低电平状态开通,所以延时的方式可以更灵活。在动作限定模块中就可以产生死区,但是如果要严格控制死区的边沿......
  • 2019年-fibonacci数列与黄金分割
    目录题目法一、递归法二、迭代题目法一、递归deffib(n):ifn==1orn==2:return1returnfib(n-1)+fib(n-2)n=int(input())a=fib(n)b=fib(n+1)print("{:.8f}".format(a/b))只通过了60%的测试法二、迭代#动态规划#deffib(n):#dp=[0]*(n+1)#......
  • 脉冲调制模块EPwm
    ePWM在电机控制、电源控制领域有较大优势。1.1控制原理PWM控制技术就是对脉冲宽度进行调制的技术,即通过一系列的脉冲的宽度进行调制,来等效地获得所需要的波形。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电......
  • nginx添加nginx_upstream_check_module模块,Linux下
    1、下图为本地虚拟机nginx目录2、cd./nginx-1.14.2进入nginx目录输入命令:patch-p1<../nginx_upstream_check_module-master/check_1.14.0+.patch  3、yum-yinstallgcc-c++pcrepcre-develzlibzlib-developensslopenssl-devel--  ./configure--prefix......
  • 0.91寸OLED液晶屏显示模块 IIC 12832液晶屏 兼容3.3v-5V
    【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百三十六:0.91寸OLED液晶屏显示模块IIC12832液晶屏兼容3.3v-5V项目二十三:黄色屏声音可视化器实验接线:max9814接A0oled模块ArdunioUnoGND---------GND接地线VCC---------5V接电源......
  • Python logging 模块 捕获异常,并保存为 logging 文件
    示例一:logging模块简单使用 basicConfig#!/usr/bin/python2.7#-*-coding:utf-8-*-"""@author:tz_zs"""importloggingimporttimeimporttracebackimportsyslogging.basicConfig(level=logging.DEBUG,form......
  • Flask Session 登录认证模块
    Flask框架提供了强大的Session模块组件,为Web应用实现用户注册与登录系统提供了方便的机制。结合Flask-WTF表单组件,我们能够轻松地设计出用户友好且具备美观界面的注册和登录页面,使这一功能能够直接应用到我们的项目中。本文将深入探讨如何通过Flask和Flask-WTF构建一个......
  • 思科认证 | CCNP考试都考什么?
    IT行业是一个很吃香的行业,想要进入IT行业的人都会考思科认证,CCNP认证就是思科认证里面非常有名的认证。那么今天我们就来聊聊它的考试内容都有什么呢?01CCNP考试题型有哪些CCNP的考试就两门,而且都是笔试考试。CCNP考试题型上,主要有单选题、多选题、拖图题及实验题。考试形式是机试......
  • 【Python】base64模块对图片进行base64编码和解码
    图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个http请求下载而来的。没错,不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,而可......
  • Java开发者的Python快速进修指南:自定义模块及常用模块
    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释器来扫描和处理。另......