8 增强型脉宽调制模块ePWM

news2024/11/29 8:49:53

文章目录

  • 8.1 PWM控制基本原理
  • 8.2 PWM结构及组成单位
  • 8.3 时基模块TB
    • 8.3.1 ePWM时基模块作用
    • 8.3.2 时基模块的关键信号和寄存器
  • 8.5 动作模块 AC
    • 8.5.1 动作模块的作用
    • 8.5.2 动作模块关键信号与寄存器
  • 8.11 PWM模块输出
    • 8.11.1 单边非对称波形
    • 8.11.2 单边非对称脉冲波形

8.1 PWM控制基本原理

PWM简称脉冲宽度调制。作用在于通过脉冲宽度调制,等效获得期望波形。

  • 按照正弦规律变化和正弦波等效的PWM波形,也成SPWM(sinusoidal)波形。

8.2 PWM结构及组成单位

F28335中每个ePWM都是一个独立的小模块。

  • 每个ePWM模块由两路ePWM输出组成,分别为ePWMxA何ePWMxB。

这一对PWM输出可以配置成三种

  • 两路独立的单边沿PWM输出(相同)
  • 两路独立的但互相对称的双边沿PWM输出(相反)
  • 一对双边沿非对称的PWM输出(互相独立)

共有6对这样的ePWM模块。每对PWM模块中的两个输出可以单独使用,所以可以认为有12路单独的ePWM。
此外,F28335还有6个APWM,通过CAP模块扩展配置,可以独立使用,因此F28335最多可以有18路PWM输出。
每组ePWM模块都包含一下7个模块:

  • 时基模块TB
  • 计数比较模块CC
  • 动作模块AQ
  • 死去产生模块DB
  • PWM斩波模块PC
  • 错误联防模块TZ
  • 时间触发模块ET

在这里插入图片描述PWM模块的输入输出框图如下:
在这里插入图片描述

  • PWM的输出引脚和GPIO引脚复用。

同步信号分为时间基础同步输入ePWMxSYNCI和ePWMxSYNCO。

  • 同步信号可以将ePWM各个模块的所有单元联系在一起。
  • 每个ePWM模块都可以根据需要被配置为使用同步信号或者忽略它。
  • 时钟同步输入和输出信号仅由ePWM1引脚产生。
  • ePWM1的同步输出也与第一个捕获模块eCAP1的同步信号相连接。

错误联防信号TZ1-TZ6。

  • 当过流等发生时,TZ信号可以触发故障。
  • 每个模块都可以被配置为使用或者忽略错误联防信号。

ADC启动信号。

  • ePWMSOCA和ePWMSOCB
  • 每个ePWM模块都有两个ADC转换启动信号。
  • 任何一个ePWM模块都可以启动ADC

外设总线:

  • 外设总线宽度为32位
  • 允许16位和32位的数据通过外设总线写入ePWM模块寄存器。

8.3 时基模块TB

8.3.1 ePWM时基模块作用

8.3.2 时基模块的关键信号和寄存器

下表为时基模块相关寄存器
在这里插入图片描述CTR为TBCTR时基计数寄存器的值。
PRD为TBPRD时基周期寄存器的值。

在这里插入图片描述

8.5 动作模块 AC

指定在发生时基和比较事件时 PWM 输出引脚的动作:

  • 不采取任何动作【输出信号保持为当前设置值。但该事件仍然可以触发中断和 ADC 开始转换】
  • ePWMxA 和/或 ePWMxB 输出信号变为高电平
  • ePWMxA 和/或 ePWMxB 输出信号变为低电平
  • ePWMxA 和/或 ePWMxB 输出信号来回切换(Toggle)

通过软件控制来强制改变 PWM 输出信号的状态【由 AQSFRC 和 AQCSFRC 两个寄存器控制】
通过软件来配置和控制 PWM 死区

8.5.1 动作模块的作用

1、AQ 模块根据下列事件来产生动作(置高、拉低、翻转):
CTR = PRD :时基模块来的信号,时基计数器的值等于周期寄存器的值;
CTR = ZERO :时基模块来的信号,时基计数器的值等于 0 ;
CTR = CMPA :计数器-比较模块(CC)来的信号,时基计数器的值等于比较寄存器 A 的值;
CTR = CMPB :计数器-比较模块(CC)来的信号,时基计数器的值等于比较寄存器 B 的值。
2、管理以上事件发生后 PWM 的输出极性;

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

8.5.2 动作模块关键信号与寄存器

在这里插入图片描述

8.11 PWM模块输出

8.11.1 单边非对称波形

ePWMxA和ePWMxB独立调制,高电平有效。

在这里插入图片描述

// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600; // 设定PWM周期为601个TBCLK时钟周期 Period = 601 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 350; // 比较器A为350个TBCLK Compare A = 350 TBCLK counts
EPwm1Regs.CMPB = 200; // 比较器A为200个TBCLK Compare B = 200 TBCLK counts
EPwm1Regs.TBPHS = 0; // 相位寄存器清零 Set Phase register to zero
EPwm1Regs.TBCTR = 0; // 时基计数器清零 clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;    //递增计数模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁止相位控制 Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;    //禁止同步信号
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TBCLK = SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR = Zero
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;        //当CTR = ZERO 时,将 ePWMA 拉高
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;      //当CTR = CAU 时,将 ePWMA 置低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;        //当CTR = ZERO 时,将 ePWMB 拉高
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;      //当CTR = CBU 时,将 ePWMB 置低
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A; // adjust duty for output EPWM1A
EPwm1Regs.CMPB = Duty1B; //调整ePWMB的占空比

8.11.2 单边非对称脉冲波形

递增计数,单边非对称波形,(ePWMxA 和 ePWMxB 独立调制,低电平有效):
在这里插入图片描述

// Initialization Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.TBPRD = 600; // Period = 601 TBCLK counts
EPwm1Regs.CMPA.half.CMPA = 350; // Compare A = 350 TBCLK counts
EPwm1Regs.CMPB = 200; // Compare B = 200 TBCLK counts
EPwm1Regs.TBPHS = 0; // Set Phase register to zero
EPwm1Regs.TBCTR = 0; // clear TB counter
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Phase loading disabled
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TBCLK = SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on TBCTR = Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on TBCTR = Zero
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;    //CTR = PRD 时,将 ePWMA 置低
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;      //CTR = CAU 时,将 ePWMA 拉高
EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR;    //CTR = PRD 时,将 ePWMB 置低
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;      //CTR = CBU 时,将 ePWMB 拉高
//
// Run Time
// = = = = = = = = = = = = = = = = = = = = = = = =
EPwm1Regs.CMPA.half.CMPA = Duty1A; // adjust duty for output EPWM1A
EPwm1Regs.CMPB = Duty1B; // adjust duty for output EPWM1B

与11.1不一样的地方只有在初始化的最后部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1256360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103C8T6_PWM引脚

可以看到:一共可以产生4 x 416路PWM信号:每个TIMER4路PWM, PA0,PA1,PA2,PA3,PA8,PA10,PA11; PA共7个 PB0,PB1,PB6,PB7,PB8,PB9,PB14; PB共7个

【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code serve…

BrokerChain

BrokerChain: A Cross-Shard Blockchain Protocol for Account/Balance-based State Sharding 我总感觉这篇文章不完整,缺少一些东西。或者说有些地方并没有详细说。比如状态图的构建,网络重分片的的配置过程。都直接忽略了。 Motivation 1 跨片交易不…

Qt5.15.2静态编译 VS2017 with static OpenSSL

几年前编译过一次Qt静态库:VS2015编译Qt5.7.0生成支持XP的静态库,再次编译,毫无压力。 一.环境 系统:Windows 10 专业版 64位 编译器:visual studio 2017 第三方工具:perl,ruby和python python用最新的3.x.x版本也是可以的 这三个工具都需要添加到环境变量,安装时勾选…

Android aidl的简单使用

一.服务端 1.创建aidl文件,然后记得build下生成java文件 package com.example.aidlservice31;// Declare any non-default types here with import statementsinterface IMyAidlServer {// 接收一个字符串参数void setData(String value);// 返回一个字符串String …

windows通过regsvr32注册dll文件失败

1、注册dll文件失败 最近在研究中文输入法,下载SampleIME源码后编译得到SampleIME.dll,最后只需要将输入法安装(即注册)就可以使用了。 但是通过命令: regsvr32 C:\Windows\System32\SampleIME.dll 注册时却提示错…

使用花生壳外网远程ssh访问内网主机 亲测有效

经常会遇到远程访问其他电脑的需求,一般首选向日葵软件,傻瓜式的连接远程桌面控制,非常方便。但是仅限于远程桌面远程协助这种。 对于程序员来说最佳的登录方式是ssh,同时远程桌面连过来的时候分辨率比较低,图形效果相…

Flask学习二:项目拆分、请求与响应、cookie

教程 教程地址: 千锋教育Flask2框架从入门到精通,Python全栈开发必备教程 老师讲的很好,可以看一下。 项目拆分 项目结构 在项目根目录下,创建一个App目录,这是项目下的一个应用,应该类似于后端的微服…

从 CoT 到 Agent,最全综述来了!上交出品

就在前两天,我们刚刚和大家聊了聊最近相当火爆的 AI Agents 这一概念:聊聊我对AI Agents技术的一些看法。水平所限,我们也只是浅浅为大家梳理了一下 AI Agents 的概念发展与其代表性技术,一来不深入二来不细致,只能供大…

机器学习库:pandas

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 文章目录 写在开头 基本数据格式 DataFrame 数据选取 iloc 数据描述 head describe 数据合并 merge 数据删除 drop drop删除多列 处理缺失…

京东秒杀之商品列表

1 在gitee上添加.yml文件 1.1 添加good-server.yml文件 server:port: 8084 spring:datasource:url: jdbc:mysql://localhost:3306/shop_goods?serverTimezoneGMT%2B8driverClassName: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceusername: rootpa…

MATLAB和S7-1200PLC水箱液位高度PID控制联合仿真(MODBUSTCP通信)

MATLAB和SMART 200PLC的联合仿真请查看下面文章链接 MATLAB Simulink和SMART PLC水箱液位高度PID控制(联合仿真)-CSDN博客文章浏览阅读606次。SMART PLC 向导PID的详细介绍请查看下面文章链接:S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)-CSDN博客文章浏览阅…

231126 刷题日报

1. 高楼扔鸡蛋 O(N*logN) 2. 698. 划分为k个相等的子集 没做出来,和划分两个子集不同 3. 300. 最长递增子序列 LIS petencie sorting 没看懂,明天看吧 4. 518. 零钱兑换 II 完全背包问题:每个物品数量是无限的 注意:dp的定义…

shiro整合redis

shiro整合redis 前言:shiro默认的session是存储在jvm内存中的,这样会导致java服务内存占用更大以及一旦服务器宕机或者版本迭代需要重启服务时,缓存中的数据不能恢复,导致用户需要重新登录认证,体验很差。因此利用第三…

相识词设计思路及实现方法

目录 1.业务背景 2.实现方法 第一种: ​编辑 第二种: 3.相关材料 1.业务背景 业务有全文检索功能,然后根据标书的要求需要有近似词的功能,一般近似词需要模型训练之后成为词库,是需要大数据相关人员负责。负责人表示…

代码随想录算法训练营 ---第四十二天

今天开始学习 动态规划:背包问题 也是比较难的一部分了 动态规划:背包问题 理论基础 01背包(二维数组) 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用…

MySQL进阶_10.锁

文章目录 一、概述二、MySQL并发事务访问相同记录2.1、读-读2.2、写-写2.3、读-写2.4、并发问题的解决方案 三、锁的不同角度分类3.1、 读锁、写锁3.1.1、 锁定读 3.2、表级锁、页级锁、行锁3.2.1、表锁3.2.2、意向锁3.2.2.1、意向锁的作用3.2.2.2、意向锁的互斥性 3.2.3、自增…

简单订单和支付业务的相关流程

1、订单创建、支付及订单处理流程图 2、创建HTTP客户端工具类 Slf4j public class HttpclientUtil {//类中定义了一个私有静态成员变量instance,并且将其初始化为HttpclientUtil类的一个实例,用于实现单例模式。private static HttpclientUtil instance…

LV.12 D20 RTC实验 学习笔记

一、RTC简介 RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电 二、Exynos4412下的 RTC控制器 它支持…

手摸手Element-Plus组件化开发

前端环境准备 编码工具: VSCode 依赖管理:NPM 项目构建: Vuecli NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm&am…