小猫爪:AWR294x学习笔记04-AWR294x之ePWM

  • 1 前言
  • 2 框架简介
  • 3 子模块简介
    • 3.1 Time-Base (TB)
    • 3.2 Counter-compare (CC)
    • 3.3 Action-qualifier (AQ)
    • 3.4 Dead-band (DB)
    • 3.5 PWM-chopper (PC)
    • 3.6 Event-trigger (ET)
    • 3.7 Trip-zone (TZ)
    • 3.8 Digital Compare (DC)
  • 4 补充
  • END

1 前言

  这一章来稍微介绍一一下AWR294x的ePWM(enhanced pulse width modulator )模块,说白就是用来生成PWM的模块,TI在它前面加一个enhanced 说明它很牛,下面一起来看看它有什么特别之处吧。

2 框架简介

  下图显示了多个ePWM的结构图:

  可以看到不同的ePWM模块并不是相互独立的,它们之间还是有一定的联系的,至于它们之间有什么联系后面慢慢来介绍。

  下图显示了单独一个ePWM模块的结构和信号:

  各个信号的描述如下表显示:

名称 描述
EPWMxSYNCI
EPWMxSYNCO
同步信号的输入以及相关信号输出,不同的ePWM模块信号可通过EPWMxSYNCI来进行计数器同步,而EPWMxSYNCO信号可输出的信号可选
EPWMxTZINT
EPWMxINT
中断信号,ePWM事件触发后可触发中断信号至VIM,分别是Trip中断和PWM中断
EPWMxSOCA
EPWMxSOCB
ePWM事件触发后可直接发送触发开始转换信号至ADC模块
EPWMxA
EPWMxB
ePWM模块的PWM输出信号
nTZ1 to TZ3
EQEP1ERR / EQEP2 ERR
CPU Debug Mode
Trip功能信号输入,当这6个信号有效时,可直接让ePWM进入Trip

  可以看到每个ePWM模块内部有一大堆的子模块,每个子模块都有着自己的功能,它们互相协作最终完成了各种牛逼的功能。下面在子模块简介中详细介绍。

3 子模块简介

  下图显示了子模块之间的结构图:

3.1 Time-Base (TB)

  下图为TB的结构图:

  该子模块其实是整个ePWM的心脏部分,它掌控着整个ePWM的工作方式,工作强度,工作效果。首先就是它有个具有up, down, up-down三种工作模式的counter(TBCTR);拥有shadow寄存器的周期寄存器(TBPRD);当同步信号(TBCTL[SWFSYNC],DCAEVT1.sync, DCBVT1.sync,EPWMxSYNCI)出现时,TB会自动将同步值(TBPHS)装载至count(TBCTR)完成计数器同步;另外可选择EPWMxSYNCO的输出信号(同步信号,CTR = Zero,CTR = CMPB)。

  如果想用ePWM来生成PWM波的话,那么PWM波的周期和频率则完全由TB模块来决定,计算如下:


  其中TTBCLKT_{TBCLK}TTBCLK​为VCLK4经过时钟分频器来决定,TB有两级分频器,分别是TBCTL[HSPCLKDIV]和TBCTL[CLKDIV],最大分频数为14*128=1792。

3.2 Counter-compare (CC)

  下图为CC的结构图:

  这个子模块就是比较模块,每个ePWM拥有两个比较通道A和B,TB模块的counter(TBCTR)会跟CC模块的两个通道比较值(CMPA,CMPB)进行比较,当两值相等时即可触发比较事件,并且将比较事件信号发送至AQ模块。另外TB的两个比较事件(CTR = PRD, CTR = 0)信号也会经过CC模块传送至AQ模块。

3.3 Action-qualifier (AQ)

  上面了解到AQ会接收来自CC模块的四个比较信号,分别是:

名称 寄存器值 描述
CTR = CMPA TBCTR = CMPA 比较通道A比较事件
CTR = CMPB TBCTR = CMPB 比较通道B比较事件
CTR = PRD TBCTR = TBPRD 计数器周期溢出事件
CTR = ZERO TBCTR = 0x0000 计数器清零事件

  而AQ模块的作用就是决定ePWM模块对这四个比较事件出现时的两个输出信号(EPWMA, EPWMB)的反应策略。其结构如下图所示:


  可以看到AQ主要接收CC模块的信号,然后根据五个寄存器的配置进而控制两个输出信号的反应策略,两个信号的反应策略可以有:Set HighClear LowToggleDo Nothing。在这里注意的是,EPWMA和EPWMB这两个信号的A/B与CC中的比较通道CMPA和CMPB中的A/B是没有任何对应关系的,换句话说以上的四个比较事件信号以及软件强制控制在同一时间都是可以控制EPWMA信号的。

  上面说到四个比较事件信号以及软件强制控制在同一时间都是可以控制同一个EPWM信号,那么就会出现一种可能,两个及以上的事件可能会同时出现,那么AQ模块会怎么反应呢?为了处理这个场景,AQ模块给两个通道的比较事件排了优先级,以最高优先级的事件为反应策略为准。由于使用场景较少,这里就不多做介绍了,详细请参考手册。

3.4 Dead-band (DB)

  下图为DB的结构图:

  DB模块功能也是也非常简单,最重要的就是可以为AQ的两个输出信号EPWMA和EPWMB增加增加一个延时然后形成死区时间,这个功能一般会在电机控制以及开关电源控制应用中会遇到,也是非常的简单在这里就不多说了,感兴趣的小伙伴可以参考手册。

  为了区分AQ模块和DB模块中EPWMA和EPWMB,给信号名称加上前缀后为AQ_EPWMA/AQ_EPWMB和DB_EPWMA/DB_EPWMB,DB模块的输入信号为AQ_EPWMA/AQ_EPWMB, DB模块会给该信号增加开关和逻辑门,最终生成信号DB_EPWMA/DB_EPWMB。具体如下:

3.5 PWM-chopper (PC)

  下图为PC的结构图:

  PC模块的作用其实就是给DB_EPWMA/DB_EPWMB增加PWM载波,直接观察下图就可以理解了:

  这种应用一般会出现在电机控制和开关电源这种需要高频PWM调制的应用中。至于载波PSCLK的周期和频率是可以控制的,灵活应用。不过对于载波的周期配置只能固定配置16个点,而占空比的配置也只有7个占空比能选择,分别是12.5% 到 87.5%,每级增加12.5%。

3.6 Event-trigger (ET)

  该模块就是用来检测ePWM模块内部的事件,然后触发中断信号和ADC触发信号。具体信号如下:

  对于上图中的CTRU, CTRD的结束其实就是counter当时的工作状态是累加还是递减。另外ET还有一个功能就是它有一个2bit的计数器(下图红框部分),当事件发生时,这个计数器可以累加,只有当事件累计到配置数时才可能最终产生中断或者ADC触发信号。

其可以配置成以下三种情况:

3.7 Trip-zone (TZ)

  TZ模块就是实现了Trip功能,也就是接收相关错误信号然后关闭PWM输出这类的保护措施,具体Trip可由以下几个信号触发:

  其中TZ1, TZ2, TZ3连接至外部引脚, TZ4连接至eQEP1或者eQEP2的错误信号,TZ5连接至系统时钟错误信号,TZ6连接至CPU Debug Mode entry,当调试时Halt CPU时,可触发Trip。DCAEVT1/2和DCBEVT1/2则为DC模块比较事件输出信号。

  TZ模块分为了两种Trip模式,分别是Cycle-by-Cycle和One-Shot。这两种的区别在于Cycle-by-Cycle当Trip信号消失后,PWM可以被恢复,所以一般应用于一些PWM输出被当前一些操作限制而暂时触发Trip,而One-Shot则不可恢复,一般应用在短过流这种重大错误事件。

3.8 Digital Compare (DC)

  在前面多次出现了DCAEVT, DCBEVT的信号,简单的提了一下这是DC模块比较事件输出信号,接下来看看这个信号是怎么产生的。下图为DC的结构图:

  DC模块说白了就是可以比较三个外部输入信号值,当其中两个输入状态相等时就可以产生相关Digital Compare event。具体就是可以检测TZ1,TZ2,TZ3三个外部输入引脚的状态,首先对TZ1,TZ2,TZ3进行选择后产生4个信号,分别是DCAH, DCHL, DCBH,DCBL; 其中这四个信号可等于TZ1,TZ2,TZ3任何一个。然后再将DCAH, DCHL, DCBH, DCBL进行比较产生4个事件,分别是DCAEVT1, DCAEVT2, DCBEVT1, DCBEVT2,这4个事件可以配置成:

4 补充

  在TI的手册上,列举了几个非常常见的ePWM应用示例,分别是:

  大家结合前面的功能解析仔细观察这些例子,应该可以快速明白,这里就不多提了,关于ePWM的就不多说了。

END

小猫爪:AWR294x学习笔记04-AWR294x之ePWM相关推荐

  1. 小猫爪:AWR294x学习笔记01-AWR294x之MCAN

    小猫爪:AWR294x学习笔记01-AWR294x之MCAN 1 前言 2 MCAN简介 3 Feature描述 3.1 MCAN的工作模式 3.2 Timer Counter 3.3 ECC检测 3 ...

  2. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  3. openCVPracticalExercise学习笔记04

    原创:openCVPracticalExercise学习笔记04 30使用OpenCV实现图像孔洞填充 31使用OpenCV将一个三角形仿射变换到另一个三角形 1 2 3 4 5 6 7 8 9 10 ...

  4. 取得 Git 仓库 —— Git 学习笔记 04

    取得 Git 仓库 -- Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区.索引.本地版本库之间的交互:二是本地版本库和远程版本库之间的交互.第一块是基础,第二块是难点. 下面, ...

  5. JavaWeb黑马旅游网-学习笔记04【BaseServlet抽取】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  6. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  7. JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  8. CSS学习笔记-04 a标签-导航练习

    个人练习,各位大神勿笑  .. <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  9. ES6学习笔记04:Set与Map

    ES6学习笔记04:Set与Map JS原有两种数据结构:Array与Object,ES6新增两种数据结构:Set与Map 一.Set数据结构 Set类似于数组,但是成员值不允许重复,因此主要用于数据 ...

最新文章

  1. gentoo下gnome的抓图功能
  2. “数据挖掘世界杯”KDD Cup不取消!全球顶尖AI团队必争之地!
  3. Golang源码探索(三) GC的实现原理
  4. 为何Windows版QuickTime突然寿终正寝?
  5. 郎溪 溪流_到无限(溪流)和超越!
  6. nvidia命令不可用linux,linux – 如何从命令行获取nvidia驱动程序版本?
  7. MT4/MT5跟单系统方案概览
  8. 在几何画板中如何制作圆柱的侧面展开动画_怎样用ppt做圆柱的侧面展开动画
  9. Altium_Designer17-PCB-如何重新定义板子外形
  10. python添加图片要怎么弄_python怎么实现添加图片
  11. PT展揭晓“2021年中国5G实力榜”,亿美软通入围“5G消息企业十强”
  12. linux虚拟机a problem has occurred and the system can‘t recover解决方案
  13. 初学SDRAM笔记2--SDRAM的信号线及结构图
  14. 经济寒冬下更要学技术
  15. c#12星座速配代码_程序员12星座性格分析,猜猜哪个星座最适合IT行业?
  16. 图像处理方面的sci期刊_图像处理领域的SCI期刊.doc
  17. 《Educated》《你当像鸟飞往你的山》阅读笔记
  18. CUDA安装失败的解决方法(Win10)
  19. 分布式本地缓存刷新方案
  20. 企业管理的核心是什么?

热门文章

  1. win10 开机自动连接宽带最简单方法
  2. Intel TBB 开发指南 2 Parallelizing Simple Loops
  3. 消息队列,ftok,
  4. 图像的仿射变换原理及c++实现(旋转,平移,缩放,偏移,组合变换)
  5. 计算机专业申请phd美国,美国计算机专业PHD的申请经验总结
  6. C/C++ 导入表与IAT内存修正
  7. 如何共享打印机? 按照提示做就可以了~
  8. Python+Vue计算机毕业设计基于的营养配餐评价系统d6255(源码+程序+LW+部署)
  9. 万字长文干货,面试官角度看招聘
  10. 想要成为一名优秀的程序员,这十八招必看