第 9 章 f2812 事件管理器( eva/b )

144
第9第 F2812 第第第第第EVA/B 第第第 2010.11.26

Upload: fayre

Post on 22-Mar-2016

205 views

Category:

Documents


6 download

DESCRIPTION

第 9 章 F2812 事件管理器( EVA/B ). 张云洲 2010.11.26. 章节结构. 9.1 事件管理器概述 9.2 通用定时器 9.3 比较单元及 PWM 输出 9.4 捕获单元 9.5 正交编码脉冲单元 9.6 事件管理器中断. 9.1 事件管理器概述. F281x 包含两个事件管理器 EVA 和 EVB ,每个事件管理器包括通用定时器( GP )、比较器、 PWM 单元,捕获单元以及正交编码脉冲电路( QEP )。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 9 章   F2812 事件管理器( EVA/B )

第 9 章 F2812 事件管理器( EVAB )

张云洲20101126

2

章节结构91 事件管理器概述92 通用定时器93 比较单元及 PWM 输出94 捕获单元95 正交编码脉冲单元96 事件管理器中断

91 事件管理器概述bull F281x 包含两个事件管理器 EVA 和 EVB 每个事件管理器包括通用定时器( GP )比较器 PWM 单元捕获单元以及正交编码脉冲电路( QEP )bull PWM 单元主要应用 (1) 产生脉宽调制信号控制数字电机 (2) 直接用 PWM 输出作为数模转换使用事件管理器的捕获单元用来对外部硬件信号的时间测量利用 6 个边沿检测单元测量外部信号的时间差从而可以确定电机转子的转速bull 正交编码脉冲电路( QEP )根据增量编码器信号获得电机转子的速度和方向信息bull 事件管理器 EVA 和 EVB 有相同的外设寄存器 EVA 的起始地址是 7400H EVB 的起始地址为 7500H 功能基本相同只是模块的外部接口和信号有所不同 3

事件管理器概述(续)bull 每个事件管理器都有自己的控制逻辑模块逻辑模块能够响应来自 C28x 的外设中断扩展单元的中断请求从而实现事件管理器的各种操作模式bull 在特定操作模式下事件管理器可以利用两个外部信号ldquo TCLKINArdquo 和ldquo TDIRArdquo 进行控制还可以根据内部事件自动的启动 ADC 转换而不像其他通用的微处理器需要专门的中断服务程序完成bull 通用定时器 1 和 2 是 2 个带有可配置输出信号( T1PWM T1CMP 和 T2PWMT2CMP )的 16 位定时器也可以直接在 DSP 内部使用比较单元 1 ~3 以通用定时器 1 作为时钟基准产生 6 路 PWM 输出控制信号 3 个独立的捕获单元 CAP1 2 和 3 可以用来进行时间和速度估计光电编码脉冲电路重新定义了捕获单元 CAP1 2 和 3 的输入功能可以直接检测脉冲的边沿

4

事件管理器功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUX

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2

ADC Start

Dat

a B

us

QEPCircuit

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 2: 第 9 章   F2812 事件管理器( EVA/B )

2

章节结构91 事件管理器概述92 通用定时器93 比较单元及 PWM 输出94 捕获单元95 正交编码脉冲单元96 事件管理器中断

91 事件管理器概述bull F281x 包含两个事件管理器 EVA 和 EVB 每个事件管理器包括通用定时器( GP )比较器 PWM 单元捕获单元以及正交编码脉冲电路( QEP )bull PWM 单元主要应用 (1) 产生脉宽调制信号控制数字电机 (2) 直接用 PWM 输出作为数模转换使用事件管理器的捕获单元用来对外部硬件信号的时间测量利用 6 个边沿检测单元测量外部信号的时间差从而可以确定电机转子的转速bull 正交编码脉冲电路( QEP )根据增量编码器信号获得电机转子的速度和方向信息bull 事件管理器 EVA 和 EVB 有相同的外设寄存器 EVA 的起始地址是 7400H EVB 的起始地址为 7500H 功能基本相同只是模块的外部接口和信号有所不同 3

事件管理器概述(续)bull 每个事件管理器都有自己的控制逻辑模块逻辑模块能够响应来自 C28x 的外设中断扩展单元的中断请求从而实现事件管理器的各种操作模式bull 在特定操作模式下事件管理器可以利用两个外部信号ldquo TCLKINArdquo 和ldquo TDIRArdquo 进行控制还可以根据内部事件自动的启动 ADC 转换而不像其他通用的微处理器需要专门的中断服务程序完成bull 通用定时器 1 和 2 是 2 个带有可配置输出信号( T1PWM T1CMP 和 T2PWMT2CMP )的 16 位定时器也可以直接在 DSP 内部使用比较单元 1 ~3 以通用定时器 1 作为时钟基准产生 6 路 PWM 输出控制信号 3 个独立的捕获单元 CAP1 2 和 3 可以用来进行时间和速度估计光电编码脉冲电路重新定义了捕获单元 CAP1 2 和 3 的输入功能可以直接检测脉冲的边沿

4

事件管理器功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUX

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2

ADC Start

Dat

a B

us

QEPCircuit

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 3: 第 9 章   F2812 事件管理器( EVA/B )

91 事件管理器概述bull F281x 包含两个事件管理器 EVA 和 EVB 每个事件管理器包括通用定时器( GP )比较器 PWM 单元捕获单元以及正交编码脉冲电路( QEP )bull PWM 单元主要应用 (1) 产生脉宽调制信号控制数字电机 (2) 直接用 PWM 输出作为数模转换使用事件管理器的捕获单元用来对外部硬件信号的时间测量利用 6 个边沿检测单元测量外部信号的时间差从而可以确定电机转子的转速bull 正交编码脉冲电路( QEP )根据增量编码器信号获得电机转子的速度和方向信息bull 事件管理器 EVA 和 EVB 有相同的外设寄存器 EVA 的起始地址是 7400H EVB 的起始地址为 7500H 功能基本相同只是模块的外部接口和信号有所不同 3

事件管理器概述(续)bull 每个事件管理器都有自己的控制逻辑模块逻辑模块能够响应来自 C28x 的外设中断扩展单元的中断请求从而实现事件管理器的各种操作模式bull 在特定操作模式下事件管理器可以利用两个外部信号ldquo TCLKINArdquo 和ldquo TDIRArdquo 进行控制还可以根据内部事件自动的启动 ADC 转换而不像其他通用的微处理器需要专门的中断服务程序完成bull 通用定时器 1 和 2 是 2 个带有可配置输出信号( T1PWM T1CMP 和 T2PWMT2CMP )的 16 位定时器也可以直接在 DSP 内部使用比较单元 1 ~3 以通用定时器 1 作为时钟基准产生 6 路 PWM 输出控制信号 3 个独立的捕获单元 CAP1 2 和 3 可以用来进行时间和速度估计光电编码脉冲电路重新定义了捕获单元 CAP1 2 和 3 的输入功能可以直接检测脉冲的边沿

4

事件管理器功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUX

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2

ADC Start

Dat

a B

us

QEPCircuit

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 4: 第 9 章   F2812 事件管理器( EVA/B )

事件管理器概述(续)bull 每个事件管理器都有自己的控制逻辑模块逻辑模块能够响应来自 C28x 的外设中断扩展单元的中断请求从而实现事件管理器的各种操作模式bull 在特定操作模式下事件管理器可以利用两个外部信号ldquo TCLKINArdquo 和ldquo TDIRArdquo 进行控制还可以根据内部事件自动的启动 ADC 转换而不像其他通用的微处理器需要专门的中断服务程序完成bull 通用定时器 1 和 2 是 2 个带有可配置输出信号( T1PWM T1CMP 和 T2PWMT2CMP )的 16 位定时器也可以直接在 DSP 内部使用比较单元 1 ~3 以通用定时器 1 作为时钟基准产生 6 路 PWM 输出控制信号 3 个独立的捕获单元 CAP1 2 和 3 可以用来进行时间和速度估计光电编码脉冲电路重新定义了捕获单元 CAP1 2 和 3 的输入功能可以直接检测脉冲的边沿

4

事件管理器功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUX

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2

ADC Start

Dat

a B

us

QEPCircuit

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 5: 第 9 章   F2812 事件管理器( EVA/B )

事件管理器功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUX

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2

ADC Start

Dat

a B

us

QEPCircuit

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 6: 第 9 章   F2812 事件管理器( EVA/B )

92 通用定时器bull 每个事件管理器有两个通用定时器 EVA 使用 GP1

GP2 定时器 EVB 使用 GP3 GP4 定时器通用定时器可以独立使用其比较寄存可以产生 PWM 波形当定时器工作在增或增减模式时有 3 种连续工作方式通用定时器还为事件管理器的子模块提供基准时钟bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并设置定时器的计数方向bull 定时器的时钟源可以取自外部输入信号 QEP 单元或者内部时钟当选择内部时钟时定时器采用

HSPCLK 作为输入计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 7: 第 9 章   F2812 事件管理器( EVA/B )

通用定时器 GP 的功能框图

16 - Bit TimerCounter

TxCMPR 15 - 0

GPTCONATxCNT 15 - 0

CompareLogic

ClockPrescaler

OutputLogic

TPS 2-0TxCON 10 - 8

PeriodRegister

Shadowed

CompareRegister

Shadowed

TxPR 15 - 0

External ( 14 )

Internal(HSPCLK)

TCLKS 1-0TxCON 5 - 4

TxPWM_TxCMP

Note x = 1 or 2

QEP

MUX

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 8: 第 9 章   F2812 事件管理器( EVA/B )

GP 连续增计数模式This exampleTxCON3-2 = 00 ( 下溢时 TxCMPR 重载 )TxPR = 3TxCMPR = 1 (initially)Prescale = 1

0

3

01

23

1

CPUCLK

TxCNT Reg

3

0

CPU writes a 2 to compare reg buffer

anytime here TxCMPR=2

TxPWMTxCMP(active high)

(Used for Asymmetric PWM Waveforms)

uml 无延迟计数uml 计数值 = TxPR+1

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 9: 第 9 章   F2812 事件管理器( EVA/B )

GP 连续增 减计数模式

CPUCLK

01

23

TxCNT Reg

21

01

2

0

32

1

TxPWMTxCMP(active high)

This exampleTxCON3-2 = 01 (==00PRreg)TxPR = 3TxCMPR = 1 (initially)Prescale = 1

(Used for Symmetric PWM Waveforms)

uml 无延迟增减uml 增减计数周期 is 2TxPR

TxCMPR =1 TxCMPR =2 TxCMPR =1

00

PRreg

00

PRreg

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 10: 第 9 章   F2812 事件管理器( EVA/B )

后台功能bull C28x 的定时器提供后台功能定时器 1 和定时器 2 都有各自的比较寄存器和周期寄存器bull 后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器值下一个定时周期会将后台寄存器的值自动的装载到相应的寄存器中bull 如果没有后台寄存器需要更新寄存器的值时就必须等待当前周期结束然后触发高优先级的中断调整寄存器的值这样就会影响定时器的运行

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 11: 第 9 章   F2812 事件管理器( EVA/B )

921 通用定时器计数模式bull 每一个通用定时器支持停止 保持连续递增计数双

向增 减计数和连续增 减计数 4 种操作模式可以通过控制寄存器 TxCON 中的 MODE1-TMODE0 位设置通用定时器的计数模式

bull 可以通过定时器使能位 TENABLE 使能或禁止定时器的计数操作当定时器被禁止时定时器的计数器操作也被禁止并且定时器的预定标器被复位为 x1 当使能定时器时定时器按照寄存器 TxCON 中的TMODE1-TMODE0 位确定的计数模式工作并开始计数

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 12: 第 9 章   F2812 事件管理器( EVA/B )

922 定时器的比较操作每一个通用定时器有 1 个比较寄存器 TxCMPR 和 1 个

PWM输出引脚 TxPWM 当定时器计数器的值与比较寄存器的值相等时就产生比较匹配可通过 TxCON[1] 位使能比较操作如果被使能产生比较匹配后将会bull 匹配一个时钟周期后定时器比较中断标志位置位bull 匹配一个 CPU 时钟周期后根据寄存器 GPTCONAB 相应位的配置情况 PWM 的输出将产生跳变bull 如果比较中断标志位已通过设置寄存器 GPTCONAB 中的相应位启动 AD 转换器则比较中断位置位的同时产生模数转换启动信号bull 如果比较中断未被屏蔽将产生一个外设中断申请

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 13: 第 9 章   F2812 事件管理器( EVA/B )

通用定时器比较操作功能框图

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 14: 第 9 章   F2812 事件管理器( EVA/B )

PWM 比较输出和中断

TxCMPTxPWM(active high)

比较中断周期中断

下溢中断

PWM 周期 2

定时器计数值

PWM 周期 1

Comp1

Comp2

新周期自动加载

TxCMPTxPWM(active low)

T

2T

T T

TxCON3-2= 00PR=Comp1

PR reg=Comp1

PR reg=Comp2

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 15: 第 9 章   F2812 事件管理器( EVA/B )

Register Address DescriptionGPTCONA 0x007400 GP 控制寄存器 AT1CNT 0x007401 定时器 1 计数寄存器T1CMPR 0x007402 定时器 1 比较寄存器T1PR 0x007403 定时器 1 周期寄存器T1CON 0x007404 定时器 1 控制寄存器T2CNT 0x007405 定时器 2 计数寄存器T2CMPR 0x007406 定时器 2 比较寄存器T2PR 0x007407 定时器 2 比较寄存器T2CON 0x007408 定时器 2 控制寄存器GPTCONB 0x007500 GP 控制寄存器 BT3CNT 0x007501 定时器 3 计数寄存器T3CMPR 0x007502 定时器 3 比较寄存器T3PR 0x007503 定时器 3 周期寄存器T3CON 0x007504 寄存器 3 控制寄存器T4CNT 0x007505 定时器 4 计数寄存器T4CMPR 0x007506 定时器 4 比较寄存器T4PR 0x007507 定时器 4 周期寄存器T4CON 0x007508 定时器 4 控制寄存器

EVA

EVB

GP 定时器寄存器

EXTCONA 0x007409 EXTCONB 0x007509 外部控制寄存器

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 16: 第 9 章   F2812 事件管理器( EVA/B )

EVA 全比较单元

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

Compare Unit 1Compare Unit 2Compare Unit 3

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 17: 第 9 章   F2812 事件管理器( EVA/B )

什么是 PWM bull PWM (脉宽幅度调制)

ndash固定的载波频率ndash固定的放大系数ndash 脉冲宽度正比于瞬时放大系数ndash 能量损失趋于 0

bull PAM (脉冲幅度调制)ndash固定的宽度变化的幅值

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 18: 第 9 章   F2812 事件管理器( EVA/B )

Tt

PWM PAMT

t

tOriginal Signal

PWM 信号调制

same areas (energy)

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 19: 第 9 章   F2812 事件管理器( EVA/B )

PWM Motor 控制的优势bull 功率转换器件是晶体管

ndash 在线性区难以控制ndash 在饱和区容易控制

bull PWM 是数字信号容易在 DSP 实现

PWM approxof desired signal

DC Supply

Desiredsignal tomotor phase

DC Supply

Unknown Gate Signal Gate Signal Known with PWM

PWM

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 20: 第 9 章   F2812 事件管理器( EVA/B )

9223 TxPWM 输出非对称波形bull 根据通用定时器使用的计数模式非对称 对称波形发生器产生一个非对称或对称的 PWM 波形当通用定时器处于连续递增计数模式时产生非对称波形在这种模式下波形发生器产生的波形输出根据下面情况有所变化ndash 计数操作开始前为 0 ndash 直到匹配发生时保持不变ndash 在比较匹配时 PWM 输出信号反转ndash 保持不变直到周期结束ndash 若下一周期新的比较寄存器值不是 0 则在匹配周期结束的周期复位清零

bull 在周期开始时如果比较器周期寄存器的值是 0 则整个计数周期内输出为 1 保持不变如果下一周期新的比较值为 0 则输出不会被复位为 0 如果比较值大于周期寄存器中的值则整个周期内输出为 0 如果比较等于周期寄存器的值对一个定标时钟输入来说输出是 1 bull 对于非对称 PWM 波形改变比较寄存器的值仅仅影响 PWM 脉冲的一侧

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 21: 第 9 章   F2812 事件管理器( EVA/B )

非对称 PWM 波形

Counter

Period

Compare

Tpwm Tcmp Pin(active high) Caused by Period match

(toggle output in Asym mode only)

Caused by Compare match

TPWM

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 22: 第 9 章   F2812 事件管理器( EVA/B )

9224 TxPWM 输出对称波形bull 当通用定时器处于连续递增 递减计数模式时产生对称波形在这种计数模式下波形发生器的输出状态与下列状态有关

ndash 计数操作开始前为 0 ndash 第一次比较匹配前保持不变ndash 第一次比较匹配时 PWM 输出信号反转ndash 第二次比较匹配前保持不变ndash 第二次比较匹配时 PWM 输出信号反转ndash 周期结束前保持不变ndash 如果没有第二次匹配且下一周期新的比较值不为 0 则在周期结束后复位为 0

bull 如果比较值在周期开始时为 0 则周期开始时输出为 1 直到第二次比较匹配发生后一直保持不变如果比较值在后半周期是 0 在第一次跳变后直到周期结束将输出保持 1 在这种情况下如果下一周期新的比较值仍然为 0 则输出不会复位为 0 这会重复出现以保证能够产生占空比从 0 到 100 的无毛刺的 PWM 脉冲如果前半周期的比较值大于等于周期寄存器的值则不会产生第一次跳变然而在后半周期发生比较匹配时输出仍将跳变这种错误的输出跳变经常是由应用程序计算不正确引起的它将会在周期结束时被纠正因为除非下一周期的比较值为 0 输出才会被复位为 0 否则输出将保持 1 这将把波形发生器的输出重新置为正确的状态

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 23: 第 9 章   F2812 事件管理器( EVA/B )

对称 PWM 波形Counter

Compare

Period

TPWM

TPWM TCMP Pin(active high)

Interrupts

PeriodCompareCounter

General Purpose Timer

TPWMTCMP PinCompareCompareCompare

Full Compare UnitsPWM1PWM2PWM3PWM4PWM5PWM6

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 24: 第 9 章   F2812 事件管理器( EVA/B )

9221 定时器 PWM 输出( TxPWM )逻辑控制bull 输出逻辑进一步对 PWM 波形进行设置适当配置 GPTCONAB 寄

存器可以设定 PWM 的输出为高电平有效低电平有效强制低或强制高

bull 当 PWM 输出为高电平有效时它的极性与相关的非对称 对称波形发生器的极性相同当 PWM 输出为低电平有效时它的极性与相关的非对称 对称波形发生器的极性相反如果 GPTCONAB 相应的控制位规定 PWM 输出为强制高(或低)后 PWM 输出就会立即置1 (或清 0 )

bull 总之在正常的计数模式下如果比较已经被使能则通用定时器的PWM 输出就会发生变化

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 25: 第 9 章   F2812 事件管理器( EVA/B )

通用定时器比较输出

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 26: 第 9 章   F2812 事件管理器( EVA/B )

高阻状态bull 基于定时器计数模式和输出逻辑的非对称 对称波形发生器同样适用于比较单元当出现下列情况之一时所有通用定时器的 PWM 输出都被置成高阻状态

ndash软件将 GPTCONAB[6]清零ndash PDPINTx引脚被拉低而且没有屏蔽ndash 任何一个复位信号发生ndash软件将 TxCON[1] 清零

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 27: 第 9 章   F2812 事件管理器( EVA/B )

连续增计数模式下的通用定时器比较 PWM 输出

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 28: 第 9 章   F2812 事件管理器( EVA/B )

9225 通用定时器应用举例bull 一般的通用定时器可以提供周期测量脉冲宽度测量产生脉冲等多种工作模式 C28xbull 的事件管理器模块提供的定时器基本上也可以实现这几种工作模式定时器在定时计数过程bull 中可以利用处理器内部的可编程时钟也可以通过外部 TCLKINA ( B )作为计数时钟定bull 时器在产生 PWM 信号输出时可以结合比较单元产生电机控制系统需要的脉宽调制信号bull 也可以独立使用控制定时器本身的 PWM 信号输出( T1PWM_T1CMP 和 T2PWM_T2CMP )bull 用通用定时器产生 PWM 输出可以采用连续递增或连续增 减计数模式当选用连续递bull 增计数模式时可产生边沿触发或非对称 PWM 波形当选用连续增 减计数模式时可产生bull 对称 PWM 波形可以通过下列操作产生 PWM 信号bull 1048698 根据所需的 PWM (载波)周期设置 TxPR bull 1048698 设置 TxCON 寄存器确定计数器模式和时钟源并启动 PWM 输出操作bull 1048698 将软件计算出来的 PWM 脉冲宽度(占空比)装载到 TxCMPR 寄存器中bull 如果选用连续递增计数模式来产生非对称 PWM 波形把所需的 PWM 周期除以通用定时bull 器输入时钟的周期然后减 1便得出定时器的周期如果选用连续增 减计数模式产生非对称bull PWM 波形把所需的 PWM 周期除以 2倍的通用定时器输入时钟周期就得出定时器的周期bull 在程序运行的过程中软件可以计算 PWM 的占空比适时的刷新比较寄存器的设置bull 在 F2812 信号处理板上将 T1PWM经过简单的运放电路后输出可以直接将其输出连接bull 到扬声器然后通过改变定时器的周期输出 8 种频率的信号方波信号模拟 8 种电子音效实际bull 上在实际生活中音频信号是多种频率的正弦波信号合成的结果当然也可以利用 PWM 输bull 出产生正弦波信号在本实验中利用定时器 0 产生 50ms 的定时中断在每次 CPU 响应定时器bull 中断过程中装载下一个周期的定时器 1 的比较和周期寄存器值通过这种方式轮回的产生bull 几种不同频率的 PWM 波

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 29: 第 9 章   F2812 事件管理器( EVA/B )

bull bull bull 文件名称 Playatunecbull bull 主要功能 DSP28 T1PWMmdash 输出 PWMbull CPU 定时器 0 中断时间 50 msbull 使能看门狗并在主程序中复位看门狗计数寄存器bull bull bull include DSP281x_Devicehbull 函数原型声明bull void Gpio_select ( void ) bull void SpeedUpRevA ( void ) bull void InitSystem ( void ) bull interrupt void cpu_timer0_isr ( void ) 定时器 0 中断服务程序bull void main ( void )bull bull unsigned int ibull unsigned long time_stampbull int frequency[8]=22191973177616651480133211841110

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 30: 第 9 章   F2812 事件管理器( EVA/B )

bull InitSystem () 初始化 DSP 内核寄存器bull Gpio_select () 设置 GPIO引脚功能bull InitPieCtrl () 初始化外设中断扩展单元 ( 代码在

DSP281x_PieCtrlc )bull InitPieVectTable () 初始化外设中断扩展向量表( 代码在

DSP281x_PieVectc )bull 重新映射定时器 0 ( Timer 0 )的中断入口bull EALLOW 允许更改保护的寄存器bull PieVectTableTINT0 = ampcpu_timer0_isrbull EDIS 禁止更改保护的寄存器bull InitCpuTimers () bull 配置 CPU 定时器 0 计数周期为 50 msbull CPU 工作频率 150MHz CPU 50000 微秒的中断周期bull ConfigCpuTimer ( ampCpuTimer0 150 50000 ) bull 使能外设中断扩展的中断 TINT0bull PieCtrlRegsPIEIER1bitINTx7 = 1bull 使能 CPU 的 INT1 CPU 定时器 0 的中断连接到该 CPU 中断上bull IER = 1

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 31: 第 9 章   F2812 事件管理器( EVA/B )

bull 全局中断使能并使能具有更高优先级的适时调试方式bull EINT 使能全局中断 INTMbull ERTM 使能全局适时中断 DBGMbull 配置事件管理器 EVAbull 假定事件管理器 EVA 的时钟在系统初始化函数

InitSysCtrl ()内已经被使能bull T1T2 的控制逻辑驱动 T1PWM T2PWMbull EvaRegsGPTCONAbitTCMPOE = 1bull 通用定时器 1 比较 = 低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull EvaRegsT1CONall = 0x1702 配置 T1 递增计数模式

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 32: 第 9 章   F2812 事件管理器( EVA/B )

bull CpuTimer0RegsTCRbitTSS = 0bull i = 0bull time_stamp = 0bull while ( 1 )bull bull if (( CpuTimer0InterruptCount4 ) ==0 )bull bull EALLOWbull SysCtrlRegsWDKEY = 0xAA 看门狗bull EDISbull bull if (( CpuTimer0InterruptCount - time_stamp ) gt10 )bull bull time_stamp = CpuTimer0InterruptCountbull if ( ilt7 ) EvaRegsT1PR = frequency[i++]bull else EvaRegsT1PR = frequency[14-i++]bull EvaRegsT1CMPR = EvaRegsT1PR2bull EvaRegsT1CONbitTENABLE = 1bull if ( igt=14 ) i=0bull bull bull

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 33: 第 9 章   F2812 事件管理器( EVA/B )

bull 通用 IO 选择bull void Gpio_select ( void )bull bull EALLOWbull GpioMuxRegsGPAMUXall = 0x0 所有 GPIO端口配置成 IO 方式bull GpioMuxRegsGPAMUXbitT1PWM_GPIOA6 = 1 T1PWM 有效bull GpioMuxRegsGPBMUXall = 0x0bull GpioMuxRegsGPDMUXall = 0x0bull GpioMuxRegsGPFMUXall = 0x0bull GpioMuxRegsGPEMUXall = 0x0bull GpioMuxRegsGPGMUXall = 0x0bull GpioMuxRegsGPADIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPBDIRall = 0x00FF GPIO Port B15-B8 输入 B7-B0 输出bull GpioMuxRegsGPDDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPEDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPFDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPGDIRall = 0x0 GPIO PORT 作为输入bull GpioMuxRegsGPAQUALall = 0x0 设置 GPIO 量化值为 0bull GpioMuxRegsGPBQUALall = 0x0bull GpioMuxRegsGPDQUALall = 0x0bull GpioMuxRegsGPEQUALall = 0x0bull EDISbull

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 34: 第 9 章   F2812 事件管理器( EVA/B )

bull 系统初始化bull void InitSystem ( void )bull bull EALLOWbull SysCtrlRegsWDCR= 0x00AF 配置看门狗bull 0x00E8 禁止看门狗预定标系数 Prescaler = 1bull 0x00AF 使能看门狗预定标系数 Prescaler = 64bull SysCtrlRegsSCSR = 0 看门狗产生 RESETbull SysCtrlRegsPLLCRbitDIV = 10 设置系统锁相环倍频系数 5bull SysCtrlRegsHISPCPall = 0x1 配置高速外设时钟预定标系数除以 2bull SysCtrlRegsLOSPCPall = 0x2 配置低速外设时钟预定标系数除以 4bull 使能本应用程序使用的外设时钟bull SysCtrlRegsPCLKCRbitEVAENCLK=1bull SysCtrlRegsPCLKCRbitEVBENCLK=0bull SysCtrlRegsPCLKCRbitSCIAENCLK=0bull SysCtrlRegsPCLKCRbitSCIBENCLK=0bull SysCtrlRegsPCLKCRbitMCBSPENCLK=0bull SysCtrlRegsPCLKCRbitSPIENCLK=0bull SysCtrlRegsPCLKCRbitECANENCLK=0bull SysCtrlRegsPCLKCRbitADCENCLK=0bull EDISbull

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 35: 第 9 章   F2812 事件管理器( EVA/B )

bull CPU 定时器 0 中断服务子程序bull interrupt void cpu_timer0_isr ( void )bull bull CpuTimer0InterruptCount++bull 每次定时器中断清除看门狗定时器计数器bull EALLOWbull SysCtrlRegsWDKEY = 0x55 Serve watchdog 1bull EDISbull 响应该中断并允许接收更多的中断bull PieCtrlRegsPIEACKall = PIEACK_GROUP1bull

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 36: 第 9 章   F2812 事件管理器( EVA/B )

923 通用定时器寄存器bull 为了正确使用事件管理器的定时器必须配置相关定时器的 5 个寄存器如果使用中断方式需要配置更多的寄存器

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 37: 第 9 章   F2812 事件管理器( EVA/B )

9231 通用定时器全局控制寄存器bull 全局控制寄存器 GPTCONAB 确定通用定时器实现具体的定时器任务需要采取的操作方式并指明通用定时器的计数方向全局通用定时器控制寄存器

B ( GTPCONB )同 GTPCONA 功能相同只是控制的定时器不同 GTPCONA控制定时器 1 和 2 GTPCONB 控制定时器 3 和 4

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 38: 第 9 章   F2812 事件管理器( EVA/B )

bull 如果定时器设置为递增或递减计数模式位 14 和 13指示定时器的计数方式位 10到 7 确bull 定具体的定时事件触发 ADC 自动转换的操作方式位 6 用来使能定时器 1 和定时器 2同时输bull 出每一位的详细定义参见表 94

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 39: 第 9 章   F2812 事件管理器( EVA/B )

9232 通用定时器计数寄存器( TxCNT 其中 x=1234 )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 40: 第 9 章   F2812 事件管理器( EVA/B )

9233 通用定时器比较寄存器( TxCMPR 其中x=1234 )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 41: 第 9 章   F2812 事件管理器( EVA/B )

9234 通用定时器周期寄存器( TxPR 其中 x=1234 )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 42: 第 9 章   F2812 事件管理器( EVA/B )

9235 通用定时器控制寄存器( TxCON )bull 定时器控制寄存器是每个定时器的独立设置寄存器位 15 和 14负责设置定时器和

JTAG仿真器之间的工作关系在某些情况下这两个位对于程序的执行非常重要比如程序运行到断点处定时器的计数模式有其实在适时系统中停止定时器计数使定时器处于随机工作状态是非常危险的因此这两位的设置必须根据硬件的实际操作需求合理的配置

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 43: 第 9 章   F2812 事件管理器( EVA/B )

bull 位 12~11 选择操作模式在前面的章节中已经做了详细的介绍位 10 到 8 定义输入时钟bull 的分频的预定标参数定时器的计数频率主要由以下参数确定bull 1048698 外部晶振( 30MHz )bull 1048698 内部 PLL状态寄存器( PLLCR乘以 102 = 150 MHz )bull 1048698 高速时钟预定标( HISPCP = 除以 2= 75 MHz )bull 1048698 定时器时钟预定标系数( 1 到 128 )bull 同时可以根据上述设置和参数确定期望的定时器周期例如希望设置 100ms 的定时器周bull 期可以采用如下设置bull 定时器输入脉冲=( 1 外部时钟频率) 1PLLHISPCP 定时器预定标系数bull 17067 μs =( 1 30 MHz ) 15 2 128bull 100 ms 17067 μs = 58593bull 因此可以设置周期寄存器 TxPR 的值 58593 此时定时器的输出脉冲即为 100ms bull 位 6 使能定时器操作在定时器一系列初始化操作完成后必须将该位置 1 启动定时器bull 位 5 和 4 选择定时器的时钟信号源位 3 和 2 定义将缓冲值装载到比较寄存器的时间位 1 用来bull 使能比较操作位 7 和 0 是定时器 2 的专用控制位在 T1CON 中两位不起作用在位 7 的控制bull 下用户可以同时启动定时器 1 和定时器 2 关于控制寄存器的详细说明参见表 98 所示

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 44: 第 9 章   F2812 事件管理器( EVA/B )

93 比较单元及 PWM 输出bull 931 比较单元功能介绍bull 事件管理器( EVA )模块中有 3 个比较单元(比较单元 1 2 和 3 )事件管理器( EVB )bull 模块中也有 3 个比较单元(比较单元 4 5和 6 )每个比较单元都有两个相关的

PWM 输出比bull 较单元的时钟基准由通用定时器 1 和通用定时器 3 提供事件管理器的比较单元作为 PWM 信bull 号输出的辅助电路主要用来控制信号处理器的 PWM 输出的占空比其结构如图

914 所示

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 45: 第 9 章   F2812 事件管理器( EVA/B )

功率器件

三相输出作为控制信号

+

-

串联的 2 个器件不能同时被关闭不能有重叠区PWM 信号的输入

DC 电容

电源逆变器

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 46: 第 9 章   F2812 事件管理器( EVA/B )

死区的产生

to motor phase

supply rail

互补的 PWM 开关信号

uml 晶体管导通比截止快uml 同时导通的瞬间 - 短路

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 47: 第 9 章   F2812 事件管理器( EVA/B )

可编程死区模块 (EVA)

PHx

DT

死区

Clock

DTPHx

非对称 PWM

DTPHx_4-bit period

Prescaler

4-bitCounter

ENA

reset

HSPCLK

comparator

DTPHx

DTPHx_

PHx

DT

edgedetect

DBTCONA 4 - 2

DBTCONA 11 - 8

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 48: 第 9 章   F2812 事件管理器( EVA/B )

死区定时器控制器 (EVA)DBTCONA 0x007415

EDBT3

7 6 5 4 2 0

EDBT2 EDBT1 DBTPS2 DBTPS1 reservedreserved

13

15 14 13 12 10 8

DBT3 DBT0DBT1DBT2

911

DB Timer Enable0 = disable1 = enable

DB Timer Prescaler000 = 1 100 = 16001 = 2 101 = 32

010 = 4 110 = 32 011 = 8 111 = 32

DB Timer Period

dead time = DB period DB prescaler CPUCLK period

reserved reserved reserved reserved

DBTPS0

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 49: 第 9 章   F2812 事件管理器( EVA/B )

bull 比较单元的核心模块是比较逻辑主要由事件管理器定时器 1 的计数寄存器ldquo T1CNTrdquobull 和比较寄存器ldquo CMPRxrdquo 构成两者比较第一次匹配则信号的上升沿将输入到ldquo死区单bull 元rdquo在同步 PWM 模式下第二次 T1CNT和 CMPRx匹配产生 PWM 信号的下降沿

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 50: 第 9 章   F2812 事件管理器( EVA/B )

bull 比较单元的输出逻辑由操作控制寄存器( Action Control Register ndash ACTRA )和通用控制

bull 寄存器( COMCONA )控制可以通过调整这两个寄存器的设置调整 PWM输出信号的波形bull 所有 6 个 PWM 输出线可以选择四种状态中的一种这四种状态分别是bull 1048698 高有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 0变为 1 第二次匹配发生bull 后 PWM 输出信号又由 1变为 0 bull 1048698 低有效bull T1CNT 和 CMPRx第一次比较匹配使 PWM 输出信号由 1变为 0 第二次匹配发生bull 后 PWM 输出信号又由 0变为 1 bull 1048698 强制高bull PWM 输出总是 1 bull 1048698 强制低bull PWM 输出总是 0

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 51: 第 9 章   F2812 事件管理器( EVA/B )

932 PWM 信号bull PWM 信号是一系列可变脉宽的脉冲信号这些脉冲覆盖几个定长周期从而可以保证bull 每个周期都有一个脉冲输出这个定长周期称之为 PWM载波周期它的倒数称为 PWM 载波bull 频率 PWM 脉冲宽度则根据另一系列期望值和调制信号来确定和调制bull PWM 数字脉冲输出可以用来表征模拟信号在 PWM 输出端进行积分(比如增加简单的bull 低通滤波器)可以得到期望的模拟信号在期望输出信号的一个周期内脉冲个数越多采用bull PWM 信号描述的模拟信号就越准确习惯上经常采用两个不同的频率描述载波频率( PWMbull 输出频率)和期望的信号频率

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 52: 第 9 章   F2812 事件管理器( EVA/B )

bull 在实际应用中很多部件内部都有自己的积分器比如电机本身就是一个非常理想的低通滤波器 PWM 信号的一个很重要的用途就是数字电机控制bull 在电机控制系统中 PWM 信号控制功率开关器件的导通和关闭功率器件为电机的绕组提供期望的电流和能量功率器件提供相电流的频率和能量可以控制电机的转速和转矩这样提供给电机的控制电流和电压都是调制信号而且这个调制信号的频率比 PWM 载波频率要低采用

PWM 控制方式可以为电机绕组提供良好的谐波电压和电流避免因为环境变化产生的电磁扰动并且能够显著的提高系统的功率因数未能够给电机提供具有足够驱动能力的正弦波控制信号可以采用 PWM 输出信号经过 NPN或 PNP 功率开关管实现如图 917 所示

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 53: 第 9 章   F2812 事件管理器( EVA/B )

bull 采用功率开关管在输出大电流的情况下很难控制开关管工作在线性区从而使系统产生bull 很大的热损耗降低电源的使用效率不过可以通过使开关管工作在静态切换状态( On Ice =bull Icesat Off Ice = 0 )在该状态开关管就有较小功率损耗

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 54: 第 9 章   F2812 事件管理器( EVA/B )

933 与比较器相关的 PWM 电路bull 如图 918 所示 EVA 模块的 PWM 电路功能框图它包含以下功能单元bull 1048698 非对称 对称波形发生器bull 1048698 可编程死区单元( DBU )bull 1048698 输出逻辑bull 1048698 空间矢量( SV ) PWM状态机bull EVB 模块的 PWM 电路功能模块框图与

EVA 模块的一样只是改变相应的寄存器配置bull 另外非对称 对称波形发生器与在通用定时器中的一样

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 55: 第 9 章   F2812 事件管理器( EVA/B )

EVA 模块的 PWM 电路功能框图

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 56: 第 9 章   F2812 事件管理器( EVA/B )

bull C28x 处理器上集成的 PWM 电路能够在电机控制和运动控制等应用领域中减少CPU 的开销和用户的工作量与比较单元相关的 PWM 电路的 PWM 波形的产生由以下寄存器控制对于 EVA 模块由 T1CON COMCONA ACTRA 和 DBTCONA 控制对于 EVB 模块由 T3CON COMCONB ACTRB 和 DBTCONB 控制每个事件管理器模块( EVA 和 EVB )可以产生 PWM 波形比较器及相关 PWM 信号输出可实现功能如下

bull 1048698 5 个独立的 PWM 输出其中 3 个由比较单元产生 2 个由通用定时器产生另外bull 还有 3 个由比较单元产生的 PWM互补输出bull 1048698 比较单元产生的 PWM 输出的死区可编程配置bull 1048698 输出脉冲信号的死区的最小宽度为一个 CPU 时钟周期bull 1048698 最小的脉冲宽度是一个 CPU 时钟周期脉冲宽度调整的最小量也是一个 CPU 时bull 钟周期bull 1048698 PWM最大分辨率为 16 位bull 1048698 双缓冲结构可快速改变 PWM 的载波频率bull 1048698 双缓冲结构可快速改变 PWM 的脉宽bull 1048698 带有功率驱动保护中断bull 1048698 能够产生可编程的非对称对称和空间矢量 PWM 波形bull 1048698 比较寄存器和周期寄存器可自动装载减小 CPU 的开销

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 57: 第 9 章   F2812 事件管理器( EVA/B )

934 PWM 输出逻辑及死区控制9341 PWM 输出逻辑bull 输出逻辑电路决定了比较发生匹配时输出引脚

PWMx ( x = 1ndash12 )的输出极性和需要执行的操作与每个比较单元相关的输出可被规定为低电平有效高电平有效强制低或强制高可以通过适当的配置 ACTR 寄存器来确定 PWM 输出的极性和操作当下列任意事件发生时所有的 PWM 输出引脚被置于高阻状态bull 1048698 软件清除 COMCONx[9] 位bull 1048698 当 PDPINTx 未被屏蔽时硬件将 PDPINTx 引脚拉低bull 1048698 发生任何复位事件时bull 有效的 PDPINTx (当被使能时)引脚和系统复位使寄存器 COMCONx 和 ACTRx 设置无效

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 58: 第 9 章   F2812 事件管理器( EVA/B )

bull 如图 919给出了输出逻辑电路( OLC )的方框图比较单元的输出逻辑的输入包括bull 1048698 来自死区单元的 DTPH1 DTPH1

DTPH2 DTPH2 DTPH3 和 DTPH3 和比bull 较匹配信号bull 1048698 寄存器 ACTRx 中的控制位bull 1048698 PDPINTx 和复位信号bull 比较单元输出逻辑的输出包括bull 1048698 PWMx x = 1ndash6 (对于 EVA )bull 1048698 PWMy y = 7ndash12 对于 EVB )bull ACTRx[0minus1 2minus3 or 10minus11]

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 59: 第 9 章   F2812 事件管理器( EVA/B )

9342 死区控制bull 在许多运动 电机和功率电子应用中常将功率器件上下臂串联起来控制上下被控的臂绝对不能同时导通否则会由于短路而击穿因而需要一对不重叠的 PWM 输出( DTPHx 和 DTPHx )正确的开启和关闭上下臂这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定这种延时就是我们这里提到的死区bull 死区控制为避免功率逆变电路中的ldquo短通rdquo提供了有效的控制方式所谓ldquo短通rdquo是指在同一相位上的上下臂同时导通一旦产生ldquo短通rdquo将会有很大的电流流过开关管短通主要是由于同一相位的上下臂由同一个 PWM 信号的正反相控制开关管在状态切换过程中开启快于闭合尤其是对于 FET 管尤为突出从而导致开关管的上下臂同时导通即便是在一个 PWM 周期内同时导通的时间非常短流过的电流也非常有限但在频繁开关过程中功率管会产生很大的热量并且会影响功率逆变和供电线路因此在系统设计过程中要绝对避免这种情况

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 60: 第 9 章   F2812 事件管理器( EVA/B )

bull 为避免产生短通状态可以采用两种方法调整功率管或者调整 PWM控制信号第一种方法主要是调整功率管的闭合时间使得功率管的断开比闭合快可以在开关管的门电路一侧增加电阻和二级管(具有低通滤波特性)加大开关闭合的延时bull 第二种方法是在互补的 PWM 控制信号中增加死区使一侧开关管闭合与另一侧开关管断开有一定的延时这样可以避免同时导通而且

C28x 信号处理器提供死区控制的硬件支持不需要 CPU 的干预而且还可以根据系统的具体需求通过软件调整死区时间的大小bull 事件管理器模块( EVA 模块和 EVB 模块)都有各自独立的可编程死区控制单元(分别是 DBTCONA 和 DBTCONB )可编程死区控制单元有如下特点bull 1048698 一个 16 位死区控制寄存器 DBTCONx (可读写)bull 1048698 一个 16 位输入时钟预定标器 x1 x2 x4 x8 x16

x32 bull 1048698 CPU 时钟输入bull 1048698 3 个 4 位递减计数寄存器bull 1048698 控制逻辑

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 61: 第 9 章   F2812 事件管理器( EVA/B )

bull 分别由比较单元 1 2 和 3 的非对称 对称波形产生器提供的 PH1 PH2 和 PH3 作为死区单元的输入死区单元的输出是DTPH1 DTPH1_ DTPH2 DTPH2_ DTPH3 和 DTPH3_ 它们分别相对应于 PH1 PH2 和 PH3 对于每一个输入信号 PHx 产生两个输出信号 DTPHx 和DTPHx_ 当比较单元和其相关输出的死区未被使能时这两个输出信号跳变边沿完全相同(信号本身相反)当比较单元的死区单元使能时这两个信号的跳变沿被一段称作死区的时间间隔分开这个时间段由 DBTCONx 寄存器的位来决定假设 DBTCONx[11ndash8] 中的值为m且DBTCONx[4ndash2] 中的值相应的预定标参数为 xp这时死区值为 ( pm) 个 HSPCLK 时钟周期

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 62: 第 9 章   F2812 事件管理器( EVA/B )

934 PWM 信号的产生bull 为产生一个 PWM 信号定时器需要重复按照 PWM 周期进行计数比较寄存器用于保持调制值比较寄存器中的值一直与定时器计数器的值相比较当两个值匹配时 PWM 输出就会产生跳变当两个值产生第二次匹配或一个定时器周期的结束时就会产生第二次输出跳变通过这种方式就会产生一个周期与比较寄存器值成比例的脉冲信号在比较单元中重复完成计数匹配输出的过程就产生了 PWM 信号bull 在 EV 模块中比较单元可以产生非对称和对称 PWM 波形另外 3 个比较单元结合使用还可以产生三相对称空间矢量 PWM 输出边沿触发或非对称 PWM 信号的特点是不关于 PWM 周期中心对称脉冲的宽度只能从脉冲一侧开始变化为产生非对称的

PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器DBTCONx ( 118 )的 DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM输出通道使用一个死区值

bull 软件配置 ACTRx 寄存器后与比较单元相关的一个 PWM 输出引脚将产生 PWM 信号与此同时另一个 PWM 输出引脚在 PWM 周期的开始中间或结束处保持低电平(关闭)或高电平(开启)这种用软件可灵活控制的 PWM 输出适用于开关磁阻电机的控制

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 63: 第 9 章   F2812 事件管理器( EVA/B )

9341 非对称 PWM 信号的产生bull 通用定时器 1 (或通用定时器 3 )开始后比较寄存器在执行每个 PWM 周期过程中可重bull 新写入新的比较值从而可以调整控制功率器件的导通和关闭的 PWM 输出的占空比由于bull 比较寄存器带有映射寄存器所以在一个周期内的任何时候都可以将新的比较值写入到比较bull 寄存器同样可以随时向周期寄存器写入新的值从而可以改变 PWM 的周期或强制改变bull PWM 的输出方式

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 64: 第 9 章   F2812 事件管理器( EVA/B )

bull 为产生非对称的 PWM 信号通用定时器要设置为连续递增计数模式周期寄存器装入所需的 PWM 载波周期的值 COMCONx 寄存器使能比较操作并将相应的输出引脚设置成 PWM 输出如果需要设置死区通过软件将所需的死区时间值写入到寄存器 DBTCONx ( 118 )的DBT ( 30 )位做为 4 位死区定时器的周期所有的 PWM 输出通道使用一个死区值

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 65: 第 9 章   F2812 事件管理器( EVA/B )

9342 对称 PWM 信号的产生bull 对称 PWM 信号关于 PWM 周期中心对称对称 PWM 信号相对非对称 PWM 信号的优势在于一个周期内在每个 PWM 周期的开始和结束处有两个无效的区段bull 当使用正弦调整时 PWM 产生的交流电机(如感应电机直流电机)的电流对称

PWM 信号比非对称的 PWM 信号产生的谐波更小

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 66: 第 9 章   F2812 事件管理器( EVA/B )

对称 PWM 信号产生波形

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 67: 第 9 章   F2812 事件管理器( EVA/B )

bull 比较单元和 PWM 电路产生对称和非对称 PWM 波形基本是相似唯一不同的是产生对称波形需要将通用定时器1 (或通用定时器 3 )设置为连续增 减计数模式每个对称 PWM 波形产生周期产生两次比较匹配一次匹配在前半周期的递增计数期间另一次匹配在后半周期的递减计数期间一个新装载的比较值在后半周期匹配生效这样可能提前或延迟 PWM 脉冲的第二个边沿的产生这种PWM 波形产生的特性可以弥补在交流电机控制中由于死区而引起的电流误差由于比较寄存器带映射寄存器在一个周期内的任何时候都可以装载新的值同样在周期寄存器内的任何时候新值可写到周期寄存器和比较方式控制寄存器中以改变 PWM 周期或强制改变 PWM 的输出方式

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 68: 第 9 章   F2812 事件管理器( EVA/B )

9343 事件管理器 SVPWM 波形产生bull EV 模块的硬件结构极大地简化了空间矢量 PWM 波形的产生此外软件还可以控制产生空间矢量 PWM 输出为产生空间矢量 PWM 输出用户软件必须完成下列任务bull 1048698 配置 ACTRx 寄存器确定比较输出引脚的极性bull 1048698 配置 COMCONx 寄存器使能比较操作和空间矢量 PWM 模式将

CMPRx 重新装载的条件设置为下溢bull 1048698 将通用定时器 1 (或通用定时器 3 )设为连续增 减计数模式以便启动定时器bull 然后用户软件需要确定在二维 d-q坐标系内的电机电压 Uout 并分解

Uout 每个 PWM 周期完成下列操作bull 1048698 确定两个相邻矢量 Ux 和 Ux+60 bull 1048698 确定参数 T1 T2 和 T0 bull 1048698 将 Ux 对应的开关状态写到 ACTRx[14ndash12] 位并将 1写入 ACTRx[15]中或将bull Ux+60 对应的开关状态写到 ACTRx[14ndash12] 中将 0写入 ACTRx[15] 中bull 1048698 将值( 12 T1 )和( 12 T1 + 12 T2 )分别写到 CMPR1 和 CMPR2中

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 69: 第 9 章   F2812 事件管理器( EVA/B )

1 空间矢量 PWM 的硬件bull 每个空间矢量 PWM 周期 EV 模块的空间矢量 PWM 产生硬件完成下列工作bull 1048698 在每个周期的开始根据新 Uy 的状态确定 ACTRx[14ndash12] 设置 PWM 输出bull 1048698 在递增计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第一次比较匹配bull 时如果 ACTRx[15] 位中的值为 1 将 PWM 输出设置为 Uy+60 如果

ACTRx[15]bull 位中的值为 0 将 PWM 输出设置为 Uy ( U0-

60=U300 U360+60=U60 )bull 1048698 在递增计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第二次比bull 较匹配时将 PWM 输出设置为 000 或 111状态它们第二种状态只有 1 位的差别bull 1048698 在递减计数过程中当 CMPR2 和通用定时器 1 在 12 T1 + 12 T2 处产生第一次匹bull 配时将 PWM 输出设置为第二种输出模式bull 1048698 在递减计数过程中当 CMPR1 和通用定时器 1 在 12T1 处产生第二次匹配时将bull PWM 输出置为第一种输出模式

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 70: 第 9 章   F2812 事件管理器( EVA/B )

2 空间矢量 PWM 波形bull 空间矢量 PWM 波形关于每个 PWM 周期中心对称因此也称之为对称空间矢量

PWM bull 图 925给出了对称空间矢量波形的例子

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 71: 第 9 章   F2812 事件管理器( EVA/B )

9344 事件管理器 SVPWM 波形产生bull 使用 EV 定时器产生 T1PWM T2PWM T3PWM T4PWM 和 PWM1-12 波形bull 文件名称 DSP28_EvPwmcbull bull include DSP28_Devicehbull void main ( void )bull bull Step 1 初始化系统控制寄存器 PLL 看门狗时钟等bull InitSysCtrl () bull Step 2 设置 GPIO 功能bull EALLOWbull 使能 PWM 输出引脚bull GpioMuxRegsGPAMUXall = 0x00FF EVA PWM 1-6引脚bull GpioMuxRegsGPBMUXall = 0x00FF EVB PWM 7-12引脚bull EDISbull Step 3 初始化 PIE 中断向量表 vector tablebull 禁止和清除所有 CPU 中断bull DINTbull IER = 0x0000bull IFR = 0x0000bull 初始化 Pie 控制寄存器位默认状态bull InitPieCtrl () bull 将 PIE 向量表设置为特定状态bull InitPieVectTable ()

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 72: 第 9 章   F2812 事件管理器( EVA/B )

bull Step 3 EVA 配置 T1PWM T2PWM PWM1-PWM6bull 初始化定时器bull 初始化 EVA 定时器 1bull EvaRegsT1PR = 0xFFFF 定时器 1 周期bull EvaRegsT1CMPR = 0x3C00 定时器 1 比较器bull EvaRegsT1CNT = 0x0000 定时器 1 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT1CONall = 0x1042bull 初始化 EVA 定时器 2bull EvaRegsT2PR = 0x0FFF 定时器 2 周期bull EvaRegsT2CMPR = 0x03C0 定时器 2 比较器bull EvaRegsT2CNT = 0x0000 定时器 2 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvaRegsT2CONall = 0x1042

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 73: 第 9 章   F2812 事件管理器( EVA/B )

bull 设置 T1PWM 和 T2PWMbull 比较逻辑驱动 T1T2 PWMbull EvaRegsGPTCONAbitTCOMPOE = 1bull 定时器 1 比较器极性设置为低电平有效bull EvaRegsGPTCONAbitT1PIN = 1bull 定时器 2 比较器极性设置为高电平有效bull EvaRegsGPTCONAbitT2PIN = 2bull 使能产生 PWM1-PWM6 的比较功能bull EvaRegsCMPR1 = 0x0C00bull EvaRegsCMPR2 = 0x3C00bull EvaRegsCMPR3 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR1 ndash 高有效bull 输出引脚 2 CMPR1 ndash 低有效bull 输出引脚 3 CMPR2 ndash 高有效bull 输出引脚 4 CMPR2 ndash 低有效bull 输出引脚 5 CMPR3 ndash 高有效bull 输出引脚 6 CMPR3 ndash 低有效bull EvaRegsACTRAall = 0x0666bull EvaRegsDBTCONAall = 0x0000 禁止死区bull EvaRegsCOMCONAall = 0xA600

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 74: 第 9 章   F2812 事件管理器( EVA/B )

bull Step 4 EVB 配置 T3PWM T4PWM 和 PWM7-PWM12bull 初始化定时器bull 初始化 EVB 定时器 3bull 定时器 3 控制 T3PWM 和 PWM7-12bull EvbRegsT3PR = 0xFFFF 定时器 3 周期bull EvbRegsT3CMPR = 0x3C00 定时器 3 比较器bull EvbRegsT3CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT3CONall = 0x1042bull 初始化 EVB 定时器 4bull 定时器 4 控制 T4PWMbull EvbRegsT4PR = 0x00FF 定时器 4 周期bull EvbRegsT4CMPR = 0x0030 定时器 4 比较器bull EvbRegsT4CNT = 0x0000 定时器 3 计数器bull TMODE = 连续递增 递减计数定时器使能比较使能bull EvbRegsT4CONall = 0x1042bull 设置 T3PWM 和 T4PWMbull 比较逻辑驱动 T3T4 PWMbull EvbRegsGPTCONBbitTCOMPOE = 1bull 定时器 3 比较器极性设置为低电平有效bull EvbRegsGPTCONBbitT3PIN = 1bull 定时器 4 比较器极性设置为高电平有效bull EvbRegsGPTCONBbitT4PIN = 2

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 75: 第 9 章   F2812 事件管理器( EVA/B )

bull 使能产生 PWM7-PWM12 的比较功能bull EvbRegsCMPR4 = 0x0C00bull EvbRegsCMPR5 = 0x3C00bull EvbRegsCMPR6 = 0xFC00bull 比较方式控制bull 输出引脚 1 CMPR4 ndash 高有效bull 输出引脚 2 CMPR4 ndash 低有效bull 输出引脚 3 CMPR5 ndash 高有效bull 输出引脚 4 CMPR5 ndash 低有效bull 输出引脚 5 CMPR6 ndash 高有效bull 输出引脚 6 CMPR6 ndash 低有效bull EvbRegsACTRBall = 0x0666bull EvbRegsDBTCONBall = 0x0000 禁止死区bull EvbRegsCOMCONBall = 0xA600bull Step 5 IDLE循环bull 采用示波器观察 PWM 信号波形bull for ( ) bull

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 76: 第 9 章   F2812 事件管理器( EVA/B )

935 比较单元寄存器

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 77: 第 9 章   F2812 事件管理器( EVA/B )

9351 比较控制寄存器

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 78: 第 9 章   F2812 事件管理器( EVA/B )

比较控制寄存器

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 79: 第 9 章   F2812 事件管理器( EVA/B )

9352 比较操作寄存器

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 80: 第 9 章   F2812 事件管理器( EVA/B )

9353 死区定时器控制寄存器bull 每一个比较单元都有一个死区定时器但各比较单元共用一个时钟预定标分频器和死区周期寄存器每个单元的死区可以独立的使能或禁止

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 81: 第 9 章   F2812 事件管理器( EVA/B )

9353 EV 扩展控制寄存器bull EXTCONA 和 EXTCONB 使附加控制寄存器使能和禁止附加 调整的功能可以设置 EXTCONx 寄存器使事件管理器和 240x的事件管理器兼容两个控制寄存器的功能基本相同只是分别控制事件管理器 A和事件管理器 B 图 928 和表 913给出了 EV 扩展寄存器 A 的功能定义

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 82: 第 9 章   F2812 事件管理器( EVA/B )

94 捕获单元bull 941 捕获单元的应用bull 捕获单元能够捕获外部输入引脚逻辑状态并利用内部定时器对外部事件或引脚状态变化进行处理事件管理器 A 有 3 个捕获单元并且每个都有自己的独立输入信号捕获单元以定时器 1 或 2 为时间基准进行计数处理当在外部引脚检测到特定的状态变化时所选用的定时器的值将被捕获并锁存到相应的 2 级 FIFO堆栈中此外捕获单元 3 还可以用来出发 AD变换从而使外部捕获事件同 AD 转换同步

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 83: 第 9 章   F2812 事件管理器( EVA/B )

捕获单元功能模块 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 84: 第 9 章   F2812 事件管理器( EVA/B )

捕获单元功能框图 (EVA)

Can latch onbull rising edgebull falling edgebull both

TTL Signalmin valid width2 CPUCLK lo2 CPUCLK hi

GP Timer 1Counter

T1CNT 15 - 0

EdgeDetect

CAP3TOADC

CAP123

MUX

GP Timer 2Counter

T2CNT 15 - 0

CAPCONA 10 - 9Enable

CAPCONA 14 -12

2-Level DeepFIFO

3

CAPCONA 8

Edge SelectCAPCONA 7 - 2

CAPCONA 15CAPRESET

ADC Start(CAP 3)

CAPFIFOA 13 - 8CAPxFIFO Status

RS

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 85: 第 9 章   F2812 事件管理器( EVA/B )

什么是正交编码器

间隔空隙 4 相位差

LED

shaft rotation

Ch A

Ch B

Quadrature Output from Photo Sensors

4

Incremental Optical Encoder

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 86: 第 9 章   F2812 事件管理器( EVA/B )

正交编码单元功能框图 (EVA)

PWM CircuitsPWM CircuitsPWM Circuits

Output LogicOutput LogicOutput Logic

GP Timer 1 CompareGP Timer 1

GP Timer 2 CompareGP Timer 2

Compare Unit 1Compare Unit 2Compare Unit 3

Capture Units

MUXQEP

Circuit

Output Logic

Output Logic

EV Control Registers Logic

Reset PIETCLKINA TDIRA 2ADC Start

Dat

a B

us

bull

CLKDIR

bullbull

T1PWM_T1CMP

T2PWM_T2CMP

PWM1PWM2PWM3PWM4PWM5PWM6

CAP1QEP1CAP2QEP2CAP3QEPI1bull

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 87: 第 9 章   F2812 事件管理器( EVA/B )

如何通过正交信号来决定位置

Ch A

Ch B

(00) (11)(10) (01)

(AB) =

00

01

11

10

QuadratureDecoder

State Machine

incrementcounter

decrementcounter

Position resolution is 4 degrees

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 88: 第 9 章   F2812 事件管理器( EVA/B )

正向编码连接 (EVA)

bull GP Timer 2 selected as pulse counter

bull Timer Prescaler bypassed (ie Prescale always 1)

Ch A

Ch BCAP1QEP1

CAP2QEP2

QEPdecoder

logic

GP Timer 2

CLK DIR

Index

CA

P3Q

EPI

QEPIE

QEPIQUAL

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 89: 第 9 章   F2812 事件管理器( EVA/B )

bull 一般情况下捕获单元主要有以下几个方面的应用bull 1048698 测量脉冲或数字信号的宽度bull 1048698 自动的启动 AD 转换mdashmdash捕获单元 3 捕获的事件bull 1048698 转轴的速度估计bull 当捕获单元利用定时器为时间基准操作时可以进行低速估计而在低速状态下位置计数精度相对比较低因此如果在低速状态下根据固定时间内的位置改变来计算速度误差比较大因此在估计低速速度时主要采用一定位置变化所需要的时间进行速度估计

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 90: 第 9 章   F2812 事件管理器( EVA/B )

942 捕获单元的结构bull 捕获单元的操作由 4 个 16 位的控制寄存器( CAPCONAB 和 CAPFIFOAB )控制由于捕获单元的时钟由定时器提供在使用时相关的定时器控制寄存器 TxCON ( x =

1 2 3 或 4 )也控制捕获单元的操作概括起来捕获单元有以下特点bull 1048698 一个 16 位的捕获控制寄存器 ( EVAmdashCAPCONA EVBmdashCAPCONB )可读bull 写bull 1048698 一个 16 位捕获 FIFO状态寄存器( EVAmdashCAPFIFOA EVBmdashCAPFIFOB )bull 1048698 可选择通用定时器 1 或 2 ( EVA )和通用定时器 3 或 4 ( EVB )作为时钟基准bull 1048698 6 个 16 位 2 级深的 FIFO堆栈bull 1048698 6 个施密特触发捕获输入引脚 CAP1 到 CAP6 一个输入引脚对应一个捕获单bull 元所有捕获单元的输入和内部 CPU 时钟同步为了捕获输入的跳变输入必bull 须在当前的电平保持两个 CPU 时钟的上升沿如果使用了限制电路限制电路bull 要求的脉冲宽度也必须满足输入引脚 CAP1 和 CAP2 在 EVB 中是 CAP4 和

CAP5 也能被用于正交编码脉冲电路的 QEP 输入bull 1048698 用户可设定的跳变探测(上升沿下降沿或上升下降沿)bull 1048698 6 个可屏蔽的中断标志位每个捕获单元 1 个

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 91: 第 9 章   F2812 事件管理器( EVA/B )

943 捕获单元的操作bull 捕获单元被使能后输入引脚上的跳变将使所选择的通用定时器的计数值装入到相应的bull FIFO堆栈同时如果有一个或多个的有效的捕获值存到

FIFO堆栈( CAPxFIFO 位不等于 0 )bull 将会使相应的中断标志位置位如果中断标志未被屏蔽将产生一个外设中断申请每次捕bull 获到新的计数值存入到 FIFO堆栈时捕获 FIFO状态寄存器 CAPFIFOx 相应的位就进行调整bull 实时地反映 FIFO堆栈的状态从捕获单元输入引脚发生跳变到所选通用定时器的计数值被bull 锁存需 2 个 CPU 时钟周期的延时复位时所有捕获单元的寄存器都被清为 0

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 92: 第 9 章   F2812 事件管理器( EVA/B )

bull 9431 捕获单元时钟基准的选择bull 对于 EVA 模块捕获单元 3 有自己的独立时钟基准而捕获单元 1 和 2共同使用一个时间基bull 准这允许同时使用两个通用定时器捕获单元 1 和 2共用 1 个捕获单元 3 用 1 个对于 EVBbull 模块捕获单元 6 有一个独立的时钟基准捕获单元的操作不会影响任何通用定时器的任何bull 操作也不会影响与通用定时器的操作相关的比较 PWM 操作为使捕获单元能够正常工作bull 必须配置下列寄存器bull 1048698 初始化 CAPFIFOx 寄存器清除相应的状态位bull 1048698 设置使用的通用定时器的工作模式bull 1048698 设置相关的通用定时器的比较寄存器或周期寄存器bull 1048698 适当的配置 CAPCONA 或 CAPCONB 寄存器

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 93: 第 9 章   F2812 事件管理器( EVA/B )

9432 捕获单元 FIFO 堆栈的使用bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元 FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 94: 第 9 章   F2812 事件管理器( EVA/B )

bull 1 ) 第一次捕获bull 当捕获单元的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的

FIFO堆栈的顶层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则 FIFO状态位被复位为 00 bull 2 ) 第二次捕获bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求bull 3 ) 第三次捕获bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请求

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 95: 第 9 章   F2812 事件管理器( EVA/B )

9432 捕获中断bull 当捕获单元完成一个捕获时在 FIFO 中至少有一个有效的值( CAPxFIFO 位显示不等于bull 0 时)如果中断未被屏蔽中断标志位置位产生一个外设中断请求因此如果使用了中bull 断则可用中断服务子程序读取到一对捕获的计数值如果不希望使用中断则可通过查询bull 中断标志位或堆栈状态位来确定是否发生了两次捕获事件若已发生两次捕获事件则捕获bull 到的计数值可以被读出

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 96: 第 9 章   F2812 事件管理器( EVA/B )

944 捕获单元相关寄存器

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 97: 第 9 章   F2812 事件管理器( EVA/B )

9441 捕获单元控制寄存器

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 98: 第 9 章   F2812 事件管理器( EVA/B )

94412 捕获单元结果及其状态寄存器bull 每个捕获单元有一个专用的两级深的 FIFO堆栈顶部堆栈包括 CAP1FIFO CAP2FIFO 和 CAP3FIFO ( EVA )或 CAP4FIFO CAP5FIFO 和 CAP6FIFO ( EVB )底部堆栈包括 CAP1FBOT CAP2FBOT 和

CAP3FBOT ( EVA )或 CAP4FBOT CAP5FBOT 和CAP6FBOT ( EVB )

bull 所有 FIFO堆栈的顶层堆栈寄存器是只读寄存器它存放相应捕获单元捕获到的最早的计数值因此读取捕获单元FIFO堆栈时总是返回堆栈中最早的计数值当读取 FIFO堆栈的顶层寄存器的计数值时堆栈底层寄存器的新计数值(如果有)将被压入顶层寄存器

bull 如果需要也可以读取 FIFO堆栈的底层寄存器读访问FIFO堆栈的底层寄存器可使 FIFO 的状态位变为 01 (如果先前是 10 或 11 )如果原来 FIFO状态位是 01 读取底层 FIFO 寄存器时 FIFO状态的位变为 00 (即为空)

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 99: 第 9 章   F2812 事件管理器( EVA/B )

bull 捕获单元 FIFO状态寄存器 CAPFIFOA反映了三个 FIFO 结果寄存器的状态当捕获单元bull 的输入引脚出现跳变时捕获单元将使用的通用定时器的计数值写入到空的 FIFO堆栈的顶bull 层寄存器同时相应的状态位置为 01 如果在下一次捕获操作之前读取了 FIFO堆栈则bull FIFO状态位被复位为 00 bull 如果在前一次捕获计数值被读取之前产生了另一次捕获新捕获到的计数值送至底层的bull 寄存器同时相应的寄存器状态位置为 10 如果在下一次捕获操作之前对 FIFO堆栈进行bull 了读操作底层寄存器中新的计数值就会被压入到顶层寄存器同时相应的状态位被设置为bull 01 第二次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设中断请bull 求bull 如果捕获发生时 FIFO堆栈已有捕获到的两个计数值则在顶层寄存器中最早的计数bull 值将被弹出并被丢弃而堆栈底层寄存器的值将被压入到顶层寄存器中新捕获到的计数值bull 将被压入到底层寄存器中并且 FIFO 的状态位被设置为 11 以表明 1 个或更多旧的捕获计数值bull 已被丢弃第三次捕获使相应的捕获中断标志位置位如果中断未被屏蔽则产生一个外设bull 中断请求

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 100: 第 9 章   F2812 事件管理器( EVA/B )

95 正交编码脉冲 ( QEP ) 单元bull 951 光电编码器原理bull 光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量bull 的传感器是目前应用最多的传感器一般的光电编码器主要由光栅盘和光电检测装置组成bull 在伺服系统中由于光电码盘与电动机同轴电动机旋转时光栅盘与电动机同速旋转经发bull 光二极管等电子元件组成的检测装置检测输出若干脉冲信号其原理示意图如图 934 所示bull 通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速此外为判断旋转方bull 向码盘还可提供相位相差 90 两个通道的光码输出根据双通道光码的状态变化确定电机bull 的转向根据检测原理编码器可分为光学式磁式感应式和电容式根据其刻度方法及bull 信号输出形式可分为增量式绝对式以及混合式三种

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 101: 第 9 章   F2812 事件管理器( EVA/B )

952 正交编码脉冲 ( QEP ) 单元结构及其接口bull 每个事件管理器模块都有一个正交编码脉冲( QEP )电路如果 QEP 电路被使能可以对 CAP1QEP1 和

CAP2QEP2 (对于 EVA )或 CAP4QEP3 和 CAP5QEP4 (对于EVB )引脚上的正交编码脉冲进行解码和计数 QEP 电路可用于连接一个光电编码器获得旋转机器的位

bull 置和速率等信息如果使能 QEP 电路 CAP1CAP2 和CAP4CAP5 引脚上的捕获功能将被禁止

bull 正交编码脉冲 ( QEP ) 单元通常情况下用来从安装在旋转轴上的增量编码电路获得方向和速度信息如图 935 所示两个传感器产生ldquo通道 Ardquo 和ldquo通道 Brdquo 两个数字脉冲信号通道 A 和通道 B 两个数字脉冲可以产生 4 种状态正交编码脉冲 ( QEP ) 单元的定时器根据状态变化次序和状态转换速度递增或者递减计数在固定的时间间隔内读取并比较定时器计数器的值就可以获得速度或者位置信息

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 102: 第 9 章   F2812 事件管理器( EVA/B )

bull 3 个 QEP 输入引脚同捕获单元 1 2 3 (或4 5 6 )共用外部接口引脚的具体功能由CAPCONx 寄存器设置

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 103: 第 9 章   F2812 事件管理器( EVA/B )

953 QEP 电路时钟bull 通用定时器 2 ( EVB由通用定时器 4 )为

QEP 电路提供基准时钟通用定时器作为QEP 电路的基准时钟时必须工作在定向增 减计数模式图 937给出了 EVA 的QEP 电路的方框图图 938给出了 EVB的 QEP 电路的方框图

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 104: 第 9 章   F2812 事件管理器( EVA/B )

954 QEP 的解码bull 正交编码脉冲是两个频率可变有固定 14周期相位差(即 900 )的脉冲序列当电机轴上的光电编码器产生正交编码脉冲时可以通过两路脉冲的先后次序确定电机的转动方向根据脉冲的个数和频率分别确定电机的角位置和角速度

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 105: 第 9 章   F2812 事件管理器( EVA/B )

9541 QEP 电路bull EV 模块中的 QEP 电路的方向检测逻辑确定哪个脉冲序列相位超前然后产生一个方向信号作为通用定时器 2 (或

4 )的方向输入如果 CAP1QEP1 (对于 EVB 是CAP4QEP3 )引脚的脉冲输入是相位超前脉冲序列那么定时器就进行递增计数相反如果 CAP2QEP2

bull (对于 EVB 是 CAP5QEP4 ) 引脚的脉冲输入是相位超前脉冲序列则定时器进行递减计数bull 正交编码脉冲电路对编码输入脉冲的上升沿和下降沿都进行计数因此由 QEP 电路产生的通用定时器(通用定时器 2 或 4 )的时钟输入是每个输入脉冲序列频率的 4倍这个正交时钟作为通用定时器 2 或 4 的输入时钟

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 106: 第 9 章   F2812 事件管理器( EVA/B )

9542 QEP 计数bull 通用定时器 2 (或 4 )总是从它的当前值开始计数在使能 QEP 模式前将所需的值装载bull 到通用定时器的计数器中当选择 QEP 电路作为时钟源时定时器的方向信号

TDIRAB 和bull TCLKINAB 将不起作用用 QEP 电路作为时钟通用定时器的周期下溢上溢和比较中bull 断标志在相应的匹配时产生如果中断未被屏蔽将产生外设中断请求

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 107: 第 9 章   F2812 事件管理器( EVA/B )

955 QEP 电路的寄存器设置bull 启动 EVA 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 2 的计数器周期和比较寄存器bull 1048698 配置 T2CON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONA 寄存器以使能正交编码脉冲电路bull 启动 EVB 的 QEP 电路的设置如下bull 1048698 根据需要将期望的值载入到通用定时器 4 计数器周期和比较寄存器bull 1048698 配置 T4ON 寄存器使通用定时器 2 工作在定向增 减模式 QEP 电路作为时钟bull 源并使能使用的通用定时器bull 1048698 设置 CAPCONB 寄存器以使能正交编码脉冲电路

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 108: 第 9 章   F2812 事件管理器( EVA/B )

956 QEP 电路应用bull 光电编码器的图像传感器由内部的 LED 触发当 LED 光被遮挡时传感器送出逻辑ldquo 0rdquo bull 当光线穿过编码器的 1024 个缝隙的每格时送出逻辑ldquo 1rdquo 两个图像传感器通过通道 A 和 B 发bull 送逻辑信息 TMS320F2812片内 QEP (计数编码脉冲)检测两个通道的上升言和下降沿bull 由 QEP 检测到的边沿数存放在计数器

T3CNT 当 QEP 模式设定后 QEP 的脉冲即作为时钟bull T3 如图 940 所示

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 109: 第 9 章   F2812 事件管理器( EVA/B )

bull 电机内旋转一周(机械)嵌入式编码器产生 1024 个脉冲每个缝隙有四个边缘两个通道各有 1 个上升沿和一个下降沿也就是说电机每旋转一周 QEP 检测到4096 个边沿

bull QEP 通过检测两个通道的先后次序判断转子的转向边沿(上升或下降沿)数存储处在bull T3CNT 根据所选旋转的方向来确定

T3CNT 是增量式还是减量式一旦选择了QEP 模式在一个周期 FFFFh 时钟 T3 将自动覆盖

bull 机械加速度通过两个采样周期的旋转角度计算

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 110: 第 9 章   F2812 事件管理器( EVA/B )

当计算的角度超过 360 度时软件同样要作适当的处理

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 111: 第 9 章   F2812 事件管理器( EVA/B )

TMS320F2812 QEP 电路初始化及应用bull bull 文件名称 F28XQEPCbull

bull include DSP28_Devicehbull include f28xqephbull include f28xbmskhbull void F28X_EV1_QEP_Init ( QEP p )bull bull EvaRegsCAPCONall = QEP_CAP_INIT_STATE 设置捕捉单元 bull EvaRegsT2CONall = QEP_TIMER_INIT_STATE 设置捕捉定时器 bull EvaRegsT2PR = 0xFFFFbull EvaRegsEVAIFRCbitCAP3INT = 1 清除 CAP3 标志 bull EvaRegsEVAIMRCbitCAP3INT = 1 使能 CAP3 中断 bull GpioMuxRegsGPAMUXall |= 0x0700 配置捕捉单元的引脚 bull

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144
Page 112: 第 9 章   F2812 事件管理器( EVA/B )

bull void F28X_EV1_QEP_Calc ( QEP p )bull bull long tmpbull p-gtdir_QEP = 0x4000ampEvaRegsGPTCONAallbull p-gtdir_QEP = p-gtdir_QEPgtgt14bull p-gttheta_raw = EvaRegsT2CNT + p-gtcal_anglebull tmp = ( long )( p-gttheta_rawp-gtmech_scaler ) Q0Q26 = Q26 bull tmp amp= 0x03FFF000bull p-gttheta_mech = ( int )( tmpgtgt11 ) Q26 -gt Q15 bull p-gttheta_mech amp= 0x7FFFbull p-gttheta_elec = p-gtpole_pairsp-gttheta_mech Q0Q15 = Q15 bull p-gttheta_elec amp= 0x7FFFbull bull void F28X_EV1_QEP_Isr ( QEP p )bull bull p-gtQEP_cnt_idx = EvaRegsT2CNTbull EvaRegsT2CNT = 0bull p-gtindex_sync_flag = 0x00F0bull

  • Slide 1
  • 章节结构
  • 91 事件管理器概述
  • 事件管理器概述(续)
  • 事件管理器功能框图 (EVA)
  • 92 通用定时器
  • 通用定时器GP的功能框图
  • GP 连续增计数模式
  • GP 连续增减计数模式
  • 后台功能
  • 921 通用定时器计数模式
  • 922 定时器的比较操作
  • 通用定时器比较操作功能框图
  • PWM比较输出和中断
  • GP 定时器寄存器
  • EVA全比较单元
  • 什么是PWM
  • PWM 信号调制
  • PWM Motor控制的优势
  • 9223 TxPWM 输出非对称波形
  • 非对称 PWM 波形
  • 9224 TxPWM 输出对称波形
  • 对称PWM 波形
  • 9221 定时器PWM 输出(TxPWM)逻辑控制
  • 通用定时器比较输出
  • 高阻状态
  • 连续增计数模式下的通用定时器比较PWM输出
  • Slide 28
  • 9225 通用定时器应用举例
  • Slide 30
  • Slide 31
  • Slide 32
  • Slide 33
  • Slide 34
  • Slide 35
  • Slide 36
  • 923 通用定时器寄存器
  • 9231 通用定时器全局控制寄存器
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • 9232 通用定时器计数寄存器(TxCNT其中x=1234)
  • 9233 通用定时器比较寄存器(TxCMPR其中x=1234)
  • 9234 通用定时器周期寄存器(TxPR其中x=1234)
  • 9235 通用定时器控制寄存器(TxCON)
  • Slide 47
  • Slide 48
  • Slide 49
  • Slide 50
  • Slide 51
  • 93 比较单元及PWM 输出
  • Slide 53
  • 电源逆变器
  • 死区的产生
  • 可编程死区模块 (EVA)
  • 死区定时器控制器 (EVA) DBTCONA 0x007415
  • Slide 58
  • Slide 59
  • 932 PWM 信号
  • Slide 61
  • Slide 62
  • Slide 63
  • 933 与比较器相关的PWM 电路
  • EVA模块的PWM电路功能框图
  • Slide 66
  • 934 PWM 输出逻辑及死区控制
  • Slide 68
  • Slide 69
  • 9342 死区控制
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • 934 PWM 信号的产生
  • 9341 非对称PWM 信号的产生
  • Slide 78
  • Slide 79
  • 9342 对称PWM 信号的产生
  • 对称PWM信号产生波形
  • Slide 82
  • 9343 事件管理器SVPWM 波形产生
  • 1空间矢量PWM 的硬件
  • 2空间矢量PWM 波形
  • Slide 86
  • 9344 事件管理器SVPWM 波形产生
  • Slide 88
  • Slide 89
  • Slide 90
  • Slide 91
  • 935 比较单元寄存器
  • 9351 比较控制寄存器
  • 比较控制寄存器
  • Slide 95
  • Slide 96
  • 9352 比较操作寄存器
  • Slide 98
  • 9353 死区定时器控制寄存器
  • Slide 100
  • 9353 EV 扩展控制寄存器
  • Slide 102
  • 94 捕获单元
  • 捕获单元功能模块 (EVA)
  • 捕获单元功能框图 (EVA)
  • 什么是正交编码器
  • 正交编码单元功能框图 (EVA)
  • 如何通过正交信号来决定位置
  • 正向编码连接 (EVA)
  • Slide 110
  • Slide 111
  • 942 捕获单元的结构
  • Slide 113
  • 943 捕获单元的操作
  • Slide 115
  • 9432 捕获单元FIFO 堆栈的使用
  • Slide 117
  • 9432 捕获中断
  • 944 捕获单元相关寄存器
  • 9441 捕获单元控制寄存器
  • Slide 121
  • 94412 捕获单元结果及其状态寄存器
  • Slide 123
  • Slide 124
  • Slide 125
  • 95 正交编码脉冲 (QEP) 单元
  • Slide 127
  • 952 正交编码脉冲 (QEP) 单元结构及其接口
  • Slide 129
  • Slide 130
  • 953 QEP 电路时钟
  • Slide 132
  • Slide 133
  • 954 QEP 的解码
  • 9541 QEP 电路
  • Slide 136
  • 9542 QEP 计数
  • 955 QEP 电路的寄存器设置
  • 956 QEP 电路应用
  • Slide 140
  • Slide 141
  • Slide 142
  • TMS320F2812 QEP 电路初始化及应用
  • Slide 144