DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

彭会锋

本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究

感觉TI的寄存器命名还是有一定规律可循的

SEL主要用于选择位  CTL主要用于控制位 EINT主要用于使能中断  FLG是标志查询位 CLR中断标志清除位  FRC 软件强制使能设置位

1 TZ 故障捕获子模块

TZ子模块可以工作在Cycle-by-Cycle、One-Shot两种模式下,这两种状态的区别是:

  • one-shot是永久起作用的,恢复它只有人工清除。
  • 而Cycle-by-Cycle却是本周期有用,下一周期自动恢复

外部触发选择寄存器TZSEL 寄存器设置选项如下:

TZCTL主要设置TZA 和TZB寄存器即可,主要定义当外部触发事件发生时,定义EPWMxA和EPWMxB所采取的动作:

TZEINT 中断使能寄存器  控制周期触发和单次触发的中断标志使能

TZFLG 是外部触发标志寄存器  TZCLR外部触发清零寄存器  这两个理解起来比较简单,所以不再做过多说明,就是中断的时候查询标志位,然后中断发生了就把标志位清零即可!

TZFRC 外部触发强制寄存器

TZ寄存器配置代码
    EALLOW;
EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_HI; // Forced Hi (EPWM1A = High state)
EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_HI; // Forced Hi (EPWM1B = High state)
EPwm1Regs.TZFRC.bit.OST = ; // Forces a fault on the OST latch and sets the OSTFLG bit.
EDIS;
 DB 死区产生
2.1 DB寄存器设置

2.2 死区产生子模块内部结构

结合上图可以看出,DBCLT[IN_MODEL]就是选择哪个作为输入信号源进行延时控制;通过延时模块之后,实现上升沿和下降沿的延时功能;

然后有一个反相器模块,可以产生互补的输出信号,是否反转可以通过寄存器DBCTL[POLSEL]进行设置,感觉这个寄存器就是设置信号是否反转的,如果是1就反转,如果0就不反转,就这样子!

DBCTL[OUT_MODE]主要作用是选择那个信号进行输出,如果选择0,那么之前的延时的信号就被旁路掉了,整个DB模块就不起作用了,选择1才会产生死区功能;

2.3 经典死区配置方案(感觉这里的后缀 C 就是互补的意思,没后缀则无互补,这个在2.4的波形图里面可以得到更好的体现)

2.4 加入死区延时的波形输出 (对比着2.2看2.3和2.4的图是最好明白寄存器配置的,也好理解输出波形是怎么样子的!)

2.5 寄存器配置代码
// DBCTL (Dead-Band Control)
//==========================
// OUT MODE bits
#define DB_DISABLE 0x0
#define DBB_ENABLE 0x1
#define DBA_ENABLE 0x2
#define DB_FULL_ENABLE 0x3
// POLSEL bits
#define DB_ACTV_HI 0x0
#define DB_ACTV_LOC 0x1
#define DB_ACTV_HIC 0x2
#define DB_ACTV_LO 0x3
// IN MODE
#define DBA_ALL 0x0
#define DBB_RED_DBA_FED 0x1
#define DBA_RED_DBB_FED 0x2
#define DBB_ALL 0x3

  // Active Low PWMs - Setup Deadband
  EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;  //这里基本上都是配置两个波形都是有延时才输出的,不会旁路掉延时波形
  EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LO; //低电平有效,这里会对电平进行一个反转
  EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; //选择 epwmxa作为信号源作为延时依据
  EPwm1Regs.DBRED = EPWM1_MIN_DB; //设置上升沿的延时
  EPwm1Regs.DBFED = EPWM1_MIN_DB; //设置下降沿的延时
  EPwm1_DB_Direction = DB_UP;

DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析的更多相关文章

  1. DSP EPWM学习笔记1 - EPWM定时中断

    DSP EPWM学习笔记1 - EPWM定时中断 彭会锋 EPWM模块组成 EPWM有7个子模块组成:时间基准 TB.比较功能 CC.动作限定 AQ.死区产生 DB.斩波控制 PC.故障捕获 TZ.事 ...

  2. DSP - Bootloader学习笔记2

    DSP - Bootloader学习笔记2 彭会锋 1 本文主要以F2812为例进行说明的: F28027内部资源 F28027内存映射  

  3. DSP bootloader学习笔记1

    DSP bootloader学习笔记1 彭会锋 参考: TMS320F28xx DSP中内部Flash的应用研究 http://wenku.baidu.com/view/83e9837931b765c ...

  4. golang学习笔记6 beego项目路由设置

    golang学习笔记5 beego项目路由设置 前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧: package main ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  6. 学习笔记之html5相关内容

    写一下昨天学习的html5的相关内容,首先谈下初次接触html5的感受.以前总是听说html5是如何的强大,如何的将要改变世界.总是充满了神秘感.首先来谈一下我接触的第一个属性是  input的里面的 ...

  7. rails学习笔记: rake db 相关命令

    rails学习笔记: rake db 命令行 rake db:*****script/generate model task name:string priority:integer script/g ...

  8. Noah的学习笔记之Python篇:命令行解析

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  9. python学习笔记——(一)基础设置

    python的学习,今天就开始上开发环境Pycharm,这样以后在调试,使用和学习起来就方便很多. 我用的是JetBrains PyCharm Community Edition 2018.1.1 x ...

随机推荐

  1. 在Linux命令行下令人惊叹的惊叹号(!)

    '!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能 ...

  2. BZOJ 3564 信号增幅仪

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3564 题意:给出平面上n个点,画出一个椭圆,椭圆的长轴是短轴的p倍,且长轴的方向为x轴逆时 ...

  3. SQL查看表锁定,死锁解锁

    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...

  4. awk 以HWI开头,并且:相邻两行的第一个字段完全相同;

    ## 思路:以HWI开头,并且:相邻两行的第一个字段完全相同:awk 'BEGIN{ last_col_1="xxxxxx"; last_row="bbbbbbbbbbb ...

  5. 如何在PADS的封装中做非金属化孔

    在设置封装的pads stacks的页面里,diameter,drill,plated三个项目(盘外径60mil,孔30mil) diameter:60,drill:30,plated:checked ...

  6. [转]Linux下的暴力密码破解工具Hydra详解

    摘自:http://linzhibin824.blog.163.com/blog/static/735577102013144223127/ 这款暴力密码破解工具相当强大,支持几乎所有协议的在线密码破 ...

  7. SQL Server 小技巧【2】

    --1.不要使用×来查询所有字段 SELECT * FROM DBO.tb1 --改为 SELECT FName,PWD,CreateDate FROM DBO.tb1 (NOLOCK) --2.查询 ...

  8. ServiceStack.OrmLite 笔记8 -还是有用的姿势

    复杂点的使用2 InsertAll, UpdateAll and DeleteAll 的参数要是IEnumerables Each关键字 返回 IEnumerable 并且是延迟加载的 全局设置 当字 ...

  9. FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)

    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术) Time Limit: 1000MS   Memory Limit: 257792K [Description ...

  10. 在SQL Server中 获取日期、日期格式转换

    --常用日期转换参数: PRINT CONVERT(varchar, getdate(), 120 ) 2016-07-20 16:09:01 PRINT replace(replace(replac ...