STM32H7的高分辨率定时器HRTIM基础知识


◆ 高分辨率定时器可以产生多达 10 路高分辨率信号。它主要用数字电源、照明,电源耗材,太阳能逆变器和无线充电等应用场合,当然,也可以作为通用目的。
◆ HRTIM 模块化的架构允许产生独立或者叠加波形。通过带的时序控制单元和各种外部事件的配合,可以产生各种信号 PWM,相移等。
◆ HRTIM 定时器还具有定时测量功能和链接到内置 ADC 和 DAC 转换器。并且它还具有轻载管理模式和能够处理各种故障的方案以实现安全关闭。
◆ HRTIM 有多个中断入口函数,使用的时候别搞错了:

HRTIM1_Master_IRQHandler 
HRTIM1_TIMA_IRQHandler 
HRTIM1_TIMB_IRQHandler 
HRTIM1_TIMC_IRQHandler 
HRTIM1_TIMD_IRQHandler 
HRTIM1_TIME_IRQHandler 
HRTIM1_FLT_IRQHandler

HRTIM基础知识

HRTIM 由 6 个定时器组成,分别是 1 个主定时器(Master Timer)和 5 个独立的定时器单元,从
Timer A 到 Timer E。
这 6 个都是 16bit 定时器,每个定时器都包含 1 个独立计数器和 4 个比较单元。
主定时器(Master Timer):
基于 16 位递增计数器。它可通过 4 个比较单元置位/ 复位 10 路输出中的任何一路,并向 5
个定时器单元提供同步信号。其主要用途是使定时器单元受唯一的时钟源控制。交错降压转换器
是一个典型的应用示例,主定时器在其中管理多个单元之间的相移。
5 个定时器 Timer A 到 Timer E:
既可以独立工作,也可以与其它定时器(包括主定时器)配合工作。每个定时器都可控制两路输
出。输出置位/复位事件可以由定时单元比较寄存器触发,或者由主定时器事件、其他定时器的
事件或外部事件触发。
每个定时器的两路输出:
支持 PWM 互补输出,支持添加死区时间。
将载波频率添加到调制信号上。
通过将异步输出置为预定义的安全电平来管理故障事件。
10 个外部事件,可用于任何定时器单元。
可编程极性和边沿有效性。
5 个事件用于快速异步模式。
5 个事件用于可编程数字滤波器。
利用消隐和窗口模式实现伪事件过滤。
多条通道可连接到内置模拟外设。
4 个用于 ADC 转换器的触发信号。
3 个用于 DAC 转换器的触发信号。
3 个用于比较器。
丰富的保护机制。
5 路故障输入可组合使用,而且可以关联到任何定时单元。
可编程极性和边沿有效性。
对谐振变换器配有专门的延时保护。
不同 HRTIM 之间可以做同步输入/输出。

话不多说,直接看框图

在这里插入图片描述
hrtim_in_sync[3:1]
同步输入端,将 HRTIM 与其他内部或外部定时器资源进行同步输入:
hrtim_in_sync[1]:保留。
hrtim_in_sync[2]:时钟源为通用 TIMx 定时器(通过片上互连)。
hrtim_in_sync[3]:时钟源为外部 HRTIM(通过 HRTIM_SCIN 输入引脚)。
hrtim_out_sync[2:1]
同步输出端,用于级联或同步多个片上或片外 HRTIM,由于 H7 只有一个 HRTIM,所以只能同步其
它器件上带的 HRTIM。
hrtim_out_sync[1]:保留。
hrtim_out_sync[2]:目标为片外 HRTIM 或外设(通过 HRTIM_SCOUT 输出引脚)。
hrtim_adc_trg[4:1]
输出端,用于触发 ADC 转换。
hrtim_dac_trg[3:1]
输出端,用于触发 DAC 转换。
hrtim_mst_it[7:1]
输出端,用于发出中断请求。
hrtim_dma[6:1]
输出端,用于发出 DMA 请求。
hrtim_pclk
输入端,APB 时钟。
hrtim_ker_ck
输出端, HRTIM 内核时钟。
hrtim_evtX[4:1] 大写字母 X 的范围是 1 到 10。
输入端,用于接收外部事件,支持接收 10 个事件,每个事件有 4 种输入源可以选择,可选择片上(来自其他内置外设:比较器、ADC 模拟看门狗、TIMx 定时器、触发输出等)或片外(HRTIM_EEVx 输入引脚)。
在这里插入图片描述
HRTIM_FLT[5:1]
hrtim_in_flt[5:1]
故障输入端,5 路片上输入和 5 路片外 HRTIM_FLTx 输入。
当输入信号有效时立即禁止 HRTIM 输出。
hrtim_sys_flt
系统故障输入,比如时钟安全系统、 SRAM 奇偶校验错误、 Cortex®-M7 LOCKUP (HardFault)、
PVD 输出等。
hrtim_upd_en[3:1]
输入端,HRTIM 寄存器更新使能(片上互连)会触发从影子寄存器到活动寄存器的传输。
hrtim_bm_trg
输入端,突发模式触发事件。
hrtim_bm_ck
输入端,突发模式时钟。
对应定时器单元 Timer A,B,C,D,E 的输出,每个定时器有两路。
HRTIM_CHA1
HRTIM_CHA2
HRTIM_CHB1
HRTIM_CHB2
HRTIM_CHC1
HRTIM_CHC2
HRTIM_CHD1
HRTIM_CHD2
HRTIM_CHE1
HRTIM_CHE2

时钟选择

HRTIM支持两种时钟输入,一个是通用定时器时钟输入,另一个是CPU主频时钟输入
在这里插入图片描述:
在这里插入图片描述

HRTIM主定时器

在这里插入图片描述
对于这个框图:
主定时器有1个计数器,4个比较单元,但没有捕获单元和输出。
主定时器的控制寄存器包含主定时器Master Timer 和定时单元Timer A到E的所有定时器使能位。

HRTIM 定时器单元(Timer A 到 E)

5个定时器单元的Timer A到E都是一样的。
框图如下:
在这里插入图片描述对于这个框图,了解到以下几点即可:
◆ 有 1 个计数器,4 个比较单元,2 个捕获单元,带两个输出。
◆ 比较单元 2 和比较单元 4 支持自带延迟。
◆ 事件消隐和窗口模式可以实现伪事件过滤。
◆ REP,CMP1,CMP2,CMP3,CMP 和定时器更新这几个信号可以设置输出端的置位/复位。

HRTIM的分辨率

STM32H7 的主频配置为 400MHz 时,那么 HRTIM 的时钟最高就是 400MHz。对于 H7 系列,HRTIM不支持倍频设置,仅支持 1 分频,2 分频和 4 分频:
在这里插入图片描述
分辨率最高是 G4 系列,可以做到 184ps
在这里插入图片描述

多路PWM 输出示例

在这里插入图片描述
寄存器 HRTIM_PERxR 存储定时器的周期,寄存器 HRTIM_CMP1xR 存储比较值。执行过程如下:
◆ 计数器 Counter 计数到 HRTIM_CMP1xR 存储的比较值时,HRTIM_CHD1 输出端复位。
◆ 计数到 HRTIM_PERxR 时,HRTIM_CHD1 输出端置位,并且 Counter 重新从头开始计数。
理解了单路 PWM 输出后,再看实现这个功能对应的框图就很好理解了:
接下来再来看多路 PWM 输出:
在这里插入图片描述
截图上半部分波形是 Timer D 输出两路:
◆ HRTIM_CHD1 输出是通过 CMP1 以及计数更新实现输出的置位/复位。
◆ HRTIM_CHD2 输出是通过 CMP2 以及计数更新实现输出的置位/复位。
截图下半部分波形是 Timer A 输出两路:
◆ HRTIM_CHA1 输出是通过 CMP1 以及计数更新实现输出的置位/复位。
◆ HRTIM_CHA2 输出是通过 CMP2,CMP3 以及计数更新实现输出的置位/复位。

几个例子可以看看

◆ HRTIM 其它几个例子执行效果展示,方便大家有个感性认识:
⚫ STM32H7 的 HRTIM 配置输出 5 组不同频率,不同占空比的波形,同时 5 组互补输出也是没问
题的。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89211 。
⚫ STM32H7 的 HRTIM 触发 ADC 和 DAC 转换
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89233 。
⚫ STM32H7 的 HRTIM Fault 故障保护功能,可在输出故障时禁止输出
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89232 。
⚫ STM32H7 的 HRTIM 生成任意波形
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89220 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值