目录
6.5.5.1 Continuous Counting Up Mode
6.5.5.2 Continuous Counting Up-Down Mode
6.5.5.3 One-shot Counting Up Mode
6.5.5.4 One-shot Counting Up-Down Mode
7.5.5.1 Immediate Edge Propagation Mode
7.5.5.2 Individual De-glitch Time Mode (up/down counter)
7.5.5.3 Individual De-glitch Time Mode (hold counter)
7.5.5.4 Individual De-glitch Time Mode (reset counter)
7.5.5.5 Immediate Edge Propagation and Individual De-glitch Mode
7.5.8 .1 TIM PWM Measurement Mode (TPWM)
7.5.8 .2 TIM Pulse Integration Mode (TPIM)
7.5.8 .3 TIM Input Event Mode (TIEM)
7.5.8 .4 TIM Input Prescaler Mode (TIPM)
7.5.8 .5 TIM Bit Compression Mode (TBCM)
7.5.8 .6 TIM Gated Periodic Sampling Mode (TGPS)
7.5.8 .7 TIM Serial Shift Mode (TSSM)
前言
GTM模块功能非常的强大也就会非常的复杂,我们在介绍GTM模块的时候仅站在工程开发者的角度去介绍需要用户关注和配置的关键地方,且仅重点介绍GTM对于PWM信号的输入输出功能,对于原理其其他复杂功能仅粗略介绍,详细的原理介绍请参考芯片手册,复杂的GTM功能作者也没有实践经验。
缩略词
简写 |
全称 |
GTM |
General Time Module |
PWM |
Pulse Width Modulation |
CMU |
Clock Management Unit |
CCM |
Cluster Configuration Module |
TBU |
Time Base Unit |
TOM |
Timer Output Module |
CCU |
Counter Compare Unit |
TIM |
Timer Input Module |
正文
1.GTM模块功能概述
通用定时器模块(General Timer Module)是博世(Bosch)公司所设计的一个模块。GTM可确保在汽车动力系统应用中实现准确的多输入数据采集和多输出信号生成。GTM可实时捕捉数字输入信号的变化并对其进行特征数据提取,以便进一步处理。由于GTM强大的可编程性,允许其使用复杂的脉冲调制(PWM)生成几乎任何信号形状。多个变成通道可并行允许,同时确保同步信号生成。
当前主流的半导体厂商,如Infineon, Renesas, NXP, ST, e.g.都在自家的MCU中集成了不同版本的GTM模块,满足不同的可编程PWM的需求。
1.1 GTM具体功能
GTM基础功能
. 过滤,解析输入的PWM信号
. 输入可调制的(占空比,频率可可编程)PWM信号
GTM复杂功能
通过单个模块或者多个模块组合提供复杂的功能
. 无刷直流电机控制
. 发动机管理应用的发动机角度时钟
. 生成喷射/点火脉冲
….
1.2 GTM架构
GTM 系统架构旨在为嵌入式控制应用提供灵活且可扩展的平台。 这种灵活性和可扩展性通过体系结构实现,其中子模块旨在提供特定于定时器的功能。 这些子模块由基础设施组件提供支持,这些基础设施组件提供时钟,时基(Time bases)和通信路径来连接子模块。 通过添加或删除不同应用程序域的子模块,可以实现可扩展性。
基础组件子模块
子模块 |
功能 |
CMU |
为GTM内部模块和计数器提供时钟分频器 |
TBU |
为其他子模块提供24位宽的时间戳 |
ICM |
中断集中器,捆绑GTM内部中断,以减少到CPU的中断数量 |
PSM |
参数存储模块,可用作FIFO,将参数存储进GTM或从GTM取值 |
BRC |
广播数据,以一对多的方式通过高级路由单元传输数据 |
ARU |
高级路由单元,以时分复用方式路由53位数据,实现一对一传输 |
输入输出子模块
子模块 |
功能 |
TIM |
提供8个输出通道,可对输入信号进行特征提取或测量 |
TOM |
提供16个通道用于产生PWM。每个通道既可以独立于其他通道允许,也可以相对于其他TOM通道允许 |
ATOM |
与TOM不同,ATOM是与ARU连接的定时器输出模块。可以生成代表时间戳的PWM信号或复杂的输出序列 |
DTM |
生成带死区的PWM。此外,DTM还可用于组合TOM或ATOM输出信号 |
MCS可以理解位GTM的内核。MCS有自己独立的内部RAM。可编程的对输入信号进行操作,并产生复杂的输出信号。输入信号铜鼓ARU路由到MCU,输出命令通过ARU路由到ATOM。
特定应用的子模块
子模块 |
功能 |
DPLL |
用于发动机位置检测和生成角度时钟 |
MAP |
负责将TIM0采样的信号映射到DPLL模块 |
SPE |
SPE子模块在TIM->SPE->TOM信号传输路径中提供无刷直流输入模式检测和无刷直流输出模式产生的功能 |
用于功能安全的子模块
子模块 |
功能 |
CMP |
CMP模块可以比较来自TOM或者ATOM模块的两个相邻通道输出,并在这两个信号不相同时产生错误 |
MON |
MON模块用于监控GTM内部时钟和MCS |
2. GTM模块输入时钟
GTM模块使用fGTM作为模块的输入时钟,根据<< ??? >>一文我们知道fGTM在Clock的CCU模块配置。
需要注意的是fGTM也就是GTM模块中的SYS_CLK. SYS_CLK是GTM IP中的定义。
2.1.fGTM的值怎么计算
如上截图所示,fGTM的取值根据CCUCON0.GTMDIV的值和fSOURCEGTM的值来确定,fSOURCEGTM又根据CCUCON0.GTMDIV的不同而不同。
值得注意的是在MCAL配置工具EB中没有对CCUCON0.GTMDIV和CCUCON0.SPBDIV的配置,而是通过fSPB和fGTM的配置值去反推(生成寄存器的配置代码)fSOURCEGTM和CCUCON0.GTMDIV和CCUCON0.SPBDIV.
参考在<<【TC3xx芯片】TC3xx芯片的Clock System功能详解>>一文,如果我们配置:
fsource0 == fPLL0 == 300MHz
fsource1 == fPLL1 == 320MHz
fsource2 == fPLL2 == 200MHz
fSPB == 100MHz
fGTM == 200MHz
则反推出:
CCUCON0.GTMDIV = 0x01
CCUCON0.SPBDIV = 0x03
也就是因为CCUCON0.GTMDIV == 0x01,则:
fGTM / 1 == fSOURCEGTM == fSPB * 2 == 200MHz.
3. CMU
3.1 CMU功能
5 Fixed Clock |
CMU_FXCLK[x] |
Used for TOM sub-module for PWM generation |
9 Divided clocks |
CMU_CLK[y] |
Used for other sub-modules of GTM for signal generation |
3 external clocks |
CMU_ECLK[z] |
Used for external peripheral components |
CMU模块是系统时钟(SYS_CLK, 也就是fSTM)的时钟分频器 (clock divider),其他子模块的counter 计数都是由CMU提供。
考虑到GTM内部晶体管的功率消散,这个系统时钟不能超过 100MHz,GTM 内部的时钟最大频率可达到 200MHz。
SYS_CLK = fGTM clock p