0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细介绍下Aurix芯片的STM模块

832065824 来源:汽车电子嵌入式 2023-09-26 09:12 次阅读

1. STM硬件资源

1.1 STM硬件单元

TC37x芯片有3个STM模块,每个STM模块可以产生两个SRx_INT中断信号(通过STM模块的Compare功能实现,下文介绍),Davinci OS中的硬件定时器就是使用STM模块的SRx_INT中断信号

4a68b46a-5c00-11ee-939d-92fbcf53809c.png

4a71f764-5c00-11ee-939d-92fbcf53809c.png

1.2 STM时钟

系统冷启动或者系统复位后,fSTM=50MHz,也就是fSTM的一个tick为1/(50*(10^6)) = 0.00000002 s = 20ns.

Note: TC37x的时钟系统后面的文章再介绍,本文默认系统启动后fSTM就为50MHz.

4a7e4dde-5c00-11ee-939d-92fbcf53809c.png

1.3 STM中断源

在1.1章节中介绍了TC37x有3个STM硬件单元,每个STM硬件单元可以产生两个中断信号,中断号计算公式如下截图所示:

e.g. STM0的SR0_INT = 0x300 + 0*8 + 0*4 = 0x300 = 768.

4a8fd7fc-5c00-11ee-939d-92fbcf53809c.png

2. 功能描述

2.1 功能特色

一个不受约束的64-bit计数器,也就是能产生一个0– 2^64的计数,如果我们使用fSTM = 50MHz,那么计数器的最大计数值对应的最大时间为:2^64 * 20ns = 4270079.647..天 = 11698 年,也就说实际使用中这个计数器不可能溢出

这个64b-bit计数器可以同步读出。理论上,TC37x是32-bit系统,每个指令周期顶多能读32-bit数据,TC37x芯片是怎么保证64-bit计时器值同步读出来的了?-- 通过STM_CAP寄存器机制,后面介绍。

64 位计数器的不同 32 位部分可以同步读。STM的64-bit提供了6个32-bitTimer可以同步读出来,后文介绍。

基于与部分 STM 内容的比较匹配,灵活地生成服务请求。通过STM_CMPx的比较机制灵活的产生服务请求事件,后文具体介绍。

系统启动后,STM自动启动。

如果ARSTDIS.STMxDIS被清除,则Application Reset也会ResetSTM registers;如果ARSTDIS.STMxDIS没有被清除,则Application Reset不会ResetSTM registers,只有System Reset才会ResetSTM registers.

2.2 STM计时器Timer

STM作为Timer时,可以提供7个不同基准的Timer:

STM_TIM0: 基准为2^0 tick = 1 tick = 20 ns,也就是每20 ns,计数器加1.

STM_TIM1: 基准为2^4 tick = 16 tick = 320 ns,…

STM_TIM2: 基准为2^8 tick = 256 tick = 5120 ns = 5.120 us,…

STM_TIM3: 基准为2^12 tick = 4096 tick = 81920 ns = 81.92 us,…

STM_TIM4: 基准为2^16 tick = 65536 tick = 1310720 ns= 1.31072 ms,…

STM_TIM5: 基准为2^20 tick = 1048576 tick = 209715220 ns = 0. 20971522 s,…

STM_TIM6: 基准为2^32 tick = 4294967296 tick = 85899345920 ns = 85.899345920 s,…

4aaadae8-5c00-11ee-939d-92fbcf53809c.png

理论上,TC37x是32-bit系统,每个指令周期顶多能读32-bit数据且在读取32-bit数据的时候STM是不会停下来等你再读另一个32-bit的数据的,TC37x芯片是怎么保证64-bit计时器值同步读出来的了?-- 通过STM_CAP寄存器机制,每次读取其中一个寄存器 TIM0 至 TIM5 时,它都会锁定 STM 高部分的内容。因此,在读取下部时, CAP 完全同时保存计时器的上限值。然后,第二个读取操作将读取 CAP 的内容以获得完整的计时器值。

2.3 STM比较器功能

64 位系统计时器的内容可以与 CMP0 和 CMP1 寄存器中存储的两个比较值的内容进行比较。服务请求可以在 STM 与 CMP0 或 CMP1 寄存器的比较匹配上生成。

2.3.1 STM比较功能寄存器

CMCON(Compare Match Control Register)寄存器的MSIZEx位域配置CMPx寄存器从0-bit开始多少位用来和STM比较,MSTARTx位域配置STM Counter的哪一位开始和CMPx寄存器比较。

4acb0a70-5c00-11ee-939d-92fbcf53809c.png

4af1e636-5c00-11ee-939d-92fbcf53809c.png

4b07656a-5c00-11ee-939d-92fbcf53809c.png

2.3.2 STM比较器功能示例

如下图所示,对应的CMCOM的配置为:

MSIZE0 = 10001B = 17D; MSTART0 = 01010B = 10D

MSIZE1 = 00111B = 7D; MSTART1 = 00111B = 7D

MSIZE0 = 10001B = 17D : Compare Register0从0-bit开始的7个bit用于比较

MSTART0 = 01010B = 10D : 和STM的第10-bit位开始的7个bit比较

CMP1类似……

4b193aba-5c00-11ee-939d-92fbcf53809c.png

Compare成功后,就会产生Event,Event可用于配置中断。

2.3.3 STM比较器中断控制

4b21a3da-5c00-11ee-939d-92fbcf53809c.png

Compare中断事件产生举例:

第1步:配置STMx_CMCON. MSTARTx位域,设置比较寄存器在STM中的起始位置

第2步:配置STMx_CMCON.MSIZEx使用STM_CMPx的宽度(多少bit)

第3步:配置STM_CMPx.CMPVAL[31:0]定时器值

第4:配置STM_ICR.CMPxOS到时触发STMIR0还是STMIR1中断

第5步:配置STM_ICR.CMPxEN使能中断,等待定时中断触发

中断触发后:在中断服务例程(ISR,中断服务函数)里设置STM_ISCR.CMPxIRR=1清除中断,并重复上述第5步操作重新使能中断,等待中断触发

2.4 配置STM是否在Debug时停止

OCS.SUS[27:24]位域配置为0时,STM计时不会被外部调试器的操作打断; OCS.SUS[27:24]位域配置为2, 在使用调试器Stop程序的时候,STM会同步Stop计时。

4b2bb960-5c00-11ee-939d-92fbcf53809c.png

3. AUTOSAR OS中的配置

3.1 OsHardwareTimerChannels

Davinci的SIP包中硬件相关的配置都是默认配置好,TC37x芯片有三个STM定时器,每个STM有两个通道(也就每个STM能产生两个中断事件)。

4b4847ba-5c00-11ee-939d-92fbcf53809c.png

3.2 OsIsrs中配置STM中断

OsIsrs中关于STM产生的中断也是默认配置好的,使用三个STM的Channel0通道。

4b55776e-5c00-11ee-939d-92fbcf53809c.png

3.3 OsCounters引用STMTimer

OsCounsters使用硬件定时器STM,需要引用STM的配置。

4bf247f6-5c00-11ee-939d-92fbcf53809c.png

4. 总结

STM一般用作Os的Timer,如果OS中配置使用了STM,那么应用就不能再使用了。具体怎么使用,那就是Os的静态代码实现的了。作为学习,我们理解了STM的Compare Operation机制就能去阅读Os是怎么配置寄存器实现Timer功能的了。

4c150426-5c00-11ee-939d-92fbcf53809c.png






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • 比较器
    +关注

    关注

    14

    文章

    1526

    浏览量

    106489
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
  • 计时器
    +关注

    关注

    1

    文章

    395

    浏览量

    32156
  • STM
    STM
    +关注

    关注

    1

    文章

    555

    浏览量

    42054

原文标题:TC3xx芯片STM介绍

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NVRAM Manager(NVM)模块详细介绍

    存储协议栈负责ECU中非易失性数据的存储管理。存储协议栈的分享包括NVM、MemI、Ea、Fea、Eep、Fls模块详细介绍及代码分析,具体的项目实战请关注本号的后续文章,本篇为NVRAM Manager(NVM)
    发表于 09-06 09:16 4759次阅读

    NVRAM Manager(NVM)模块详细介绍

    存储协议栈负责ECU中非易失性数据的存储管理。存储协议栈的分享包括NVM、MemI、Ea、Fea、Eep、Fls模块详细介绍及代码分析,具体的项目实战请关注本号的后续文章,本篇为NVRAM Manager(NVM)
    发表于 09-15 11:43 4297次阅读

    当外部芯片触发Aurix的NMI时,需要手动写中断服务函数对NMI进行处理吗?

    各位大佬,当外部芯片(如SBC)触发Aurix 的NMI时,需要手动写中断服务函数对NMI进行处理么?
    发表于 01-22 06:35

    Aurix的时钟功能包括几个模块?

    Aurix的时钟功能包括几个模块
    发表于 02-04 06:36

    调试AURIX TC397芯片的ASCLIN模块,为什么lin线电平是5V而不是12V?

    目前调试AURIX TC397 芯片的ASCLIN模块,直接使用官方例程AURIX_ASCLIN_LIN_Master_1_KIT_TC397_TFT,将
    发表于 02-18 08:33

    串口通信专用芯片介绍

    芯片介绍
    jf_24750660
    发布于 :2022年11月22日 07:17:48

    simulink模块详细介绍

    simulink模块详细介绍
    发表于 07-24 22:12

    12864+红外解码的原理、芯片详细介绍

    这是我根据德飞莱改编的程序,对红外解码的原理、芯片详细介绍和理解、12864的使用、以及对多文件的使用多在里面。 特别是对多文件的使用让我感觉单片机的编程简化了很多12864 红外.rar
    发表于 07-19 03:03

    芯片封装详细介绍

    芯片封装详细介绍装配工艺一、DIP双列直插式封装DIP(DualIn-LINE PACKAGE)是指采用双列直插形式封装的集成电路芯片,绝大多数中小规模集成电路(IC)均采用这种封装形
    发表于 11-03 07:41

    AURIX TC2xx芯片命名规则是什么?

    AURIX TC2xx芯片命名规则是什么?
    发表于 11-08 06:46

    WiFi模块ESP8266的使用详细介绍

    第一时间知道,不容错过哦!今天这一讲注意涉及到WiFi模块ESP8266的使用,主要是用WiFi来控制LED0亮灭,包括会详细介绍模块
    发表于 01-18 06:22

    如何安装AURIX™ Development Studio

    AURIX™ Development Studio 安装使用问题安装文件下载软件安装软件使用设置工作文件夹/Workspace查看帮助/Help文档编译/Build调试/Debug调试技巧实用资源
    发表于 01-27 08:16

    AURIX Development Studio的使用方法

    本文主要介绍AURIX Development Studio软件的安装和使用方法。英飞凌针对Tricore系列单片机推出了一款免费的软件——AURIX™ Development Studio,集成
    发表于 01-27 07:07

    AURIX™ Development Studio 安装使用

    AURIX™ Development Studio 安装使用
    发表于 12-03 16:21 13次下载
    <b class='flag-5'>AURIX</b>™ Development Studio 安装使用

    英飞凌AURIX单片机公开课-Aurix Reset & BootROM(1)

    英飞凌AURIX单片机公开课-Aurix Reset & BootROM(1)
    发表于 12-03 16:21 10次下载
    英飞凌<b class='flag-5'>AURIX</b>单片机公开课-<b class='flag-5'>Aurix</b> Reset & BootROM(1)