TC3xx系列芯片--GPT12模块介绍

1、模块介绍

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

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

2、功能介绍

2.1、功能列表

GPT1 包含三个定时器/计数器:核心定时器 T3 和两个辅助定时器 T2/T4。最大分辨率为 fGPT/4。

GPT1 的辅助定时器可选地配置为核心定时器的重新加载或捕获寄存器。

如下列表列出了支持的功能:

fGPT/4 最大分辨率

3 个独立的定时器/计数器

4 种操作模式:1、定时器模式。2、门控定时器模式。3、计数器模式。4、增量接口模式

重新加载和捕获功能

单独中断

GPT2 块包含两个定时器/计数器:核心定时器 T6 和辅助定时器 T5。最大分辨率为 fGPT/2。

附加的捕获/重新加载寄存器(CAPREL)支持捕获和重新加载操作,并具有扩展功能。

如下列表列出了支持的功能:

fGPT/2 最大分辨率

2 个独立的计时器/计数器

3 种操作模式:1、定时器模式。2、门控定时器模式。3、计数器模式

通过 16 位捕获/重载寄存器 CAPREL 扩展捕获/重载功能

单独中断

2.2、功能结构

GPT12 中两个子模块功能类似,其中 GPT1 的功能更多,以 GPT1 子模块为示例介绍 GPT12 硬件原理。如下图是 GPT1 模块内部结构图:

如上图所示 GPT1 包含了 3 个定时器 T2、T3、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 分别有各自内部时钟分频 Txl,其分频关系位 2^Txl。所以定时模式下定时器频率计算公式 为:

fTx = fGPT/(BPS1 * 2TxI )

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

2.3、独立运行模式

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

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

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

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

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

2.3.1、定时器模式

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

当设置 T3M = 000B 时,T3 为定时器模式。T3M 位字段处于 T3CON 寄存器中。


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


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


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

2.3.2、门控定时器模式

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

当 T3M = 010b 时,T3IN 的低电平有效,会启动定时器,高电平则停止定时器;

当 T3M = 011b 时,则相反是高电平启动定时器。

2.3.3、计数器模式

当设置 T3M = 001B 时,T3 为计数器模式,其逻辑关系如下图所示:

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

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

2.3.4、增量接口模式

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

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

2.4、协同运行模式

2.4.1、重载定时模式

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

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

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


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


另外使用该模式还可以组合实现 PWM 信号,但是 Aurix TC3xx 具有功能完备的 GTM 外设。因此 GPT12 硬件的 PWM 很少被使用。

2.4.2、串联定时模式

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

如上图所示,T3 的溢出会输送到 T2 进行累加,因此可以实现位宽位 32 位的定时器。

若 T3OUT 使用单边沿触发 T2,则可以实现 33 位的定时器。

3、MCAL &ETAS 配置及代码

以使用 GPT12 的 T2 和 T3 组成一个重载定时器,用于系统的 1ms Tick。

3.1、MCU

首先需要在 MCU 中将需要使用的定时器资源分配到 GPT 软件模块。(这里的 GPT 是 AutoSar 中的软件抽象定义,区别于硬件 GPT12)具体操作如下图:

然后需要在 MCU 的 General 中,设置 GPT 的分配系数,这里 GPT1 设置 4 分配。如下图:

3.2、Irq

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

若使用 ETAS 的 ISOAB 工具配置,会使用 OS 模块中配置的优先级。

3.3、GPT

首先需要在 General 中,使能一些常规接口使能配置,按初始配置即可。如下图:

GptChannelId:通道 ID;

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

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

GptTimerChannelUage:预设的通道频率,自行配置,选择 GPT_TIMER_CHANNEL_NORMAL

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

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

GptChannelClkSrcRef:关联的 GPT 时钟。

对于 GptNotification 选项卡,这里用来配置 Gpt 中断的通知函数,GPT 中断中会调用该函数。但是若使用 ETAS 中的 OS 模块,则不需要配置该选项。中断回调函数在 OS 模块中生成。

最后配置 Cpt12TimerOutputModleConfiguration 选项卡,这里配置 GPT12 的硬件定时器。选择定时器 T2 和 T3,主、辅没有顺序要求。若选择 GPT12 的 GPT2 子模块,则只能配置 T5 和 T6。

3.4、ETAS 工具中配置

ETAS 工具如下图:

3.5、代码

首先需要在 EcuM 中添加 Gpt 初始化函数,如下图:

StartTimer 的 Tick 值是根据分频算出的,T3 的时钟频率为 100/4/1 = 25MHz,因此定时器实现 1ms 的 Tick 值为 25000。如下图

最后在 Timer 的中断回调函数中添加调度表回调函数,如下:

ISR(GPTT3SR_ISR)
{Os_IncrementCounter_Rte_TickCounter();
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作,比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);

基于反射内存的光纤交换机

在当今高度信息化的社会中,数据的高速传输与处理已成为各行各业不可或缺的一部分。特别是在航空航天、工业自动化、金融交易及高性能计算等领域,对数据实时性和可靠性的要求尤为严格。为满足这些需求,基于反射内存(Reflective Mem…

前端上传后端接收参数为null

记录一下工作中的问题 前端明明把文件传到后台了,但是后台接收参数为null 原因: 前端上传文件的name和后端接收参数名称不匹配 前端 后端 把前端上传的name由upfile改为file即可 本来是很基本的小问题,但因为自己钻了牛角尖一直没搞定&…

Web3的技术栈详解:解读区块链、智能合约与分布式存储

随着数字时代的不断发展,Web3作为下一代互联网的核心理念逐渐走进了大众视野。它承载着去中心化、用户主权以及更高效、更安全的网络环境的期望。Web3不再是由少数中心化机构主导的网络,而是通过一系列核心技术的支撑,给每个用户赋予了更多的…

芯食代冻干科技研究院:创新与品质并重,推动家用冻干机高质量发展

11月25日,芯食代首届食品冻干前沿与智能化升级创新大会在江苏常州成功举办。本次大会由芯食代冻干科技研究院(江苏)有限公司与芯食代(上海)科技发展有限公司联合主办,云集学界专家教授、商界企业精英,共议家用冻干机的未来创新发展。作为创新大会,芯食代冻干科技研究院也在本次…

相交的链表

力扣链接:160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据…

PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

全文摘要 本文介绍了一种名为PETRv2的统一框架,用于从多视图图像中进行三维感知。该框架基于先前提出的PETR框架,并探索了时间建模的有效性,利用前一帧的时间信息来提高三维物体检测效果。作者在PETR的基础上扩展了三维位置嵌入(…

项目基于oshi库快速搭建一个cpu监控面板

后端&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-…

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式&#xff0c;通过链式调用将请求逐一传递给一系列处理器&#xff0c;直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者&#xff0c;允许动态地将请求处理职责分配给多个对象&#xff0c;支持请求的灵活传…

【Nacos02】消息队列与微服务之Nacos 单机部署

Nacos 部署 Nacos 部署说明 Nacos 快速开始 Nacos 快速开始 版本选择 当前推荐的稳定版本为2.X Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Re…

查看 tomcat信息 jconsole.exe

Where is the jconsole.exe? location: JDK/bin/jconsole.exe

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

【Linux系统】Linux内核框架(详细版本)

Linux体系结构&#xff1a;Linux操作系统的组件详细介绍 Linux 是一个开源的类 UNIX 操作系统&#xff0c;由多个组件组成&#xff0c;具有模块化和层次化的体系结构。它的设计实现了内核、用户空间和硬件的高效协作&#xff0c;支持多用户、多任务操作&#xff0c;广泛应用于…

如何使用apache部署若依前后端分离项目

本章教程介绍,如何在apache上部署若依前后端分离项目 一、教程说明 本章教程,不介绍如何启动后端以及安装数据库等步骤,着重介绍apache的反向代理如何配置。 参考此教程,默认你已经完成了若依后端服务的启动步骤。 前端打包命令使用以下命令进行打包之后会生成一个dist目录…

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中&#xff0c;一些大表一般通过分区表的形式来实现数据的分离管理&#xff0c;进而加快数据查询的速度。分区表运维管理的时候&#xff0c;由于人为操作容易忘记添加分区&#xff0c;导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…

【不稳定的BUG】__scrt_is_managed_app()中断

【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能&#xff0c;仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…

FFmpeg源码中,计算CRC校验的实现

一、CRC简介 CRC(Cyclic Redundancy Check)&#xff0c;即循环冗余校验&#xff0c;是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法&#xff0c;主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理&#xff0c;实现错误侦…

核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考 核密度估计&#xff08;KDE&#xff09;原理及实现-CSDN博客 机器学习算法&#xff08;二十一&#xff09;&#xff1a;核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区 引言 在统计学中&#xff0c;概率密度估计是一种重要的方法&#xff0…

学习记录,正则表达式, 隐式转换

正则表达式 \\&#xff1a;表示正则表达式 W: 表示一个非字&#xff08;不是一个字&#xff0c;例如&#xff1a;空格&#xff0c;逗号&#xff0c;句号&#xff09; W: 多个非字 基本组成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正则表达式中&#xff0c;大…