打印
[通用 MCU]

STM-系统计时器

[复制链接]
13|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-11-8 16:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
芯片中系统计时器的作用是为了同步 CPU 中各种门电路,产生时钟频率,或者对外设提供的脉冲信号计数³⁴⁵。系统计时器可以显示时间与记录时间,可以产生时间中断,也可以对年、月、日、周日、时、分、秒进行计时。

一、STM



时钟来源于Fstm,可以产生两个中断。
亮点:
系统定时器被用来为OS操作系统产生基础的时钟基准。用来生成触发事件
AURIX有多个STM模块,数量和CPU数量一致,因此每个CPU可以用一个STM作为时间基准。

二、Free-running 64-bit counter 64位计数器



STM有一个64位计数器,时钟Fstm来自CCU(时钟控制单元)。

系统定时器值可以通过7个寄存器读取,每个寄存器选择一个32位的系统定时器值范围。

七个寄存器中的每一个都可以用来读具有不同分辨率和范围的计数器的值
由于是64位的宽度,而读取寄存器是32位的宽度,所以需要同时用两个寄存器读取整个计数器。计时器将在加载操作时继续计数,因此有可能读取的值不匹配。为了能够同步并且一致地读取STM内容,于是使用了一个捕获寄存器。

这个捕获寄存器保存64位计数器的上32位的值,计数器下32位的值由7个寄存器分别读取。因此,第二部加载操作将会是读取捕获寄存器的内容。

三、灵活中断服务请求生成
STM计数器可以与两个比较寄存器中的值进行比较。

如果值匹配,则从任意一个比较中生成一个比较匹配事件。

比较操作有两个可编程参数:
START:用于比较操作的第一个位(LSB)位置。
SIZE:要比较的比特数(从零开始)。

使用START和SIZE配置,甚至可以检查单个位转换(将大小设置为0并将起始位设置在想要设置的位)。在右边的图-以下假设参数已配置:
SIZE0=17; START0=10
SIZE1=7 ; START1 = 7;
如下图。比较匹配事件0,从第10位开始比较,比较宽度为17位
比较匹配事件1,从第7位开始比较,比较宽度为7位



四、系统整合



STM的时钟和基准频率由CCU(时钟控制单元)生成
被使能之后由系统锁相环生成
需要同时配置CCU和STM的时钟分频

必须确保Fstm的时钟与系统外围总线时钟(SPB)Fspb是整数倍关系,如果不是STM读出来的值会有误差,具体见用户手册。

应用实例:操作系统的事件基准生成



嵌入式系统中,每个CPU会跑一个实时操作系统RTOS,每个RTOS需要一个对应的CPU和STM来支持

概述:STM可以产生实时操作系统的时钟基准

在多核操作系统中,每个CPU有自己的时间基准

总结
英飞凌TC3系列芯片是一种32位TriCore™微控制器,可以用于汽车、工业和通信领域¹。系统计时器是TC3系列芯片中的一个重要模块,它可以提供多种定时功能,例如周期性中断、延时、PWM波形生成等²。系统计时器也可以用于测量CPU的运行时间和性能³。
系统计时器的配置需要通过一些寄存器来实现,例如STCON、STMCON、STSR等⁶。具体的配置方法取决于系统计时器的工作模式和功能需求⁷。一般来说,需要先选择系统计时器的时钟源,然后设置预分频比和比较值,最后使能系统计时器并开启中断⁸。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_44688936/article/details/128294691

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1903

主题

15576

帖子

11

粉丝