AutosarMCAL开发——基于EB Gpt驱动
目录
- 1.Gpt原理
- 2.EB配置以及接口应用
- 2.1 EB配置
- 2.2 接口应用
- 3.总结
1.Gpt原理
autosar GPT模块(General Purpose Timer,通用定时器)主要用于汽车ECU中的时间测量、计数和产生定时中断。它支持单次性和周期性定时器,可以在达到预设的定时值时通过中断通知系统,从而实现对时间敏感任务的精确控制。GPT模块利用微处理器的时钟单元提供精准的定时时钟功能,通常可达到微秒级到毫秒级的精度。
注意区分GPT与GPT12关系,GPT为autosar抽象的通用定时器,Gpt12为英飞凌MCU的一个外设与GTM、CCU类似作用,GPT配置中可以选择硬件单元使用GTM还是GPT12.
硬件模块(Tc3xx GPT12)
其中该模块共有5个16bit的定时器(T2~T6)分组为GPT1(T3-T4)和GPT2(T5-T6)
GPT1与GPT2区别
GPT1架构如下
其中T3为核心定时器T2与T4为辅助定时器
GPT2架构如下
其中fgpt为Mcu输出至GPT12模块的时钟,SRx为中断指定了对应中断号,所有在Irq模块中需配置对应中断号
GPT工作方式
除上述四种模式外还有Reload模式capture模式PWM模式等应用,详情参考TC3xx用户手册,另外GPT1与GPT2关于定时器组合应用的方式也有所不同也在用户手册中有详细描述;
以下为One-Shot模式与continuous对于Gpt1与Gpt2的实现区别:
- 使用GPT1块实现连续模式逻辑通道需要两个定时器,核心定时器T3和一个辅助定时器(T2或T4),使用GPT2块实现连续模式逻辑通道只需要T6(使用CAPREL寄存器作为重新加载寄存器),即使用Gpt1\2的reload工作方式实现GPT连续通道
- 实现单次模式逻辑通道只需要gpt1或gpt2块中的一个定时器。
2.EB配置以及接口应用
2.1 EB配置
使用GPT12作为GPT模块的硬件单元
配置步骤:
1.时钟配置
2.GPT 通用配置
3. GPT通道配置
4. GPT时钟配置参考配置项
5. Irq配置
6. GPT12资源分配
1.时钟配置
GPT12模块时钟的配置顺序是:SPB时钟——GPT12分频——GptTimer通道分频
GPT模块并无单独设置时钟频率的选项,由于大部分外设都是挂载值SPB总线上的,故输入GPT的时钟参考SPB时钟。
AutosarMCAL开发——基于TC3x系列时钟系统浅析
这里的最大指的是分频后的时钟频率
实际上GPT12的分频系数是有一个块分频BPS1和独立分频TxI共同决定的,公式为F(BPS1)*2^TxI 其中F(BPS1)标识BPS1不同的配置代表不同块分频,x为Timer id,EB在这里的通道分频只设置了一个参数,推测底层应该是做了处理,直接按配置计算也是能得到正常结果的。
时钟计算:当前配置GPT12中T2时钟=100M/32 = 3.125M
2.GPT 通用配置
3. GPT通道配置
4. GPT时钟配置参考配置项
链接至MCU时钟源配置
6. GPT12资源分配
使用GTM作为GPT模块的硬件单元
1.配置时钟
2.GPT 通用配置
3.GPT通道配置
4.GPT时钟配置参考配置项
1.配置时钟
GTM配置时钟步骤:GTM时钟——Cluster0分频——CMU分频
2.GPT 通用配置
同上
3.GPT通道配置
选取GTM作为GPT硬件实现
进行模块链接
4.GPT时钟配置参考配置项
同上
2.2 接口应用
1.IrqGpt_Init();//IrqGtm_Init(); Irq初始化
2. Gpt_Init(&Gpt_Config);//初始化Gpt
2.SRC_GPT120T3.B.SRE = 1;// SRC_GTMTOM00.B.SRE = 1; 中断使能
3. Gpt_EnableNotification();//开启中断通知函数
4.Gpt_StartTimer();//启动Gpt定时器
接口名 | 传入参数 | 说明 | 返回参数 | 说明 | 功能 |
---|---|---|---|---|---|
IrqGpt_Init() | Void | - | void | - | 初始化Gpt中断配置 |
IrqGtm_Init() | Void | - | void | - | 初始化Gpt中断配置 |
Gpt_EnableNotification() | uint8 Channel | Gpt通道 | void | - | 使能通知函数 |
Gpt_StartTimer() | uint8 Channel;uint32 value | Gpt通道;设定计数值 | void | - | 设定通道计数值并启动定时器通道 |
3.总结
本文为博主个人学习总结记录,如有不正,欢迎指正