第 7 章: 事件管理器模块 (ev)

99
第7第 第第第第第第第 (EV) 7.1 第第第第第第第第第 7.2 第第第第第 7.3 第第第第 7.4 第第第第第第 7.5 第第第第

Upload: hunter

Post on 16-Jan-2016

127 views

Category:

Documents


0 download

DESCRIPTION

第 7 章: 事件管理器模块 (EV). 7.1 事件管理器模块概述 7.2 通用定时器 7.3 比较单元 7.4 脉宽调制电路 7.5 捕获单元. 7 .1 事件管理器概述. 最重要、最复杂 的模块,为 控制系统 (运动控制和电机控制) 的开发提供了强大功能 。 1 、事件管理器结构 LF240x 两个事件管理器模块: EVA 和 EVB 。 每个事件管理器模块包括: 两个 通用定时器 (GP) 、 三个 比较单元 、 三个 捕获单元 以及 两个 正交编码脉冲输入电路 ( QEP) 。 EVA 和 EVB 功能相同,只是名称不同。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章: 事件管理器模块 (EV)

第 7 章 事件管理器模块 (EV)

71 事件管理器模块概述

72 通用定时器

73 比较单元

74 脉宽调制电路

75 捕获单元

71 事件管理器概述

最重要最复杂的模块为控制系统(运动控制和电机控制)的开发提供了强大功能

1 事件管理器结构 LF240x 两个事件管理器模块 EVA和 EVB 每个事件管理器模块包括两个通用定时器 (GP) 三个

比较单元三个捕获单元以及两个正交编码脉冲输入电路( QEP)

EVA和 EVB 功能相同只是名称不同

71 事件管理器概述 1 事件管理器结构 通用定时器功能

具有计数定时功能可以为各种应用提供时基并可以产生比较输出 PWM

信号

比较单元功能

三个比较单元可以输出 3组 (6路 )比较输出 PWM信号且具有死区控制等功能

捕获单元功能

三个捕获单元可以记录输入引脚上信号跳变的时刻

QEP电路功能

具有直接连接光电编码器脉冲的能力可获得旋转机械的速度和方向等信息

事件管理器的特殊设计使得事件管理器既可以实时控制电机(由 PWM电路实现)同时还可以监视电机的运行状态(由 QEP电路实现)

注意输入跳变脉冲宽度至少保持两个 CPU时钟周期才能被识别

71 事件管理器概述

图 71 EVA结构框图

71 事件管理器概述 事件管理器 A和 B的引脚描述

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 2: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

最重要最复杂的模块为控制系统(运动控制和电机控制)的开发提供了强大功能

1 事件管理器结构 LF240x 两个事件管理器模块 EVA和 EVB 每个事件管理器模块包括两个通用定时器 (GP) 三个

比较单元三个捕获单元以及两个正交编码脉冲输入电路( QEP)

EVA和 EVB 功能相同只是名称不同

71 事件管理器概述 1 事件管理器结构 通用定时器功能

具有计数定时功能可以为各种应用提供时基并可以产生比较输出 PWM

信号

比较单元功能

三个比较单元可以输出 3组 (6路 )比较输出 PWM信号且具有死区控制等功能

捕获单元功能

三个捕获单元可以记录输入引脚上信号跳变的时刻

QEP电路功能

具有直接连接光电编码器脉冲的能力可获得旋转机械的速度和方向等信息

事件管理器的特殊设计使得事件管理器既可以实时控制电机(由 PWM电路实现)同时还可以监视电机的运行状态(由 QEP电路实现)

注意输入跳变脉冲宽度至少保持两个 CPU时钟周期才能被识别

71 事件管理器概述

图 71 EVA结构框图

71 事件管理器概述 事件管理器 A和 B的引脚描述

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 3: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 1 事件管理器结构 通用定时器功能

具有计数定时功能可以为各种应用提供时基并可以产生比较输出 PWM

信号

比较单元功能

三个比较单元可以输出 3组 (6路 )比较输出 PWM信号且具有死区控制等功能

捕获单元功能

三个捕获单元可以记录输入引脚上信号跳变的时刻

QEP电路功能

具有直接连接光电编码器脉冲的能力可获得旋转机械的速度和方向等信息

事件管理器的特殊设计使得事件管理器既可以实时控制电机(由 PWM电路实现)同时还可以监视电机的运行状态(由 QEP电路实现)

注意输入跳变脉冲宽度至少保持两个 CPU时钟周期才能被识别

71 事件管理器概述

图 71 EVA结构框图

71 事件管理器概述 事件管理器 A和 B的引脚描述

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 4: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

图 71 EVA结构框图

71 事件管理器概述 事件管理器 A和 B的引脚描述

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 5: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 事件管理器 A和 B的引脚描述

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 6: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 2 事件管理器寄存器及地址下面四个表列出 EVA 所有寄存器的地址 EVB 的类似

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 7: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 8: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 9: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 10: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 3 事件管理器中断 中断组事件管理器中断总共分三组( A B和 C )每组均分配

一个 CPU 中断 (INT2 3或 4) 具有各自不同的中断标志中断使能寄存器和外设中断请求如果EVAIMRx(x=A B和 C) 相应的位 =0 则 EVAIFRx

中的标志位被屏蔽 ( 不产生中断请求信号 ) 因为每组中断均有多个中断源所以 CPU 中断请求通过外

设中断扩展控制器 (PIE) 模块来处理外设中断寄存器(PIVR) 中的值可以区分改组哪一个挂起的中断具有最高优先级

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 11: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 中断请求有如下几个响应阶段① 中断源如果外设中断发生 EVxIFRA EVxIFRB 或

EVxIFRC(x=A或 B) 相应的标志位被置 1

② 中断使能事件管理器中断可以分别由寄存器EVxIMRA EVxIMRB或 EVxIMRC(x=A或 B) 来使能或禁止

③ PIE 请求如果中断标志位和中断屏蔽位被置 1 那么外设会向PIE 模块发送一个外设中断请求

④ CPU 响应 CPU 接收到中断后 IFR 相应的位被置 1 并响应中断 CPU 响应中断后中断响应被软件控制

⑤ PIE 响应 PIE 使用中断向量更新 PIVR 寄存器

⑥ 中断软件中断软件有两级响应包括 GISR和 SISR

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 12: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 功率驱动保护中断PDPINTx 可以用于向电动机的监视程序提供过电压过电

流和异常的温升等异常信息为功率变换和电动机驱动等系统操作提供安全保证

如果 PDPINTx 中断被允许则 PDPINTx 引脚电平变低后则驱动所有 PWM 输出引脚为高阻态同时产生一个中断请求复位时 PDPINTx 中断被使能

如果 PDPINTx 中断被禁止则驱动 PWM 输出到高阻态的动作也被禁止

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 13: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述 中断标志寄存器EV 中断标志寄存器 (EVxIFRx) 是可读寄存器当中断被屏蔽时可通过软件查询 EVxIFRx 中相应的位来监测中断事件的发生

( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 15-11 保留 位 10 T1OFINT FLAG 通用定时器 1 上溢中断标志位

读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 9 T1UFINT FLAG 通用定时器 1 下溢中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 8 T1CFINT FLAG 通用定时器 1 比较中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

位 7 T1PINT FLAG 通用定时器 1 周期中断标志位 读 0-标志被复位 1-标志被置位写 0-无效 1-复位标志位

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 14: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 1) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Fh

位 6-4 保留 位 3 CMP3INT 比较单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 CMP2INT 比较单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CMP1INT 比较单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 PDPINTA 功率驱动保护中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 15: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 2) EVA 中断标志寄存器 B(EVAIFRB) 映射地址 7430h

位 15-4 保留 位 3 T2OFINT FLAG 通用定时器 2 上溢中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 2 T2UFINT FLAG 通用定时器 2 下溢中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 T2CFINT FLAG 通用定时器 2 比较中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 T2PINT FLAG 通用定时器 2 周期中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 16: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述

( 3) EVA 中断标志寄存器 C(EVAIFRC) 映射地址 7431h

位 15-3 保留 位 2 CAP3OFINT FLAG 捕获单元 3 中断标志位

读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 1 CAP2OFINT FLAG 捕获单元 2 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

位 0 CAP1OFINT FLAG 捕获单元 1 中断标志位 读 0-标志被复位 1-标志被置位 写 0-无效 1-复位标志位

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 17: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 4) EVA 中断屏蔽寄存器 A(EVAIFRA) 映射地址 742Ch

位 15-11 保留 位 10 T1OFINT ENABLE 通用定时器 1 上溢中断使能位

0 -禁止 1-使能

位 9 T1UFINT ENABLE 通用定时器 1 下溢中断使能位 0-禁止 1-使能

位 8 T1CFINT ENABLE 通用定时器 1 比较中断使能位 0-禁止 1-使能

位 7 T1PINT ENABLE 通用定时器 1 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 18: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 4) EVA 中断标志寄存器 A(EVAIFRA) 映射地址 742Ch

位 6-4 保留 位 3 CMP3INT ENABLE 比较单元 3 中断使能位

0-禁止 1-使能

位 2 CMP2INT ENABLE 比较单元 2 中断使能位 0-禁止 1-使能

位 1 CMP1INT ENABLE 比较单元 1 中断使能位 0-禁止 1-使能

位 0 PDPINTA ENABLE 功率驱动保护中断使能位 0-禁止 1-使能

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 19: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 5) EVA 中断屏蔽寄存器 B(EVAIFRB) 映射地址 742Dh

位 15-4 保留 位 3 T2OFINT ENABLE 通用定时器 2 上溢中断使能位

0 -禁止 1-使能

位 2 T2UFINT ENABLE 通用定时器 2 下溢中断使能位 0-禁止 1-使能

位 1 T2CFINT ENABLE 通用定时器 2 比较中断使能位 0-禁止 1-使能

位 0 T2PINT ENABLE 通用定时器 2 周期中断使能位 0-禁止 1-使能

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 20: 第 7 章: 事件管理器模块 (EV)

71 事件管理器概述( 6) EVA 中断屏蔽寄存器 C(EVAIFRC) 映射地址 742Eh

位 15-3 保留

位 2 CAP3INT ENABLE 捕获单元 3 中断使能位 0-禁止 1-使能

位 1 CAP2INT ENABLE 捕获单元 2 中断使能位 0-禁止 1-使能

位 0 CAP1INT ENABLE 捕获单元 1 中断使能位 0-禁止 1-使能

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 21: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 1 通用定时器概述

每个事件管理模块有两个通用定时器 (GP) 这些定时器可以为下列应用提供独立的时间基准① 控制系统中采样周期产生

② 为 QEP 电路和捕获单元的操作提供时间基准

③ 为比较单元和相应的 PWM 电路操作提供时间基准

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 22: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 1 通用定时器概述定时器结构如图 7-3 所示由图可知每个定时器包括

① 一个可读写的 16 位双向计数器的寄存器 TxCNT 它存储了计数器的当前值并根据计数方向进行增计数或减计数

② 一个可读写的 16 位定时器比较寄存器 TxCMPR

③ 一个可读写的 16 位定时器周期寄存器 TxPR

④ 一个可读写的 16 位定时器控制寄存器 TxCON

⑤ 时钟预定标器

⑥ 控制和中断逻辑

⑦ 一个 GP 定时器比较输出引脚 TxCMP

⑧ 输出条件逻辑

⑨ 其他全局控制寄存器

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 23: 第 7 章: 事件管理器模块 (EV)

72 通用定时器

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 24: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 2 通用定时器功能模块

各 GP 定时器之间可独立工作或同步工作 GP 定时器的比较寄存器可用作比较功能或 PWM波形发生 3种连续 GP 定时器增 减计数方式 GP 定时器的输入时钟可进行可编程预定标 GP 定时器向 EV 的子模块提供时基 周期和比较寄存器的双缓冲允许编程改变 PWM 的周期和脉冲宽

度 控制寄存器规定了 GP 定时器针对不同定时器事件所采取的操作

并指明 4个 GP 定时器的计数方向

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 25: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的输入

1048698 内部 CPU 时钟 1048698 外部时钟 TCLKINAB 最高频率是 CPU 时钟频率的 1 4

1048698 方向输入 TDIRAB 控制通用定时器增减计数 1048698 复位信号 RESET

通用定时器的输出 1048698 通用定时器比较输出 TxCMP(x= 1 2 3 4 ) 1048698 到 ADC 模块的 ADC转换启动信号 1048698 自身的比较逻辑和比较单元的下溢上溢比较匹配和周期匹配信号

1048698 计数方向指示位

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 26: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 单个通用定时器控制寄存器 (TxCON)

决定定时器的操作模式每个定时器都可独立配置具有如下意义 GP 定时器处于 4种计数模式中的哪一种 GP 定时器使用外部还是内部 CPU 时钟 输入时钟使用 8种预定标因子中哪一种 什么条件下重新装载定时器的比较寄存器 GP 定时器是否能使 GP 定时器的比较操作是否能使 GP 定时器 2 使用自己的还是 GP 定时器 1 的周期寄存器 (EVA) GP 定时器 4 使用自己的还是 GP 定时器 3 的周期寄存器 (EVB)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 27: 第 7 章: 事件管理器模块 (EV)

72 通用定时器TxCON(x= 1 2 3或 4) 的映射地址为

7404h(T1CON) 7408h(T2CON) 7504h(T3CON)和

7508h(T4CON)

位 15-14 Free Soft 仿真控制位 00 仿真挂起时立即停止 01 仿真挂起时当前定时周期结束后停止 1x 操作不受仿真挂起的影响

位 13 保留

位 12-11 TMODE1TMODE0 4种计数模式选择 00 停止 保持 01 连续增减计数模式 10 连续增计数模式 11 定向的增减计数模式

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 28: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 位 10-8 TPS2TPS0输入时钟定标器

000mdashx 1 100mdashx 16

001mdashx 2 101mdashx 32

010mdashx 4 110mdashx 64

011mdashx 8 111mdashx 128

x=输入时钟频率

位 7 T2SWT1T4SWT3 定时器 2 4 周期寄存器选择位 0定时器 2 4使用自身的周期寄存器 1不用自身的周期寄存器使用 T1CON(EVA)或 T3CON(EVB) 的定

时器使能位来使能或禁止操作

位 6 TENABLE 定时器使能与禁止 0禁止定时器操作使定时器保持并且使预定标计数器复位

1允许定时器操作

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 29: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 位 5-4 TCLKS1TCLKS0时钟源选择

00内部时钟 01外部时钟 10保留

11正交编码脉冲电路只适用于 T2CON和 T4CON

位 3-2 TCLD1TCLD0定时器比较寄存器重载条件 00计数器的值为 0时重载

01计数器的值为 0或等于周期寄存器的值时重载

10立即 11保留

位 1 TECMPR定时器比较使能与禁止 0禁止定时器比较操作 1使能定时器比较操作

位 0 SELT1PR周期寄存器选择 0使用自己的周期寄存器

1使用 T1PR(EVA)或 T3PR(EVB)作周期寄存器而忽略自己的周期寄存器

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 30: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 全局通用定时器控制寄存器 (GPTCONAB)

规定了通用定时器针对不同定时器事件所采取的动作并指明了它们的计数方向映射地址为 7400h和 7500h

位 15 保留位 位 14 T2STAT 通用定时器 2 的状态只读

0 递减计数 1 递增计数

位 13 T1STAT 通用定时器 1 的状态只读 0 递减计数 1 递增计数

位 12-11 保留位 位 10-9 T2TOADC 使用通用定时器 2启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 31: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 位 8-7 T1TOADC 使用通用定时器 1启动 ADC 事件

00 无事件启动 ADC( 模数转换 )

01 设置下溢中断标志来启动 ADC( 模数转换 )

10 设置周期中断标志来启动 ADC( 模数转换 )

11 设置比较中断标志来启动 ADC( 模数转换 )

位 6 TCOMPOE 比较输出使能如果 PDPINTx 有效则该位设置为 0

0 禁止所有通用定时器比较输出 ( 所有比较输出都置于高阻态) 1 使能所有通用定时器比较输出

位 5-4 保留位 位 3-2 T2PIN 通用定时器 2 比较输出极性

00 强制低 01 低有效 10 高有效 11 强制高

位 1-0 T1PIN 通用定时器 1 比较输出极性 00 强制低 01 低有效 10 高有效 11 强制高

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 32: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的比较寄存器与通用定时器相关的比较寄存器存储着持续与通用定时器的

计数器进行比较的值匹配时将产生如下事件 根据 GPTCONAB 位的设置不同相关的比较输出发生跳变或启动 ADC

相应的中断标志将被置位 如中断未被屏蔽将产生中断请求

通过设置 TxCON 的相关位可使能或禁止比较操作比较操作和输出适合任何一种定时模式

比较寄存器的地址为7402h(T1CMPR) 7406h(T2CMPR) 7502h(T3CMPR

)和 7506h(T4CMPR)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 33: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的周期寄存器决定了定时器的周期当周期寄存器的值和定时器计数器的

值匹配时 GP 定时器的操作就停止并保持当前值并根据计数器所采用的计数方式执行复位或开始递减计数

周期寄存器的地址为7403h(T1PR) 7407h(T2PR) 7503h(T3PR)和

7507h(T4PR)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 34: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的比较和周期寄存器的双缓冲通用定时器的比较寄存器和周期寄存器是双缓冲的允许在

一个周期中的任何时刻去更新周期寄存器和比较寄存器以便改变下一个周期的定时器周期和 PWM 的脉冲宽度比较寄存器的加载情况可能是下列情况之一 在写信息到影子寄存器后立即加载 下溢时即通用定时器计数值为 0 时 下溢或周期匹配时即当计数器值为 0 或计数器值等于周期寄存

器的值时

注意 (1)初始化周期寄存器 (2) 当相应的比较操作被禁止时新装入值直接进入工作的比较寄存器

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 35: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的比较输出

通用定时器的比较输出可规定为高有效低有效强制高或强制低取决于 GPTCONAB 中的位如何配置

通用定时器计数方向

由寄存器 GPTCONAB 相应的位来反映即位 TxSTAT 1 增计数方向 0 减计数方向

当 GP 定时器处于定向增 减计数模式时输入引脚TDIRAB决定了计数的方向当 TDIRAB 为高电平时规定为增计数否则为减计数

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 36: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 通用定时器的同步

通过正确配置 T2CON和 T4CON 寄存器通用定时器 2 可与通用定时器 1实现同步 (EVA) 通用定时器 4 可与通用定时器 3实现同步 (EVB) 实现步骤如下 (EVA 为例 )

置 T1CON 寄存器中 TEMABLE 位为 1 且置 T2CON 寄存器中

T2SWT1 位为 1 同时启动两个定时器的计数器 在启动同步操作前将通用定时器 1和 2 的定时计数器初始化成

不同的值 置 T2CON 寄存器中 SELT1PR 位为 1 使通用定时器 2将通用

定时器 1 的周期寄存器作为自己的周期寄存器使用

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 37: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 3 通用定时器的计数操作每个 GP 定时器有四种可选的操作模式

① 停止 保持模式

② 连续递增计数模式

③ 定向增 减计数模式

④ 连续增 减计数模式

相应的定时器控制寄存器 TxCON 中的位的形式决定了通用定时器的操作模式

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 38: 第 7 章: 事件管理器模块 (EV)

72 通用定时器① 停止 保持模式通用定时器停止操作并保持其当前状态定时器的计数器比较输出和

预定标计数器都保持不变

② 连续递增计数模式 通用定时器将按照已定标的输入时钟计数直到定时器计数器的值

和周期寄存器的值匹配为止产生周期匹配之后在下一个输入时钟的上升沿定时器复位为 0 开始另一个计数周期

在产生周期匹配的两个 CPU 时钟周期后周期中断被置位产生一个中断请求也可作 ADC转换启动信号定时器变成 0 的两个时钟周期之后定时器的下溢中断标志被置位也可发出一个 ADC启动信号

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 39: 第 7 章: 事件管理器模块 (EV)

72 通用定时器②连续递增计数模式 定时器计数到 FFFFh 后定时器的上溢中断标志在两个

CPU 时钟周期之后被置位 定时器初值可以是 0000h- FFFFh 之间的任何值 如果初值大于周期寄存器的值时定时器将计数到

FFFFh 后复位为 0 然后从 0 开始继续计数 如果初值等于周期寄存器的值时周期中断标志被置位

定时器复位为 0 下溢中断标志被置位然后从 0 开始继续计数

本模式特别适于边沿触发或非对称 PWM波形产生也适于电机和运动系统的采样周期

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 40: 第 7 章: 事件管理器模块 (EV)

72 通用定时器

例 711给出了通用定时器 1在连续增计数模式下的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0174EH T1CON TMODE=10 连续增计数模式 TPS=111 预分频为

128 TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 41: 第 7 章: 事件管理器模块 (EV)

72 通用定时器③ 定向增 减计数模式

定时器根据 TDIRA B 引脚的输入对定标的时钟进行递增或递减计数

周期下溢上溢中断标志位中断以及相应的动作与连续递增计数模式一样

定时器 2和 4 的本模式可用于正交编码脉冲电路在这种情况下正交编码脉冲电路为定时器 2和 4 提供计数时钟和方向也可用于运动 电机控制和电力电子设备应用中的外部事件定时

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 42: 第 7 章: 事件管理器模块 (EV)

72 通用定时器

例 72 定向增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41H GPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CM 设置比较寄存器SPLK 0H T1CN 设置计数寄存器SPLK 01F4EH T1CONTMODE=11 定向增 减计数模式 TPS=111 预分频为 12

TENABLE=1 定时器计数使能 TCLKS=0 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 43: 第 7 章: 事件管理器模块 (EV)

72 通用定时器④ 连续增 减计数模式

此种模式与定向的增 减计数模式一样但是在本模式下引脚 TDIRAB 的状态对计数的方向没有影响

定时器的计数方向仅在定时器的值达到周期寄存器的值时 (

或 FFFFh 如果初始定时器的值大于周期寄存器的值 )

才从递增计数变为减计数定时器的计数方向仅当计数器的值为 0 时才从减计数变为增计数

本模式特别适于对称 PWM波形产生该波形广泛应用于电机 运动控制和电力电子设备中

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 44: 第 7 章: 事件管理器模块 (EV)

72 通用定时器

例 73连续增 减计数模式的初始化例程LDP DP_EVA 指向 7400h~ 7480h 单元SPLK 41HGPTCONA TCOMPOE=1 允许定时器比较输出SPLK 5H T1PR 设置周期寄存器SPLK 3H T1CMPR 设置比较寄存器SPLK 0H T1CNT 设置计数寄存器SPLK 0F4EH T1CON TMODE=01 连续增 减计数模式 TPS=111 预分频为 128

TENABLE=1 定时器计数使能 TCLKS=00 内部时钟TECMPR=1 定时器 1 比较使能 SELT1PR=0

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 45: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 4 通用定时器比较操作

GP 定时器的值连续地与相应的比较寄存器的值比较当两个值相等时就会发生比较匹配

可通过对 TxCON1置 1 来使能比较操作

比较操作使能后当发生比较匹配时会发生以下情况 比较中断标志置 1 相应的 PWM 输出将发生跳变 如用于启动 ADC 则产生一个 ADC启动信号

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 46: 第 7 章: 事件管理器模块 (EV)

72 通用定时器1 PWM输出转换

PWM输出的转换由一个非对称和对称的波形发生器和相应的

输出逻辑控制并且依赖于以下条件

1048698GPTCONAB寄存器中相应位的定义

1048698定时器所处的计数模式

1048698在连续增减计数模式下的计数方向

2非对称和对称波形发生器

依据通用定时器所处计数模式产生一个非对称和对称的

PWM波形输出

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 47: 第 7 章: 事件管理器模块 (EV)

72 通用定时器3非对称波形的发生在连续增计数模式时通用定时器会产生一个非对称波形的 PWM脉冲

如图 77所示决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到比较匹配发生 比较匹配时产生触发 如果下一周期新的比较值不为 0 则发生周期匹配的周期结束后复位为 0

非对称 PWM波形的特点比较寄存器值的改变只影响 PWM 脉冲的单边

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 48: 第 7 章: 事件管理器模块 (EV)

72 通用定时器4对称波形的发生

在连续增 减计数模式时通用定时器会产生对称波形如图 78所示 决定波形发生器输出状态的情况 计数操作开始前为 0 保持不变直到第一次比较匹配 第一次比较匹配时产生触发 保持不变直到第二次比较匹配 第二次比较匹配时产生触发 保持不变直到周期结束 如果没有第二次匹配且下一周期的新比较值不为 0 则在周期结束后复位为 0

注意输出逻辑决定了所有输出引脚的有效状态

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 49: 第 7 章: 事件管理器模块 (EV)

72 通用定时器5 输出逻辑进一步调节波形发生器的输出以生成最终的 PWM波形输出来控制各种不同类型的功率设备

可通过配置 GPTCONAB 寄存器的相应位来设置高有效低有效强制高或强制低的 PWM 输出

当 PWM 输出设置为高有效时它的极性与波形发生器的输出极性相同当 PWM 输出设置为低有效时极性相反GPTCONAB 寄存器的相应位设定后 PWM 输出也可被强制为高电平

或低电平出现下列任何一种情况时所有的通用定时器 PWM 输出都置为高阻态

软件将 GPTCONAB6 置成 0 PDPINx 引脚上的电平被拉低并未被屏蔽 任何一个复位事件发生 软件将 TxCON1 置为 1

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 50: 第 7 章: 事件管理器模块 (EV)

72 通用定时器6 有效 无效时间计算 连续增计数模式

无效相位长度比较寄存器中的值从计数周期开始到发生第一次比较匹配之间经过的时间

有效相位长度输出脉冲宽度等于 (TxPR-TxCMPR+1) 个定标的输入时钟周期

当 TxCMPR=0 时通用定时器的比较输出在整个周期中有效 当 TxCMPRgtTxPR 时有效相位长度 =0

连续增 减计数模式 有效相位长度输出脉冲宽度等于 (TxPR-TxCMPRup+TxPR-TxCMPRdn)

个定标的输入时钟周期 如果 TxCMPRup=0 比较输出在周期开始时有效如果 TxCMPRdn=0

输出将保持有效到周期结束 当 TxCMPRupgt=TxPR 第一次跳变不发生当 TxCMPRdngt=TxPR 第二次跳变也不发生同时满足两个条件时比较输出在整个周期中都无效

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 51: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 5 通用定时器的 PWM 输出

为了设置通用定时器以产生 PWM 输出需做以下工作 根据预定的 PWM(载波 ) 周期设置 TxPR 设置 TxCON 寄存器以确定计数模式和时钟源并启动

PWM 输出操作 将对应于 PWM 脉冲的在线计算宽度 (占空比 ) 的值加载到 TxCMPR 寄存器中

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 52: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 6 通用定时器的复位

当任何复位事件发生时将发生以下情况 GPTCONA B 寄存器中除计数方向指示位外所有与

通用定时器相关的位都被复位为 0 因此所有通用定时器的操作都被禁止计数方向指示位都置成 1

所有的定时器中断标志位均被复位为 0 所有的定时器中断屏蔽位都被复位为 0 因此所有通用定时器的中断都被屏蔽

所有通用定时器的比较输出都被置为高阻态

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 53: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 7 通用定时器的中断实现

用通用定时器 1 产生 1ms 的定时中断服务程序外部输入时钟为 6MHz DSP内部锁相环 4倍频为 24MHz 通用定时器 1 预分频因子为 64 所以计算出延时 1ms 周期寄存器的值为 0177h INT2 的中断向量为 0004h T1PINT

的外设中断向量为 0027h

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 54: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 (1) 建立中断向量表

sect vectors 定义主向量段RSVECT B _c_int0 PM 0 复位向量 1

INT1 B PHANTOM PM 2 中断优先级 1 4

INT2 B GISR2 PM 4 中断优先级 2 5

INT3 B PHANTOM PM 6 中断优先级 3 6

INT4 B PHANTOM PM 8 中断优先级 4 7

INT5 B PHANTOM PM A 中断优先级 5 8

INT6 B PHANTOM PM C 中断优先级 6 9

RESERVED B PHANTOM PM E 模拟量输入中断 ( 保留 ) 10

SW_INT8 B PHANTOM PM 10 用户定义软件中断 mdash

hellip

SW_INT31 B PHANTOM PM 3E 用户定义软件中断 mdash

中断子向量入口定义 pvecs

sect pvecs 定义子向量段PVECTORS B PHANTOM 保留向量地址偏移量 -0000h

B PHANTOM 保留向量地址偏移量 -0001h

hellip

B PHANTOM 保留向量地址偏移量 -0026h

B T1PINT_ISR 保留向量地址偏移量 -0027h T1PINT 中断B PHANTOM 保留向量地址偏移量 -0028h

hellip

B PHANTOM 保留向量地址偏移量 -0041h

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 55: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 (2)主程序 text

_c_int0

SETC INTM

CLRC SXM

CLRC OVM

CLRC CNF B0 区被配置为数据空间 LDP 0E0H 指向 7000h~ 7080h 区 SPLK 81FEH SCSR1 时钟 4倍频 CLKIN=6 M CLKOUT=24 M

SPLK 0E8HWDCR 不使能 WDT

LDP 0

SPLK 02H IMR 使能中断优先级 INT2

SPLK 0FFFFh IFR 清中断标志LDP DP_EVA 指向 7400h~ 7480h 区SPLK 80H EVAIMRA 使能 T1PINT 中断SPLK 0FFFFh EVAIFRA 清 EVA 中断标志SPLK 0 GPTCONA

SPLK 177H T1PR 使定时器每 1ms 产生一次中断SPLK 0 T1CNT

SPLK 0164CH T1CON TMODE=10 连续增计数模式 TPS=110 预分频为 64 TENABLE=1 定时器计数使能 TCLKS=00 内部时

钟 TECMPR=1 定时器 1 比较使能 SELT1PR=0

CLRC INTM 开总中断 WAIT NOP

B WAIT

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 56: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 (3) 中断程序GISR2 优先级 INT2 中断入口

保护现场LDP 0E0H

LACC PIVR 1 读取外设中断向量寄存器( PIVR )并左移一位ADD PVECTORS 加上外设中断入口地址BACC 跳到相应的中断服务子程序

T1PINT_ISR 通用定时器 1 中断入口LDP DP_EVA

SPLK 0 T1CNT

GISR2_RET 中断返回恢复现场CLRC INTM 开总中断因为一进中断就自动关闭总中断RET

(4)假中断程序PHANTOM

KICK_DOG 复位看门狗RET

END

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 57: 第 7 章: 事件管理器模块 (EV)

72 通用定时器 中断服务程序实现

当定时器 1的 T1CNT 计数到 177H即 1ms 时就向 CPU申请中断如期间无其他中断产生或申请则 CPU 接受中断申请

先向主向量段查到优先级 INT2 的中断向量入口 (GISR2) 在GISR2 中读取外设中断向量寄存器 (PIVR) 中的中断地址偏移量为0027h 加上子向量起始地址通过查中断子向量段表跳入通用定时器 1 中断人口 (T1PINT_ISR)

假中断的作用 假中断向量是保证系统完整性的一个特性 当一个中断已被响应但却无外设将中断向量地址偏移量装入外

设中断向量寄存器 (PIVR) 时假向量 0000h 被装入 PIVR 从而保证系统按照可控的方式进行处理

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 58: 第 7 章: 事件管理器模块 (EV)

73 比较单元( 1 )比较单元概述 事件管理器 EVA 模块和 EVB 模块中分别有 3 个全比较单元每个

比较单元都有两个 PWM 输出 比较单元的时基由通用定时器 1(EVA 模块 ) 和通用定时器 3(EVB 模块 ) 提供

比较单元的功能结构图如下图所示

比较单元能结构图

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 59: 第 7 章: 事件管理器模块 (EV)

73 比较单元 每个比较单元包括

3 个 16 位的比较寄存器 ( 对于 EVA 模块为 CMPRl CMPR2和CMPR3 对于 EVB 模块为 CMPR4 CMPR5和 CMPR6) 它们各带一个相应的映像寄存器 ( 可读 写 )

一个 16 位的比较控制寄存器 ( 对于 EVA 模块为 COMCONA EVB模块为 COMCONB) 该寄存器为可读写的

一个 16 位的动作控制寄存器 ( 对于 EVA 模块为 ACTRA 对于 EVB模块为 ACTRB) 它们各带一个相应的映像寄存器 ( 可读 写 )

10486986 个 PWM( 三态 ) 输出 ( 比较输出 ) 引脚 1048698控制和中断逻辑

全比较单元与通用定时器中简单比较单元的区别 每个全比较单元输出一对 PWM 信号并具有死区控制和空间向量

PWM 模式输出的功能 而定时器中的每个比较单元只能输出一路 PWM 信号且不具备死区

控制和空间向量 PWM 模式输出的功能

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 60: 第 7 章: 事件管理器模块 (EV)

73 比较单元( 2 )比较输入 输出 比较单元的输入

控制寄存器的控制信号 通用定时器 1和 3(T1CNT T3CNT) 及它们的下溢和周期匹配信号 复位信号

比较单元的输出 比较匹配信号如果比较使能该匹配信号将中断标志置位并使比

较单元相关的两个输出引脚发生跳变

( 3 )比较操作模式 由比较控制寄存器 (COMCONx)决定

比较操作是否被使能 比较输出是否被使能 比较寄存器用影子寄存器的值进行更新的条件 空间矢量 PWM 输出模式是否被使能

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 61: 第 7 章: 事件管理器模块 (EV)

73 比较单元( 4 )比较单元操作寄存器配置

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 62: 第 7 章: 事件管理器模块 (EV)

73 比较单元( 5 )比较单元的中断和复位 对于每个比较单元都有一个可屏蔽的中断标志使能位

如果比较操作被使能比较匹配后的 1个 CPU 时钟周期比较单元的中断标志将被置位

如果中断没有被屏蔽则会产生一个外设中断请求

当任何复位事件发生时所有与比较单元相关的寄存器都复位为 0 且所有比较输出引脚被置为高阻态

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 63: 第 7 章: 事件管理器模块 (EV)

73 比较单元( 6 )比较单元寄存器 比较控制寄存器 (COMCONA和 COMCONB)

比较单元的操作由比较控制寄存器 (COMCONA和 COMCONB) 控制均是可读写比较控制寄存器 COMCONA 的映射地址为 7411h

各位描述如下 位 15 比较使能位

bull 0 禁止比较操作所有映像寄存器 (CMPRx和 ACTRA) 为透明

bull 1 使能比较操作 位 14-13 比较寄存器 CMPRx 重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留结果不可预测

位 12 空间向量 PWM 模式使能bull 0 禁止空间向量 PWM 模式bull 1 使能空间向量 PWM 模式

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 64: 第 7 章: 事件管理器模块 (EV)

73 比较单元 位 11-10 动作控制寄存器重载条件

bull 00 当 T1CNT 下溢时重载bull 01 当 T1CNT 下溢或当 T1CNT 周期匹配重载bull 10 立即重载bull 11 保留

位 9 比较输出使能位有效的 PDPINTA 会使该位清 0

bull 0 PWM 输出引脚为高阻态即比较输出被禁止bull 1 PWM 输出引脚处于非高阻态即比较输出被使能

位 8 PDPINTA 的状态位该位反映 PDPINTA 引脚的当前状态

位 7-0 保留位

比较控制寄存器 COMCONB 映射地址为 7511h 各位定义与OMCONA 类似

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 65: 第 7 章: 事件管理器模块 (EV)

73 比较单元 比较动作控制寄存器( ACTRA 和 ACTRB )ACTRA 和 ACTRB 控制 6 个比较输出引脚的动作 ACTR

A 的映射地址为 7413h 各位描述如下 位 15 SVRDIR 空间向量 PWM旋转方向位仅用于产生空

间向量 PWM 输出bull 0 正向 (CCW)bull 1 负向 (CW)

位 14-12 D2-D0 基本的空间向量位仅用于产生空间向量 P

WM 输出 位 11-10 CMP6ACT1-0 比较输出引脚 PWM6 上的比较输出

方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 66: 第 7 章: 事件管理器模块 (EV)

73 比较单元 位 9-8 CMP5ACT1-0 比较输出引脚 PWM5 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 7-6 CMP4ACT1-0 比较输出引脚 PWM4 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 5-4 CMP3ACT1-0 比较输出引脚 PWM3 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 67: 第 7 章: 事件管理器模块 (EV)

73 比较单元 位 3-2 CMP2ACT1-0 比较输出引脚 PWM2 上的比较

输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

位 1-0 CMP1ACT1-0 比较输出引脚 PWM1 上的比较输出方式选择bull 00 强制低 01 低有效bull 10 高有效 11 强制高

比较动作控制寄存器 ACTRB 映射地址为 7513h 各位描述与 ACTRA 类似

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 68: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM 1 PWM 信号

PWM 信号(脉宽调制信号)是脉冲宽度根据某一寄存器内的值的变化而变化的脉冲序列宽度是根据预定值来决定和调制的

在电机控制中 PWM 用来控制开关电源器件的开关时间为电机绕组提供所需的能量控制电机所需转速和转矩

( 1) PWM 信号产生 用一定时器重复产生与 PWM 周期相同的计数周期一个比较寄存器

保持着调制值在相应的输出上会产生一个转换输出脉冲的开关时间会与比较寄存器的值成比例

( 2 )死区 在许多的运动 电机控制和功率电子应用场合中两个功率器件(上级

和下级)被串联在一个功率支路中为避免击穿失效在一个三极管的关断和另一个三极管导通之间经常要插入一个死区这段时间延迟允许一个三极管在别的三极管导通之前完全关断

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 69: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM

2用事件管理器产生 PWM输出

三个比较单元中的每一个都可与事件管理器的 GP定时器

一起用于产生一对可编程死区和输出极性的 PWM输

对于每个 EV模块中的三个比较单元共有6个 PWM输出引脚来控

制三相交流感应电机或无刷直流电机

由比较动作控制寄存器提供的输出动作控制的灵活性使

得开关和同步磁阻电机的控制变得非常简单容易

PWM电路可在单任务或多任务场合控制直流有刷电机和步

进电机等

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 70: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM

PWM产生的寄存器设置

用比较单元和相应的电路产生所有三种 PWM波形均需要

对相同的 EV寄存器进行配置

配置过程需要以下步骤

① 设置和装载 ACTRx寄存器

② 如需死区则设置和装载 DBTCONx寄存器

③ 初始化 CMPRx寄存器

④ 设置和装载 COMCONx寄存器

⑤ 设置和装载 T1CON或 T3CON寄存器来启动比较操作

⑥ 更新 CMPRx寄存器的值

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 71: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM

3与比较单元相应的 PWM电路概述EVA模块的 PWM电路功能结构图如图 710所示

它包括以下功能单元① 非对称 对称波形发生器

② 可编程的死区单元( DBU)

③ 输出逻辑

④ 空间向量( SV) PWM状态机

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 72: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM 4 可编程的死区单元和输出控制( 1) 死区单元及其控制死区波形如图 711 所示对于一个输入信号 PHx 会产生两个输出

信号 DTPHx和 DTPHx- 死区单元用于保证在任何情况下每个比较单元相关的 2路 PWM

输出控制一对正向导通和负向导通设备时没有重叠即当一个器件没有完全关断时另一个器件不导通以避免功率器件击穿失效

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 73: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM 死区定时器控制寄存器( DBTCONA和DBTCONB )

死区单元的操作是由 DBTCONA (或 DBTCONB )来控制的 DBTCONA 映射地址为 7415h 各位描述如下 位 15-12 保留 位 11-8 DBT3一 DBT0 规定了 3个 4 位死区定时器的周期值 位 7 EDBT3 死区定时器 3 使能位(对应 PWM5和 PWM6 )

bull 0 禁止 1 使能 位 6 EDBT2 死区定时器 2 使能位(对应 PWM3和 PWM4 )

bull 0 禁止 1 使能 位 5 EDBT1 死区定时器 1 使能位(对应 PWM1和 PWM2 )

bull 0 禁止 1 使能

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 74: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM 位 4-2 DBTPS2-DBTPS0 死区定时器的预定标器

bull 000 x1 001 x2 bull 010 x4 011 x8 bull 100 x16 101 x32 bull 110 x32 111 x32 bull x CPU 时钟频率

位 1-0 保留

DBTCONB 映射地址为 7515h 各位的意义和 DBTCONA

的相应位意义一致

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 75: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 2 )输出逻辑输出逻辑电路决定了当发生比较匹配时 PWMx( x= 1~ 12 )输

出引脚上的极性和动作可设定为低有效高有效强制低和强制高比较单元的 PWM 输出极性和方式通过 ACTR心寄存器中相应的位来配置图 712为 PWM 输出逻辑结构框图图中(x=1 2或 3 EVA 模块 y=1~ 6 EVB 模块 y=7~ 12)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 76: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM

5 非对称和对称的 PWM产生

EV模块中的每个比较单元均可产生非对称和对称的

PWM波形另外这三个比较单元一起可产生三相对

称空间向量 PWM输出用 GP定时器产生 PWM输

出已介绍下面仅介绍用比较单元产生 PWM

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 77: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 1 )非对称 PWM波形产生

用一个比较单元产生一个非对称的 PWM波形见图713 GP 定时器 1必须设置为连续递增计数模式其周期寄存器必须载入一个与所需的 PWM载波周期相对应的值

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 78: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 2 )对称的 PWM波形产生

对称的 PWM波形是其调制脉冲在每个 PWM 周期是对称的如图714 所示

对称的与非对称 PWM波形相比优点在于它有两个相同长度的无效区在每个 PWM 周期的开始和结束这种对称性表现为当正弦调制使用时它在一个交流电机的相电流中比非对称的PWM 信号引起更少的谐波

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 79: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM 6 空间矢量 PWM波形产生

空间矢量 PWM 一个三相功率变换器中六个功率三极管的一种特殊的开关电路可使三相交流电机绕组产生的电流的谐波失真最小还提供了比正弦调制方式更有效的供电电压的使用

空间矢量 PWM 方法的实质就是利用 6 个功率管的 8种组合开关方式来近似给出电动机的供电电压向量 UOUT

三相功率反相换流器原理图

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 80: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 1 )产生空间矢量 PWM波形寄存器设置 每个 EV 模块都具有极大简化对称空间矢量 PWM波形产生的内

置硬件电路通过设置以下寄存器输出空间矢量 PWM波形 设置 ACTRx 寄存器定义比较输出引脚的输出方式 设置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式

并将 CMPRx 的重装入条件设置为下溢 将通用定时器 1或 3 设置成连续增 减计数模式并启动定时器

用户需确定在二维 d-q坐标系下输入到电机的电压 UOUT 并分解 UOUT 以确定每个 PWM 周期的以下参数 两个相邻向量 Ux和 Ux+60 参数 T1 T2和 T0 将相应于 Ux 的开启方式写入到 ACTRx14~ 12 位中并将 1 写入

ACTRx15 中或者将 Ux+60 的开启方式写入 ACTRx14~ 12 并将 0 写入 ACTRx15 中

将 T12 的值写入到 CMPR1 寄存器将 (T1+T2)2 的值写入到CMPR2 寄存器

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 81: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 2 )空间矢量 PWM 的硬件

在一个空间矢量 PWM 周期内每个 EV 模块的空间矢量 PWM硬件工作如下 在每个周期开始将 PWM 输出置成由 ACTRx14~ 12 设

置的新方式 Uy

在增计数期间当 CMPR2 和通用定时器 1或 3 发生第一次匹配时即计数器达到 (T1+T2)2 时 PWM将输出开关方式 000或 111 与第二类输出方式之间只有 1 位之差

在减计数期间当 CMPR2 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第二类输出方式当 CMPR1 和通用定时器 1或 3 发生第二次匹配时将 PWM 输出置回第一类输出方式

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 82: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 3 )未用到的比较寄存器 (CMPR3)

当 CMPR3 和通用定时器发生一次比较匹配时若相应的比较中断未被屏蔽则相位的比较标志位将置位并发出中断请求信号因此 CMPR3 寄存器仍可用于其他定时事件的发生

( 4 )空间矢量 PWM 的边界条件

在空间矢量 PWM 模式中当 CMPR1和 CMPR2装入的值都是 0 时三个比较输出全都变成无效因此使用空间矢量 PWM 时应满足如下关系式 CMPR1lt=CMPR2lt=T1PR

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 83: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM( 5 )空间矢量 PWM波形

生成的空间矢量 PWM波形是关于每个 PWM 周期中心对称的因此被称为对称空间矢量 PWM 生产法其波形如右图所示

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 84: 第 7 章: 事件管理器模块 (EV)

74 脉宽调制电路 PWM小结事件管理器的 PWM 发生器的特征

5 个独立的 PWM波形输出其中 3 个由比较单元产生 2 个由通用定时器产生

3 个比较单元相对应的 PWM 输出对带可编程死区

最小的死区时间宽度为 1 个 CPU 时钟周期

最小的 PWM 脉冲宽度和脉宽的增减量为 1 个 CPU 时钟周期

PWM载波频率的快速改变(具有双缓冲的周期寄存器)

PWM 脉宽的快速改变(具有双缓冲的比较寄存器)

功率驱动保护中断

由于比较和周期寄存器的自动重载使 CPU 的负担最小

输出动作控制灵活

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 85: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 1 捕获单元概述可记录 6 个捕获输入引脚上的事件

共 6 个捕获单元每个事件管理器

有 3 个捕获单元 EVACAP1 CAP2 CAP3

EVBCAP4 CAP5 CAP6

图 716 是 EVA 的捕获单元结构框图 EVB 的结构框图与 EVA

一样仅寄存器不同当在捕获输入引脚 CAPx 上检测到

获一个设定的转换时 GP 定时器的值被捕获并存储在相应的 2 级深度 FIFO堆栈中

图 716 EVA 模块中的捕获单元结构框图

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 86: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 2 捕获单元的特点捕获单元包括下列特性 1 个 16 位的捕获控制寄存器 CAPCONx( 可读 写 ) 1 个 16 位的捕获 FIFO状态寄存器 CAPFIF0x 可选择通用定时器 1 2(EVA) 或者 3 4(EvB) 作为时基 6 个 16 位 2 级深的 FIFO栈 (CAPxFlFO) 每个对应一个捕获单元

3 个施密特触发器输入引脚 (EVA CAPl 2 3 EVB CAP

4 5 6) 每个捕获输入引脚和内部 CPU 时钟同步为使跳变被捕获输入必须在当前电平保持两个 CPU 时钟周期输入引脚CAP1 2 和 CAP4 5 也可用作正交编码器脉冲电路的正交编码器脉冲输入 )

用户可定义跳变检测方式 ( 上升沿下降沿或二者 ) 6 个可屏蔽的中断标志位每个标志位对应一个捕获单元

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 87: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 3 捕获单元的操作

在捕获使能后相应输入引脚上的指定跳变会将所选的通用定时器的计数值装入到相应的 FlFO堆栈同时如果有一个或更多有效的捕获值保存在 FlFO堆栈 (CAPxFl

FO 位不等于 0) 中则相应的中断标志位被置 1 如果该中断标志没有被屏蔽产生一个外设中断请求

从捕获单元输入引脚处发生跳变到所选通用定时器的计数值被锁存之间的延时需要 2 个 CPU 时钟周期

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 88: 第 7 章: 事件管理器模块 (EV)

75 捕获单元( 1 )捕获单元时基的选择

EVA 中的每个捕获单元均可选择 GP 定时器 2 或 1 作为其时间基准 EVB 中的每个捕获单元均可选择 GP

定时器 4 或 3 作为其时间基准

对 EVA 模块捕获单元 CAP3 有自己独立的时基选择位这就允许使用 2 个通用定时器中的任意一个 CA

P1 和 CAP2 共用一个时基选择位在 EVB 模块 CA

P6 有自己独立的时基选择位

捕获操作不影响与任何 GP 定时器对应的任何 GP 定时器操作或比较 PWM 操作

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 89: 第 7 章: 事件管理器模块 (EV)

75 捕获单元( 2 )捕获单元的设置

为使捕获单元能正常工作需对寄存器进行以下设置

初始化捕获 FlFO状态寄存器 (CAPFlFOx) 清除专用状态位

设置选定的 GP 定时器为一种操作模式

如果需要设置相应的 GP 定时器比较寄存器或 GP 定时器周期寄存器

设置相应的 CAPCONA 或 CAPCONB

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 90: 第 7 章: 事件管理器模块 (EV)

75 捕获单元( 3 )捕获单元的寄存器

捕获单元的操作由 4 个 16 位的控制寄存器 CAPCONAB

和 CAPFlFOAB 控制因为捕获电路的时间基准是由GP 定时器 1 2 或 3 4 提供的所以 TxCON(x=12

3 或 4) 寄存器用于控制捕获单元的操作

另外寄存器 CMCONA B 也可用于正交编码器脉冲电路的操作

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 91: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 捕获控制寄存器 CAPCONAB

捕获控制寄存器 A(CAPCONA) 映射地址 7420h 各位的意义 位 15 CAPRES 捕获复位只能写读为 0 向位 15 写 0

将清除所有的捕获和 QEP 寄存器但是使能捕获功能时不需要向位 15 写 1 bull 0 所有捕获单元和正交编码脉冲电路的寄存器清 0

bull 1 无动作 位 14-13 CAPQEPN 捕获单元 1 和 2 的控制位

bull 00 禁止捕获单元 1 和 2 FIF0堆栈保持原内容bull 01 使能捕获单元 1 和 2

bull 10 保留bull 11 保留

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 92: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 位 12 CAP3EN 捕获单元 3 控制位

bull 0 禁止捕获单元 3 其 FlFO堆栈保持原内容bull 1 使能捕获单元 3

位 11 保留位 位 10 CAP3TSEL 捕获单元 3 的通用定时器选择位

bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 9 CAP2TSEL 捕获单元 1 和 2 的通用定时器选择位bull 0 选择通用定时器 2

bull 1 选择通用定时器 1

位 8 CAP3TOADC 捕获单元 3 事件启动 ADC转换位bull 0 无操作bull 1 当 CAP3INT 标志位被置位时启动 ADC

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 93: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 位 7-6 CAP1EDGE 捕获单元 1 的边沿检测控制位

bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 5-4 CAP2EDGE 捕获单元 2 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 3-2 CAP3EDGE 捕获单元 3 的边沿检测控制位bull 00 无检测 01 检测上升沿bull 10 检侧下降沿 11 上升沿下降沿均检测

位 1-0 保留位

捕获控制寄存器 B(CAPCONB) 映射地址 7520h CAPCONB与CAPCONA 各位的意义相同

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 94: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 捕获 FIFO状态寄存器 CAPFlFOAB

CAPFlFOx 中包括捕获单元的 3 个 FlFO堆栈的状态位如果 CAPFlFOx 的状态位正在更新的同时(因为一个捕获事件)向 CAPFlFOx状态位写数据写数据优先

CAPFlFOx 寄存器的写操作在编程中很有用例如如果ldquo 01rdquo 写入 CAPFlFOx 位则 EV 模块会认为 FIFO

有一个输入随后每次 FIFO 获得一个新值则将产生一个捕获中断

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 95: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 捕获 FlFO状态寄存器 A(CAPFlFOA) 映射地址 7422h 各位

的意义如下 位 15-14 保留位 位 13-12 CAP3FlFO 捕获单元 3 的 FlFO状态位

bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 11-10 CAP2FlFO 捕获单元 2 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 9-8 CAP1FlFO 捕获单元 1 的 FlFO状态位bull 00 空 01 有一个输入 10 有两个输入bull 11 有两个输入并又捕获到一个第一个输入已丢失

位 7-0 保留位

捕获 FlFO状态寄存器 B(CAPFlFOB) 映射地址 7522h与 CAP

FlFOA 各位的意义相同

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 96: 第 7 章: 事件管理器模块 (EV)

75 捕获单元( 4 ) 捕获单元 FIF0堆栈

每个捕获单元有一个 2 级深度 FlFO堆栈如下图所示

第 1次捕获

当捕获单元的输入引脚出现一个指定的 GP 定时器的计数器值就会被捕获的这个计数器值就会被写入到 FlFO

器同时相应的状态位被设置为 01

如果另外一个捕获发生之前对 FIFO堆问则 FlFO状态位被复位为 00

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 97: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 第 2次捕获

如果在以前的捕获的计数值被读取之前又发生一次捕获那么捕获的计数器值就会进入底部寄存器同时寄存器中相应的 FIFO状态位被置为 10

当在另外一次捕获之前读 FlFO堆栈时顶部寄存器中的旧计数器值被读出底部寄存器中的新计数器值被压入顶部寄存器相应的状态位设置为 01

第 2次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 98: 第 7 章: 事件管理器模块 (EV)

75 捕获单元 第 3次捕获

当 FlFO堆栈中已有两个计数器值这时如果又有一个捕获发生堆栈顶部寄存器中最旧的计数器值被推出并且丢失然后堆栈底部寄存器的计数器值被向上压入到顶部寄存器新捕获的计数器值被写入底部寄存器并巳将状态位设置为 11 表明一个或更多的旧计数器值被丢失

第 3次捕获会将寄存器相应的捕获中断标志位置 1 如果中断没有被屏蔽则会产生一个中断请求

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99
Page 99: 第 7 章: 事件管理器模块 (EV)

75 捕获单元( 5 ) 捕获中断 当一个捕获单元执行了一次捕获且 FlFO 中至少有一

个捕获到的计数值时( CAPFlFO 位不为 0 )则相应的中断标志位置 1 如果该中断没有被屏蔽则会产生一个外设中断请求信号

如果使用了捕获中断则可在中断服务程序中读取捕获到的一对计数值

如果没有使用中断也可以通过查询中断标志位和FlFO堆栈的状态位来确定是否发生捕获事件如果已发生捕获事件则可以从相应的捕获捉单元的 FlFO堆栈中读取捕获到的计数值

  • Slide 1
  • Slide 2
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Slide 7
  • Slide 8
  • Slide 9
  • Slide 10
  • Slide 11
  • Slide 12
  • Slide 13
  • Slide 14
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • Slide 25
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Slide 45
  • Slide 46
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Slide 55
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Slide 60
  • Slide 61
  • Slide 62
  • Slide 63
  • Slide 64
  • Slide 65
  • Slide 66
  • Slide 67
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Slide 80
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Slide 85
  • Slide 86
  • Slide 87
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • Slide 92
  • Slide 93
  • Slide 94
  • Slide 95
  • Slide 96
  • Slide 97
  • Slide 98
  • Slide 99