Autosar MCAL-GTM之定时输入TIM

前言

在上一篇文章中介绍了GTM的时钟管理单元MCAL-GTM之时钟管理CMU。本篇文章介绍GTM中TIM模块的配置,用于测量PWM输入。

TIM

TC27x芯片TIM有四路,每路有8个通道。

定时器输入模块(TIM)负责对GTM的输入信号进行滤波和捕获。输入信号的一些特性可以在TIM通道内测量。对于高级数据处理,TIM模块检测到的输入特征可以通过ARU路由到GTM的后续处理单元。

输入特性是指检测到的输入上升沿或下降沿的时间戳值,以及新的信号电平,或自通道启用以来接收的边缘数,以及整个PWM周期的实际时间戳或PWM信号持续时间

TIM Channel General

配置TIM通道的基础配置项

Tim Channel Input Select

选择TIM通道输入源

INPUT_OF_CURRENT_TIM_CHANNEL:当前TIM通道的输入将是分配给该通道的输入。

INPUT_OF_PREVIOUS_TIM_CHANNEL:当前TIM通道的输入将是分配给前一个通道的输入。如果通道为0,则使用TIM_IN(7)

INPUT_OF_AUX_IN_TOM:当前TIM通道的输入将是相应TOM通道的输出

INPUT_OF_AUX_IN_ATOM:当前TIM通道的输入将是相应ATOM通道的输出

INPUT_OF_VAL:当前TIM通道的输入将是TimChannelValInitSignal选择的固定值,该值即表示VAL_x


GTM_TIMi_IN_SRC寄存器定义了MODE_x和VAL_x,通道Mode和Val,还有GTM_TIMx_CHy_CTRL寄存器中的CICTRL位GTM_TIMi_AUX_IN_SRC寄存器中的SRC_CHx一起决定最终的输入信号。

MODE_x(1)=0, VAL_x(1)=0:TIM通道的位字段CICTRL定义的输入信号用作输入源

MODE_x(1)=0, VAL_x(1)=1:TIM通道的信号TIM_AUX_IN用作输入源

MODE_x(1)=1: 状态VAL_x(1)定义TIM通道的输入电平

ATOM_OUT和TOM_OUT也可以作为TIM的输入信号(即选项INPUT_OF_AUX_IN_TOM和INPUT_OF_AUX_IN_ATOM):


根据GTM_TIMy_AUX_IN.SRCx来选择输入信号:


cfg配置输入选择:


cfg配置Val_x:

Tim Channel Mode Select

选择Tim通道的模式,此处选择TPWM,即采集PWM信号频率及占空比。

对应寄存器CTRL中的TIM_MODE

cfg中配置:

Tim Channel Enable

Tim通道使能,对应寄存器CTRL中的TIM_EN,若在one-shot模式下,该位在操作完成后自动清除

cfg中配置:

Tim Channel Signal Edge Select

选择测量边沿,对应寄存器CTRL中的DSL

0:测量从下降沿开始(低电平测量)

1:测量从上升沿开始(高电平测量)

cfg中配置:

Tim Channel One-shot Mode

是否使能单次测量模式,对应寄存器CTRL中的OSM,此处选择不使能

Tim Channel Port Pin Select

选择TIM输入对应的Port口。需要按照引脚定义和原理图来确定。实际使用的引脚需要和TIM通道对应

cfg中配置:


如何对应Port和TIM通道

以Port P00.9为例,引脚定义P00.9作为PWM输入信号采集

在用户手册中搜素P00.9,找到GTM to Port Mapping表


此处可知,TIM0的通道0和TIM1的通道0都可以map到该引脚上。这里我们使用TIM0_0,

External Capture Mode

每个通道都可以在外部捕获信号EXT_capture上运行。用于此信号的源可以由寄存器TIMi_CHx_ECTRL中的位字段EXT_CAP_SRCx配置

可以使用寄存器TIMi_CHx_CTRL中的位EXT_CAP_EN为TIM信道x启用外部捕获功能,它将在每个上升沿触发。为所选输入信号TIM_IN[x]和AUX_IN[x]的每个上升沿应用脉冲生成.

cfg中配置外部捕获模式和选择触发源:

Tim Channel Clock Select

选择通道时钟,根据GTM_TIM1-3_CHx_CTRL寄存器

TIM只能选择CFGU中的时钟

cfg配置Tim时钟:

此时表示Tim0通道0的时钟为CLOCK_0,由CMU配置可得,此处时钟为10MHz

TimChannelCnts InputSelect and Value

选择Cnts的输入,对应寄存器为CTRL中的CNTS_SEL,为0时使用CNT寄存器作为输入,为1时使用TBU_TS0作为输入。芯片手册中的下图可以很好的表示该位的选择。


对于Value来说,只有在TIPM、TBCM和TGPS模式下才可以写入,此处我们使用的是TPWM模式,该配置项没有意义。

cfg中配置:

TimChannel Ecnt Ovflw Setting

Ecnt计数溢出设置,对应寄存器为CTRL中的FR_ECNT_OFL,该配置项默认选择0,溢出将在ECNT位宽度=8,为1时溢出将在EECNT位宽度上发出信号(全范围)(EECNT没找到,不是很明白)

Ecnt:边沿计数,ECNT统计每个传入的过滤边(上升和下降)。输入信号电平是计数器的一部分,可以通过ECNT的位0获得。

由上图可知,溢出后会产生一个中断ECNTOFL_IRQ,是否使能中断还有一个配置项。

cfg中配置:

TimChannel Ecnt Reset Setting

Ecnt复位设置,对应寄存器CTRL中的ECNT_RESET,配置为是否允许定期采样模式下重置ECNT计数器,此处配置为不允许。

cfg中配置:

TimChannel Gpr0/Gpr1 Input Select

Gpr0表示测量的占空比时间,Gpr1表示测量的周期时间。

这两个输入对应的寄存器为CTRL中的GPR0_SEL,EGPR0_SEL,GPR1_SEL,EGPR1_SEL。此处配置的还是TIMEBASE_TBU_TS0,可以实现PWM采集。TBU默认的时钟为CMU_CLK0(实际应该还要配置TBU模块中的时钟和使能)

cfg中配置:


Gpr0,Gpr1配置的都是TIMEBASE_TBU_TS0

TimChannel Tbu0 Bits Select

选择TBU0的位,对应寄存器GTM_TBU_CH0_CTRL中的LOW_RES,可以选择Base寄存器中的0-23位或3-26位

cfg中配置:

TimChannel Usage

这决定了该频道是否将用作复杂驱动程序或ICU,或者将不使用它。
USED_BY_OTHER_DRIVERS_OR_UNUSED:指定此通道未使用或由其他模块(ICU配置。
USED_BY_GTM_DRIVER:指定将此通道配置为复杂驱动程序。

此处配置为USED_BY_OTHER_DRIVERS_OR_UNUSED,后面配合ICU使用

cfg中配置:

至此,基础配置项就完成了。其他配置项保持默认即可,对于PWM采集来说可以暂不使用。

TimChannelErrorInterrupt

不使能错误中断

cfg中配置:

TimChannelFilterConfig

滤波配置,不使能滤波

cfg中配置:

TimChannelInterrupt

中断配置,

TimChannelTimeoutDetection

通道超时检测,不使能超时检测

至此,TIM配置项就完成了。

总结

在配置完TIM模块后,还需要配置ICU模块,并关联对应的TIM通道。ICU模块是Autosar Mcal定义的模块。将在下一篇文章中介绍相关配置。


若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~
建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值