英飞凌Aurix2G TC3XX GPT12模块详解

英飞凌Aurix2G TC3XX GPT12模块详解

本文主要介绍英飞凌 Aurix2G TC3XX系列芯片GPT12模块硬件原理、MCAL相关配置和部分代码实现。

文章目录

  • 英飞凌Aurix2G TC3XX GPT12模块详解
    • 1 模块介绍
    • 2 功能介绍
      • 2.1 结构
      • 2.2 独立运行模式
        • 2.2.1 定时器模式
        • 2.2.2 门控定时器模式
        • 2.2.3 计数器模式
        • 2.2.4 增量接口模式
      • 2.3 协同运行模式
        • 2.3.1 重载定时模式
        • 2.3.2 串联定时模式
    • 3 MCAL配置及代码示例
      • 3.1 MCU
      • 3.2 Irq
      • 3.3 GPT
      • 3.4 代码及示例
    • 4 小结
    • 参考资料

1 模块介绍

GPT12(General Purpose Timer Unit )是Aurix TC3XX内部的通用定时器模块,提供高精度定时功能。GPT12包含GPT1和GPT2两个子模块,通用定时器单元块GPT1和GPT2具有非常灵活的多功能定时器结构, 可用于定时、事件计数、脉宽测量、脉冲产生、倍频等用途。

在Autosar中,该硬件模块一般用于软件模块GPT的硬件定时器,或者作为OS Tick,利用硬件Timer驱动OS Counter。

2 功能介绍

2.1 结构

GPT12中的两个子模块功能类似,其中GPT1的功能更多,这里以GPT1子模块作为示例介绍GPT12硬件原理。如下图是GPT1模块内部结构图。
在这里插入图片描述

我们可以看到,GPT1内部包含了3个可用定时器T2、T3和T4,其中T3为主定时器,T2和T4为辅寄存器。每个定时器的位宽都是16位。单独使用时其功能相同,组合使用时T2或者T4可以用来重载T3,或者捕获T3的值。

每个定时器有两个输入,一个TxIN和一个TxEUD。TxIN可以用作门控模式,控制定时器启停,TxEUD可输入高低信号用定时器计数。

T3有一个输出引脚T3OUT,可将T3的溢出状态向外从引脚输出。

3个定时器各自都有一个中断请求源,连接中断路由模块IR,实现定时器中断。

如前所述,GPT1的时钟源是fGPT,在到达GPT1模块之后有一个可选分频BPS1,分频值可选4、8、16、32。然后T2~T4分别有各自的内部时钟分频TxI,其分频关系为2^TxI。所以定时模式下定时器频率计算公式为:

f T x = f G P T B P S 1 ∗ 2 T x I \begin{equation} f_{Tx} = \frac {f_{GPT }} {BPS1*2^{TxI}} \end{equation} fTx=BPS12TxIfGPT

一般我们配置fGPT=fSPB=100MHz,BPS1选择4,TxI配置为0,可得到25MHz的定时器频率。

2.2 独立运行模式

单独使用时3个定时器的功能一样,这里以T3为例。T3的定时器的Counter值就存储在GPT12_T3寄存器中,可以通过软件进行读写,重置定时器值或者读取当前值。T3的控制主要依赖控制寄存器GPT12_T3CON寄存器,其寄存器结构如下图所示。

在这里插入图片描述

其中T3R用来控制T3的运行,置1则启动定时器,清0则停止寄存器。如果是门控模式,则同时还需要引脚状态为激活态。

定时器支持累加/累减模式,当T3UDE=0时,该模式由T3UD控制;当T3UDE=1时,该模式由相连的输入引脚T3EUD控制。

T3的溢出控制连接关系如下图所示:

在这里插入图片描述

当T3溢出时,T3OTL置位,并将该状态传递给相连的引脚T3OUT。同时通过一个ShadowLatch将延迟前后的信号传递给辅助定时器,当出现溢出时,这两个延迟信号之前存在电平差,从而触发辅助定时器的相关功能。

2.2.1 定时器模式

T3作为定时器模式时的逻辑关系图如下图所示:

在这里插入图片描述

当设置T3M=000b时,T3为定时器模式。

如前所述,fGPT传入之后经过两级分频BPS1T3I,并经过开关T3R之后,到达内部定时器,推动其进行运转。累加或累减则取决于下方的T3UD、T3EUD、T3UDE等状态。

当定时器溢出时,触发中断信号,实现定时中断。同时通过引脚T3OUT将溢出信号传出去。

另外溢出信号还传递到辅助寄存器,实现T3的重载、捕获等功能。因为T3是没有内部重载的逻辑的,所以如果需要使用连续的定时功能,如OS Tick,则需要使用一个辅助寄存器,进行定时值的重载。

2.2.2 门控定时器模式

在这里插入图片描述

门控定时器逻辑整体和定时器模式相同,只是在入口处增加了一个与门逻辑GateCtrl。

当T3M=010b时,T3IN的低电平有效,会启动定时器,高电平则停止定时器;如果T3M=011b时,则相反是高电平启动定时器。

2.2.3 计数器模式

当设置T3M=001b时,T3为定时器模式。其逻辑关系图如下图所示。

在这里插入图片描述

在Counter模式下,T3I用来控制引脚输入的计数模式,比如上升沿计数、下降沿计数或双边计数。具体参考下表。
在这里插入图片描述

需要注意的是计数的最高分辨率等于经过BPS1分频后的时钟频率。

2.2.4 增量接口模式

当设置T3M=110b或111b时,T3为2.2.4 增量接口模式。其逻辑关系图如下图所示。

在这里插入图片描述

在增量接口模式下,与主定时器T3(T3IN, T3EUD)相关联的两个输入用于接口到增量编码器。T3由一个或两个外部输入引脚上的每个转换进行时钟处理,以提供编码器输入的2倍或4倍分辨率。

2.3 协同运行模式

GPT12的设计使用了一些协同设计,即主定时器和辅定时器在一起实现相关的功能。

2.3.1 重载定时模式

如前所述,T3定时器内部不具备重载的功能,因此要实现连续的周期定时功能,则需要依赖辅寄存器。在重载模式下需要将T2(假定辅定时器为T2)的T2RC设置为1,表示该定时器的启停由T3控制。同时模式T2M设置为100b,表示重载模式。

重载定时模式的逻辑关系图如下图所示。

在这里插入图片描述

从图中可以看出,T3正常按照定时器模式使用,同时其溢出信号连接至T2,用于触发T3的重载,重载值为T2中保存的值。

该模式下T2的值不再运转改变,而是仅作为T3的加载寄存器使用。

另外使用该模式还可以组合实现PWM信号,但是Aurix TC3XX配备了功能完备的GTM,因此GPT12硬件的PWM很少被使用,感兴趣的读者可自行研究。

2.3.2 串联定时模式

如前所述,GPT12中的每一个Timer都是16位定时器,因此在实现较长、精度较高的定时时,就可以使用串联模式。其逻辑关系图如下图所示。

在这里插入图片描述

如图所示,T3的溢出会输送到T2进行累加,因此该组合内定时器的最大位宽为两个定时器之和,即32位定时器。如果T3OUT使用单边沿触发T2,则可以实现33位的定时器。

3 MCAL配置及代码示例

这里使用GPT1的T2和T3组成一个重载定时器,用于系统的1ms Tick,来实现一个示例。

3.1 MCU

首先我们需要到MCU->McuHardwareResourceAllocationConf->McuGpt12ModuleAllocationConf中将我们需要使用的定时器资源分配到GPT软件模块。(这里的GPT是Autosar中的软件抽象定义,区别于硬件GPT12)

在这里插入图片描述

然后我们来到MCU->General,拉到McuGpt12PrescalerConf,前面一步配置了这里才允许配。我们使能GPT1,使用4倍分频。

在这里插入图片描述

3.2 Irq

我们需要使用T3连续触发中断,实现Tick,因此需要在Irq模块配置一个T3中断优先级。

在这里插入图片描述

这里中断优先级选择一个未使用的即可,中断类型选择一类,如果是用作OS Tick的话选作二类,我这里只有MCAL基础包,只能选择一类;方向选择CPU0即可,如果是多核,可以根据需求设置。

3.3 GPT

在这里插入图片描述

首先来到General,照例General中还是一些常规接口使能配置,按初始配置即可,把需要使用的接口使能。

在这里插入图片描述

然后来到GptChannelConfiguration,这里我配置了一路通道。

  • GptChannelId:通道ID;

  • GptAssignedHwUnit :硬件单元,这里可选GTM和GPT12,我们使用GPT12;

  • GptChannelMode:通道模式,我们是连续,设置为GPT_CH_MODE_CONTINUOUS

  • GptTimerChannelUsage:预设的通道频率,这里我们自行配置,选GPT_TIMER_CHANNEL_NORMAL即可;

  • GptChannelTickFrequency和GptChannelTickValueMax都不需要配置,硬件固定的;

  • GptEnableWakeup:GPT唤醒功能,需要配合EcuM使用,休眠唤醒逻辑中使用;

  • GptChannelClkSrcRef:这里配不配都行,我们是硬件自行设置的频率,不用参考;

    在这里插入图片描述

    然后来到第二页选项卡GptNotification,这里用来配置Gpt中断的通知函数,GPT中断中会调用该函数。

    在这里插入图片描述

最后我们来到Gpt12TimerOutputModuleConfiguration选项卡,这里配置GPT12的硬件定时器。我们选择定时器T2和T3,主、辅没有顺序要求,工具会自动识别。这里如果选择GPT12的GPT2子模块,则只能配置T5和T6。

3.4 代码及示例

首先是初始化,我们需要初始化GPT硬件,配置中断。

然后需要EnableNotification函数去使能GPT12内部相关中断,并使能通知。

StartTimer的Tick值是根据分频算出来的,前面提到我们SPB=100MHz,BPS1在MCU中配置为4分频,T3I=0,则T3的时钟频率为100/4/1=25MHz,因此定时器实现1ms的Tick值为25000。

IrqGpt_Init();
SRC_GPT120T3.B.SRE = 1;     /* Enable GPT12 T3 Source. */Gpt_EnableNotification(GptConf_GptChannelConfiguration_LwipTimer);
Gpt_StartTimer(GptConf_GptChannelConfiguration_LwipTimer, 25000);  /* 1ms */

然后每次Timer到期都会进入中断,然后执行上文所配置的Notification函数,然后我们在Notification函数中进行Tick的累加和Tick标志位的置位。

void SystemTickIsr()
{SystemTickUpdateFlag = TRUE;
}

在main中我们轮询标志位和Tick,实现简单的1ms周期系统,并在其中切换LED灯的状态。

while(!SystemTickUpdateFlag){/* wait for tick update. */
}
SystemTickUpdateFlag = FALSE;
localSysTick++;if(localSysTick%500 == 0){Dio_FlipChannel(DioConf_DioChannel_LED1);
}

这样我们就实现了一个简单的1ms系统Tick,观察LED灯。

1ms系统Tick的LED灯

4 小结

本文详细介绍了英飞凌Aurix TC3XX中的GPT12模块,对其内部硬件结构和原理进行了拆解说明。最后在MCAL中GPT模块进行了配置,并结合代码使用GPT12实现了1ms的系统Tick。GPT12功能相对来说比较简洁,常用于实现Autosar OS中的系统Timer,也常用于EcuM中的系统定时器。但该模块资源也有限,一共5个Timer,且实现连续定时器功能时由于需要主从配合,只能提供两个连续定时器。

参考资料

  1. Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf
  2. Infineon-AURIX_TC3xx_Part2-UserManual-v02_00-EN.pdf

如您有任何问题,欢迎关注公众号【TechLink汽车软件】与我们联系!

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

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

相关文章

大数据程序猿不可不看的资料大全

​ 随着大数据技术的发展,大数据程序猿在数据采集、处理、分析、存储等方面的技能需求不断增加。要在这个领域保持竞争力,系统性地学习和掌握大数据工具、技术架构和行业趋势是非常重要的。以下为您提供一份围绕大数据程序猿不可不看的资料大全&#xf…

抓包工具WireShark使用记录

目录 网卡选择: 抓包流程: 捕获过滤器 常用捕获过滤器: 抓包数据的显示 显示过滤器: 常用的显示过滤器: 实际工作中,在平台对接,设备对接等常常需要调试接口,PostMan虽然可以进…

MySQL数据迁移到SQLServer数据库

随着云计算技术的发展以及大数据时代的到来,越来越多的企业开始寻求更加高效、安全的数据管理解决方案。MySQL作为一种开源的关系型数据库管理系统,在互联网应用开发中占据了极其重要的位置;而另一方面,Microsoft SQL Server凭借其…

【STM32开发】-FreeRTOS开发入手学习

一、什么是FreeRTOS? FreeRTOS 是 RTOS 系统的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行; 1、 FreeRTOS是免费的。 2、许多其他半导体厂商产品的 SDK 包就使用 FreeRTOS 作为其操作系统,尤其是 WIFI、…

【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计

微服务系统是一类基于微服务架构风格的分布式系统,它将应用程序拆分成多个独立的小型服务,每个服务都运行在独立的进程中,并采用轻量级通信协议进行通信。这些服务可以由不同的团队开发、不同的编程语言编写,并且可以按需部署。微…

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程

文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …

【SpringBoot】 黑马大事件笔记-day2

目录 用户部分 实体类属性的参数校验 更新用户密码 文章部分 规定josn日期输出格式 分组校验 上期回顾:【SpringBoot】 黑马大事件笔记-day1 用户部分 实体类属性的参数校验 对应的接口文档: 基本信息 请求路径:/user/update 请求方式&#…

HarmonyOS入门 : 获取网络数据,并渲染到界面上

1. 环境搭建 开发HarmonyOS需要安装DevEco Studio,下载地址 : https://developer.huawei.com/consumer/cn/deveco-studio/ 2. 如何入门 入门HarmonyOS我们可以从一个实际的小例子入手,比如获取网络数据,并将其渲染到界面上。 本文就是基于…

AndroidStudio-视图基础

一、设置视图的宽高 1.在XML文件中设置视图宽高 视图宽度通过属性android:layout_width表达,视图高度通过属性android:layout_height表达,宽高的取值主要有下列三种: (1)wrap_content:表示与内容自适应。对于文本视图来说&…

三菱QD77MS定位模块紧急停止功能

“紧急停止功能” 是通过简单运动模块的外部输入连接用连接器上连接的紧急停止输入,对同服放大器的全部轴进行批量停止的功能。(初始值为“0:有效”。)通过“[r.82]紧急停止有效/无效设置”可以选择紧急停止输入的有效/无效。 [1]控制内容 将“[r82]紧急停止有效/无…

Android JNI 技术入门指南

引言 在Android开发中,Java是一种主要的编程语言,然而,对于一些性能要求较高的场景(如音视频处理、图像处理、计算密集型任务等),我们可能需要使用到C或C等语言来编写底层的高效代码。为了实现Java代码与C…

Js — 定时器

有两种:setInterval 和 setTimeout 间隔时间单位为毫秒 setInterval 每隔指定的毫秒数重复执行一个函数或代码 开启定时器:setInterval(函数,间隔时间) 作用:每隔一段时间调用这个函数 注意:它不是立即执行&#x…

H5播放器EasyPlayer.js 流媒体播放器是否支持npm(yarn) install 安装?

EasyPlayer.js H5播放器是一款功能强大的H5视频播放器,它支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC等格式的视频流。它不仅支持H.264和H.265编码格式,还具备实时录像、低延时直播等功能…

前端刺客系列----Vue 3 入门介绍

目录 一.什么是 Vue 3? 二.Vue 3 的主要特性 三,Vue3项目实战 四.总结 在前端开发的世界里,Vue.js 作为一款渐进式的 JavaScript 框架,已成为许多开发者的首选工具。自从 Vue 3 发布以来,它带来了许多重要的改进和新特性&…

【论文复现】MSA+抑郁症模型总结(三)

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀MSA抑郁症模型 热门研究领域:情感计算的横向发展1. 概述2. 论文地址3. 研究背景4. 主要贡献5. 模型结构和代码6. 数据集介绍7. 性…

Linux 实验:日志的备份与恢复 xfs文件系统

添加一个新的硬盘,创建硬盘分区sdc1 设置文件系统格式xfs,提示安装xfsprogs,如果安装失败,在后缀加上--fix-missing直到安装完成为止 mkdir创建空目录data,将sdc1挂载到data,data是根目录下新建的目录&…

应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案

人工智能(AI)和机器学习(ML)技术正在快速发展,逐渐应用到全球各类主流系统、设备及关键应用场景中,尤其是在政府、商业和工业组织不断加深互联的情况下,AI和ML技术的影响日益广泛。虽然AI技术的…

证书学习(六)TSA 时间戳服务器原理 + 7 个免费时间戳服务器地址

目录 一、简介1.1 什么是时间戳服务器1.2 名词扩展1.3 用时间戳标记顺序1.4 7 个免费TSA时间戳服务器地址(亲测可用)1.5 RFC 3161 标准二、时间戳原理2.1 时间戳服务工作流程2.2 验证工作流程2.3 举个例子2.4 时间戳原理总结三、代码实现3.1 curl 命令请求时间戳3.2 java 代码…

一文快速预览经典深度学习模型(一)——CNN、RNN、LSTM、Transformer、ViT

Hi,大家好,我是半亩花海。本文主要简要并通俗地介绍了几种经典的深度学习模型,如CNN、RNN、LSTM、Transformer、ViT(Vision Transformer)等,便于大家初探深度学习的相关知识,并更好地理解深度学…

如何运营Github Org

目录 前言 正文 关于分支保护 特别说明 如何在Windows环境下配置GitHub Desktop GPG签名? 推荐分支保护选择 关于good first issue 如何设置good first issue? 关于Project 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learni…