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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装wxWidgets

概要 在Linux系统中安装erlang时,需要提前安装wxWidgets! 官方地址: https://docs.wxwidgets.org gitCode地址:https://gitcode.com/wxWidgets/wxWidgets 下载 下载地址: wget https://github.com/wxWidgets/wxWidgets/releas…

I2S 协议简介

I2S(Inter-IC Sound)是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和 I2C、SPI 这些常见的通信协议一样,I2S 总线用于主控制器和音频 CODEC 芯片之间传输音频数据。 I2S 接口需要 3 根信号线(如果需要实现收和发,那么就要 4 根信…

【Text-to-CAD】基于生成式AI的CAD文件生成工具

Text-to-CAD作为一种机械设计工具,通过简单的文本提示实现CAD文件的智能生成。其开源接口、机器学习支持和Fine Tuning选项为用户提供了高度可定制化的体验。未来的Fine Tuning功能和可能的商业合作有望进一步拓展其在机械设计领域的影响力。 产品概述: 名称: Text-to-CAD类…

Django项目创建和settings设置

2021版本的pycharm有bug,需要将settings.py中 把BASE_DIR后面的/换成, url:统一资源定位符 互联网上每个文件都有一个唯一的url,它包含的信息指出文件的位置以及浏览器应该怎么处理它 语法: protocol://hostname[:port]/path[?query][#fragment] protocol:协议 hostname:主…

【excel】常用的50个函数与基础操作(统计函数)

统计函数 (1)数组函数操作 1.【SUM】求和 SUM(数字1,数字2,数字3…) 2.【SUMIF】单条件求和 SUMIF (条件区域,条件,求和区域) 3.【SUMIFS】(单)多条件求和…

程序员应该如何选择职业赛道?

程序员选择职业赛道是一个涉及个人兴趣、技能匹配、市场需求和长远发展规划的综合决策过程。以下是一些关键步骤和考虑因素: 自我评估: 技能与专长:分析自己在编程语言、算法、数据结构等方面的现有技能,并思考这些技能更适合前端…

适用于系统版本:CentOS 6/7/8的基线安全检测脚本

#!/bin/bash #适用于系统版本:CentOS 6/7/8 echo "----------------检测是否符合密码复杂度要求----------------" #把minlen(密码最小长度)设置为8-32位,把minclass(至少包含小写字母、大写字母、数字、特殊…

51单片机—DS18B20温度传感器

目录 一.元件介绍及原理 二,应用:DS18B20读取温度 一.元件介绍及原理 1.元件 2.内部介绍 本次元件使用的是单总线 以下为单总线的介绍 时序结构 操作流程 本次需要使用的是SKIP ROM 跳过, CONVERT T温度变化,READ SCRATCHPAD…

AI美图设计室试用,可以生成PPT,以及模特试衣

文章目录 美图设计室试用 美图设计室试用 美图设计室是美图秀秀的公司推出的AI图像处理工具,其功能涵盖图片编辑、抠图、海报设计、文生图等常用的AI功能。尽管很多功能需要开通会员使用,但一些免费功能的表现也还不错,值得一用。 美图设计…

Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密

1 Alibaba Druid简介 之前介绍过Alibaba Druid的,章节如下,这里就不介绍了: Spring Boot(六十六):集成Alibaba Druid 连接池 这章使用Alibaba Druid进行数据库密码加密,在上面的代码上进行修改,这章只介绍密码加密的步骤。 目前越来越严的安全等级要求,我们在做产品…

JS原型和原型链的理解

原型链图,图中Parent是构造函数,p1是通过Parent实例化出来的一个对象 前置知识 js中对象和函数的关系,函数其实是对象的一种 函数、构造函数的区别,任何函数都可以作为构造函数,但是并不能将任意函数叫做构造函数&…

简单的Charles抓包教程

安装Charles 安装地址:https://www.charlesproxy.com/download/ 开关本机抓包 一般我们在抓取手机端内容时需要将Proxy菜单栏下的Windows Proxy取消勾选,禁止charles抓取本机上的请求信息。 注:开启电脑端抓包后,会为电脑添加局…

python之前端css样式(一)

css ID选择器 #c1{color:red;#边框为红色border:1px solid red; } <div id"c2">中国移动</div> 类选择器 .xx{color:blue; } <div class"xx">中国联通</div> 标签选择器 li{color: pink; } <ul><li>北京</li…

CSS动画属性(一)加两实例

keyframes 定义 使用可以创建动画&#xff08;逐步改变从一个CSS样式设定到另一个。)可以设置多次变化发生时使用%/关键字from和to 0&#xff05;是开头动画&#xff0c;100&#xff05;是当动画完成。 为了获得最佳的浏览器支持&#xff0c;始终定义为0&#xff05;和100&…

数据分析 | NumPy

NumPy&#xff0c;全称是 Numerical Python&#xff0c;它是目前 Python 数值计算中最重要的基础模块。NumPy 是针对多维数组的一个科学计算模块&#xff0c;这个模块封装了很多数组类型的常用操作。 使用numpy来创建数组 import numpy as npdata np.array([1, 2, 3]) print…

网络学习:邻居发现协议NDP

目录 前言&#xff1a; 一、报文内容 二、地址解析----NS/NA 目标的被请求组播IP地址 邻居不可达性检测&#xff1a; 重复地址检测 路由器发现 地址自动配置 默认路由器优先级和路由信息发现 重定向 前言&#xff1a; 邻居发现协议NDP&#xff08;Neighbor Discovery…

Linux mount命令教程:如何挂载和管理文件系统(附实例详解和注意事项)

Linux mount命令介绍 mount命令用于将设备上找到的文件系统挂载到以/为根的大树结构&#xff08;Linux文件系统&#xff09;。相反&#xff0c;另一个命令umount可以用来将这些设备从树中分离。 Linux mount命令适用的Linux版本 mount命令在所有主流的Linux发行版中都是可用…

【晴问算法】入门篇—贪心算法—区间不相交问题

题目描述 给定n个开区间&#xff0c;从中选择尽可能多的开区间&#xff0c;使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数&#xff0c;表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间&#xff0c;它…

CSS中水平垂直居中的实现

利用绝对定位&#xff0c;先将元素的左上角通过top:50%和left:50%定位到页面的中心&#xff0c;然后再通过translate来调整元素的中心点到页面的中心。该方法需要考虑浏览器兼容问题。 .parent { position: relative; } .child { position: absolute; left: 50%; …

SAP前台处理:销售业务集成<VA03/VL03N/VLPOD/VF03) 01/02

一、背景&#xff1a; 从销售订单创建VA01>发货过账VL01N >POD确认>VF01开票 这个流程涉及的凭证流及各个节点如何查询上游下游凭证&#xff1b; 二、凭证流&#xff1a; 从销售订单查看销售凭证流 VA03 双击交货单&#xff1a;带出交货单对应行项目及分批次项目…