英飞凌Aurix2G TC3XX STM模块详解

您所在的位置:网站首页 英飞凌tc397芯片 英飞凌Aurix2G TC3XX STM模块详解

英飞凌Aurix2G TC3XX STM模块详解

2024-07-16 21:49| 来源: 网络整理| 查看: 265

英飞凌Aurix2G TC3XX STM模块详解

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

目录 英飞凌Aurix2G TC3XX STM模块详解1 模块简介2 功能介绍2.1 计时器功能2.2 定时功能2.3 中断机制 3 MCAL配置3.1 时钟配置3.2 McuHardwareResourceAllocation配置3.3 ResourceM配置3.4 STM模块配置 4 小结参考资料

1 模块简介

STM(System Timer)是 Aurix2G TC3XX 内部 64 位的系统定时器,提供最高 100MHz 精度的定时功能,每款芯片的模块数量与 CPU 数量对应,比如 TC375 有 3 个核,同时具有 STM0~STM2 一共 3 个 STM 模块。STM 模块具有如下特性:

独立运行的 64 位计数器(100MHz 下最大时间为 5849 年)支持 64 位计数值同步读取支持 32 位连续的特定位置读取,比如读取计数器第 7 到 39 位数据支持利用比较寄存器进行灵活的定时中断请求上电自动启动Application Reset 后支持继续运转不归零(System Reset 和 PowerOn Reset 后一定归零的)

STM 是一个上电后自动连续运行的定时器,因此适合作为时间戳功能寄存器。其提供的定时器中断可作为 Wdg 的超时中断使用。但由于其比较中断寄存器特性,每次超时进入中断后需要重新装载定时值,因此不适合作为 OS Counter,会存在累积时间误差。

2 功能介绍

STM 的时钟来自系统时钟,与 CPU 同源,最大支持 100MHz,与系统时钟的倍数关系取决于 STM 分频寄存器 SCU_CCUCON0.STMDIV。关系如下:

f S T M = f P L L 0 S T M D I V \begin{equation} f_{STM} = \frac {f_{PLL0}} {STMDIV} \end{equation} fSTM​=STMDIVfPLL0​​​​

芯片上电之后,根据时钟寄存器复位值,得出 fPLL0 默认为 100MHz,SCU_CCUCON0.STMDIV 复位值为 3,因此上电之后,在 MCU 时钟初始化及锁相环稳定之前,STM 以默认频率 33.3 MHz 启动并运行。但是我们 MCU 中一般将系统时钟 fPLL0 配置为 300MHz,所以在时钟初始化之后 STM 以 100MHz 运行。

2.1 计时器功能

STM 模块示意图: 在这里插入图片描述

每个 STM 模块内部是一个上电自动启动的 64 位系统时钟,提供不同的寄存器(STM_TIM0~STM_TIM5 和 STM_CAP)以读取不同位置的 32 位时刻值。因为 64 位数据在 32 位 CPU 中无法在一条指令内完成,因此 STM 模块提供了高 32 位冻结功能:在 TIM0 到 TIM5 任一寄存器被读取时,STM 会将此刻的高 32 位时刻值冻结一次到 STM_CAP 中,因此通过先读取 STM_TIM0 再读取 STM_CAP 寄存器的方式,组成完成一致的 64 位时刻值。代码实现如下:

#include "IfxStm_reg.h" /* Aurix2G STM寄存器 */ uint64 GetSystemTick() { uint64 tick = 0; tick |= STM0_TIM0.U; /* 获取低32位时刻值 */ tick |= STM0_CAP.U McuStmAllocationConf 中配置 STM 的硬件分配,如前所述 Cmp0 一般用于 Wdg,Cmp1 可用于 STM 定时功能。(图中为 TC375 配置,有 3 个 STM 模块) 在这里插入图片描述

3.3 ResourceM配置

Aurix2G MCAL 中面向多核提供了一个硬件对于核的配置模块 ResourceM,其本身不产生代码,但是配置会影响其他模块生成代码;对于 STM 模块,如果要使用用户定时器功能,则需要在 ResourceM 中配置硬件对于 Cpu 的分配,否则 MCAL 代码中初始化会失败。

这里我们来到 ResourceM -> ResourceMMcalCore_0 中,默认应该是有 STM 的核的分配的。 在这里插入图片描述

3.4 STM模块配置

STM 模块内部其实没有什么可配置项,只有一个 Dev,一个 VersionApihe 和一个 ApiMode,Dev 用于开发配置检查,比如前文提到的没分配 ResourceM,初始化会进 Dev;ApiMode 表示对 STM 进行配置时需要处于什么样的用户权限。 在这里插入图片描述

4 小结

以上就是关于 Aurix2G TC3XX STM 模块以及 MCAL 相关配置的介绍,总的来说 STM 的特性非常适合作为系统计时器功能,为其他模块提供精准的时间戳;同时也能够为 EcuM、Wdg 等模块或者用户提供定时器功能;但因其定时特性,连续触发存在累积误差,因此不适合作为 Os Counter 使用。

参考资料

Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN.pdf



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3