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

这篇具有很好参考价值的文章主要介绍了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 或是启动计数,从而与主定时器实现同步或形成一定的移相。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

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 的产生。

stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

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

Master Timer 中的配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

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

stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
Timer A 中的配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
Timer B 中的配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
Timer C 中的配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
Timer D 中的配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

按照以上的同步配置,并设置 PWM 的 Duty = 20%,实测到的四相 90°交错 PWM 波形如下所示。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

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 可以直接作为片上其他定时器的同步事件。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
当 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管脚,由于要多占用两个管脚,不建议该方式)。
同步配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

Master Timer 配置(可以修改 CMP1 的值来形成不同的移相值):
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
Timer A 配置:
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
TIM1 的配置,TIM1 做从,工作在 Reset Mode,PWM 的输出模式为 PWM_MODE1。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
按照以上的同步配置,实测到的两 180°交错 PWM 波形如下所示。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机
C1: HRTIM_TA1 C2 : TIM1_CH1

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

通过 HRTIM_SCIN 与 HRTIM_SCOUT,配合 HRTIME 同时做主与从的方式,可以实现多个MCU 之间定时器的同步,如下图示意。
stm32g4 hrtime,ST相关,stm32,嵌入式硬件,单片机

5、小结

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


本文档参考ST官方的《【应用笔记】LAT1173高精度定时器的同步功能》文档。
参考下载地址:https://download.csdn.net/download/u014319604/88971346文章来源地址https://www.toymoban.com/news/detail-856567.html

到了这里,关于STM32G4高精度定时器的同步功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32G0x0系列-软件定时器解决HAL_Delay问题

    目录 HAL_Delay函数源码 软件定时器 创建工程试验 1.将对应文件移动到项目位置 2.添加现有文件放到工程中   3.重定向printf 3.验证自己的软件定时器 4.查看现象          HAL_Delay函数使用了中断机制来实现延时功能,当在中断函数中调用HAL_Delay函数需要考虑中断优先级问题。

    2024年02月07日
    浏览(36)
  • STM32G0 定时器PWM DMA输出驱动WS2812配置 LL库

    优点:不消耗CPU资源 缺点:占用内存较大 定时器配置 定时器通道:TIM3 CH2 分频:0 重装值:79,芯片主频64Mhz,因此PWM输出频率:64Mhz/79 ≈ 800Khz,满足芯片要求。 auto-reload preload 要关闭 output compare preload 要打开 DMA配置 外设一定要选择TIM3_UP,不要选TIM_CHx 方向是内存到外设,

    2024年02月10日
    浏览(34)
  • STM32 等精度测频 TIM定时器 分高低频测试

    记录一下STM32稍显艰难的学习过程、、 使用的STM32开发板:微雪的Open407Z 相关资料: Open407Z-C - Waveshare Wiki MCU型号:STM32F407ZE 本次想要实现一个单片机学习中很普遍也很简单的测频功能,但是实操起来还得进行很多定时器的以及中断的相关操作。。 首先想到的是用一个定时器

    2024年02月15日
    浏览(32)
  • STM32 定时器配置不当导致误差(精度)偏大的问题发现与解决

    通用定时器TIM2/3/4/5,PWM输出1Khz的波形 一开始初始化代码如下: 示波器端查看效果如下:误差在5.64‰ 修好初始化代码如下: 示波器端查看效果如下:误差在0.2‰ Over!

    2024年01月16日
    浏览(33)
  • STM32G071开发笔记:使用定时器(TRGO功能)触发ADC规则采样以避免低侧电流采样所带来的PWM开关噪声

    目录 背景阐述: 导致问题的原因: 解决方案: 实验方案: 实验验证: 可改进的地方 结尾 RT:笔者在做一个项目的时候遇到了一个因为PWM开关噪声干扰导致ADC采样波动大的问题,经过2天的研究终于想到了一个比较好的办法,这个方法不一定适合所有项目,但和我当前项目

    2024年01月25日
    浏览(44)
  • STM32 SYSTick高精度延时功能代码实现

    本篇文章将给大家讲解一下SYSTICK滴答定时器,以及讲解使用滴答定时器来实现高精度延时功能的代码。 SysTick定时器是嵌入式系统中常见的一个系统定时器,在ARM Cortex-M微控制器中广泛使用。下面是关于SysTick定时器的一些介绍: 用途: SysTick定时器通常被用作操作系统的时钟

    2024年02月22日
    浏览(40)
  • 关于STM32F103输入捕获高精度采集频率信号的方法

    前段时间需要做一款频率采集设备,由于成本考虑,使用了APM32F103作为主控,APM32F103和STM32F103基本完全通用,有极个别BUG。不影响本次试验。客户要求的频率信号为11KHz到23KHz,精度要求在任何频率范围误差不能大于当前频率的万分之一以上(排除温度影响),采集速度要10

    2024年02月15日
    浏览(26)
  • 【STM32】STM32学习笔记-定时器定时中断 定时器外部时钟(14)

    1.1 TIM_InternalClockConfig 1.2 TIM_TimeBaseInit 1.3 TIM_TimeBaseInitTypeDef 1.4 TIM_ClearFlag 1.5 TIM_ITConfig 1.6 TIM_Cmd 1.7 中断服务函数 参考程序 1.8 TIM_ETRClockMode2Config timer.h timer.c main.c timer.h timer.c main.c 09-定时器定时中断.rar 10-定时器外部时钟.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年02月03日
    浏览(38)
  • 【STM32笔记】STM32的定时器开发基础(二)(基于STM32CubeMX实现定时器中断)

      传统STM32外部中断 的设计步骤:  (1)将GPIO初始化为输入端口。  (2)配置相关I/O引脚与中断线的映射关系。  (3)设置该I/O引脚对印的中断触发条件。  (4)配置NVIC,并使能中断。  (5)编写中断服务函数。   基于STM32CubeMX的外部中断 设计步骤  (1)在STM3

    2024年02月20日
    浏览(44)
  • STM32定时器-定时器中断功能详解

    STM32的众多定时器中我们使用最多的是高级定时器和通用定时器,而高级定时器一般也是用作通用定时器的功能,下面我们就以通用定时器为例进行讲解,其功能和特点包括: 通用与基本定时器(2~7)位于低速的APB1总线上 高级定时器(1、8)位于高速的APB2总线上 自动装载计

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包