STM32G4高精度定时器的同步功能

2024-03-18 05:44

本文主要是介绍STM32G4高精度定时器的同步功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、引言

STM32G474 所含的高精度定时器(HRTIMER)其实包含了多个定时器,多个定时器之间可以单独工作,也可以进行同步,且高精度定时器还能与片上的其他定时器以及其他芯片进行同步,本文将对高精度定时器的同步功能进行介绍。

2、定时器同步结构

HRTIME 的整体架构如下图所示,内含由 7 个定时器,主定时器 Master timer 与子定时器Timer A~F,为 1 主 6 从结构,同步功能主要分为两部分:

  • 内部同步:各定时器通过内部的 Cross-timer counter reset bus 互连,见图中红框标识部分;
  • 外部同步:主定时器通过 External Synchronization input/output 单元与片上其他定时器以及片外其他MCU 的定时器进行同步,如图中绿框标识部分。

整个同步功能的主体是主定时器,其主要作用就是用来给所有子定时器提供统一的同步事件,以及将同步事件提供给外部或是接收外部输入的同步事件。另外子定时器也可将自身的某些事件作为同步事件发送到 Cross-timer counter reset bus 上。

在同步功能中,将提供同步信号的定时器称为主,接收同步信号的称为从。在接收到同步信号后,从定时器将自身的计数器复位到 0 或是启动计数,从而与主定时器实现同步或形成一定的移相。
在这里插入图片描述

3、高精度定时器内部同步

通过内部的互联总线 Cross-timer counter reset bus,除主定时器 Master Timer 外,每个定时器都可以接收总线上其他定时器发出的同步信号,同时所有定时器都可将自身的某些事件作为同步信号发送到总线上。以定时器 Timer A 为例,其可以接收到来自 Cross-timer counter reset bus的同步事件包括:

  • Master timer period event
  • Master timer cmp1/2/3/4 event
  • Timer B cmp1/2/4 event
  • Timer C cmp1/2/4 event
  • Timer D cmp1/2/4 event
  • Timer E cmp1/2/4 event
  • Timer F cmp1/2 event

通过 Cross-timer counter reset bus,可以将所有的子定时器都与主定时器进行同步,也可以将所有的定时器分为几组,分别工作。

下面以子定时器都与主定时器同步为例进行说明,借助 CubeMx 配置工具,轻松完成如下图所示的四相 90°交错 PWM 的产生。

在这里插入图片描述

Master Timer 的 PER/CMP1/CMP2/CMP3 事件分别作为 Timer A/B/C/D 的同步源,复位对应的定时器计数器。 在子定时器中,分别选择对应的来自 Master Timer 的事件作为自身的同步源。 在 CubeMx 中的相关配置如下的截图(截图仅示意同步功能部分的配置)。

Master Timer 中的配置:
在这里插入图片描述

更加简单的方式是在使能 CMP/1/2/3 后,直接选择 interleaved Mode 的 Quad 选项,这样CMP1/2/3 就会自动等于 PER/4,(PER2)/4,(PER3)/4,后续即使 Timer_PER 的值更新,CMP1/2/3 也会按照该规则自动更新,无需软件参与。

在这里插入图片描述
Timer A 中的配置:
在这里插入图片描述
Timer B 中的配置:
在这里插入图片描述
Timer C 中的配置:
在这里插入图片描述
Timer D 中的配置:
在这里插入图片描述

按照以上的同步配置,并设置 PWM 的 Duty = 20%,实测到的四相 90°交错 PWM 波形如下所示。
在这里插入图片描述

4、高精度定时器外部同步

HRTIME 通过其 Master Timer 的 External Synchronization input/output 单元与片上其他定时
器以及片外其他 MCU 的定时器进行同步。
当 HRTIME 做为主时,其输出的同步事件可由其内部的以下事情产生:

  • Master Timer start event
  • Master Timer CMP1 event
  • Timer A start event
  • Timer A CMP1 event

该同步事件可以在管脚 HRTIM_SCOUT 上输出一个高或是低的脉冲,宽度为 16 个 fhrtim 周期,同时也可以映射到内部的 ITR10,ITR10 可以直接作为片上其他定时器的同步事件。
在这里插入图片描述
当 HRTIME 做为从时,其接收的同步事件可以来自于:

  • •片上定时器 TIM1 的 TRGO
  • 同步输入管脚 HRTIM_SCIN 的上升沿

接收到同步信号后,可以设置 HRTIME 内部定时器是复位还是启动。

下面以 HRTIME 做为主,TIM1 作为从, HRTIME 的 Timer A 产生一路 PWM,TIM1 产生一路PWM,两路 PWM 构成两相 180°交错来说明 HRTIME 的外部同步功能。在 CubeMx 中的关键配置如下截图所示(截图仅示意同步功能的配置)。

HRTIME 配置,HRTIME 作为主,Master timer 的 CMP1 事件做为同步事件,且同步事件映射到内部的 ITR10(也可以将同步信号输出到 HRTIM_SCOUT,同时将信号连接到 TIM1 的 ETR管脚,由于要多占用两个管脚,不建议该方式)。
同步配置:
在这里插入图片描述

Master Timer 配置(可以修改 CMP1 的值来形成不同的移相值):
在这里插入图片描述
Timer A 配置:
在这里插入图片描述
TIM1 的配置,TIM1 做从,工作在 Reset Mode,PWM 的输出模式为 PWM_MODE1。
在这里插入图片描述
按照以上的同步配置,实测到的两 180°交错 PWM 波形如下所示。
C1: HRTIM_TA1 C2 : TIM1_CH1
C1: HRTIM_TA1 C2 : TIM1_CH1

接下来再以如何在两个 MCU 的 HRTIME 之间完成同步。比如 MCU1 的 HRTIME 做主设备,MCU2 的 HRTIME 做从设备,相关的配置如下截图所示。
MCU1 的 HRTIME 同步配置,Master timer 的 CMP1 事件做为同步事件,同步信号必须输出到 HRTIM_SCOUT 管脚上。
在这里插入图片描述
MCU1 Master Timer 配置(可以修改 CMP1 的值来形成不同的移相值):
在这里插入图片描述
MCU1 Timer A 配置:
在这里插入图片描述
同时需要在程序中添加如下的 PB1 初始化代码,保证同步脉冲能在 PB1 上产生。
在这里插入图片描述
MCU2 的 HRTIME 同步配置,同步信号来自 HRTIM_SCIN。
在这里插入图片描述
MCU2 Timer A 的配置,来自 HRTIM_SCIN 的同步信号让 Timer A 复位并启动计数。
在这里插入图片描述
按照以上的同步配置,并设置 MCU1 与 MCU2 的 Timer A 的 PWM 的 Duty = 20%,实测到的两 180°交错 PWM 波形如下所示。
在这里插入图片描述
C1: MCU1 TA1 C2 : MCU2 TA1 C5 : HRTIM 同步脉冲

通过 HRTIM_SCIN 与 HRTIM_SCOUT,配合 HRTIME 同时做主与从的方式,可以实现多个MCU 之间定时器的同步,如下图示意。
在这里插入图片描述

5、小结

对高精度定时器 HRTIME 的同步功能进行了介绍,基于 STM32G474 和 CubeMx 工具说明如何快速的实现 HRTIME 的各种同步功能。


本文档参考ST官方的《【应用笔记】LAT1173高精度定时器的同步功能》文档。
参考下载地址:https://download.csdn.net/download/u014319604/88971346

这篇关于STM32G4高精度定时器的同步功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/821348

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节