应用场景
最近接触到汽车BMS产品。需要使用到定时器部分,本章将基于S32K358介绍 定时器GPT模块 相关配置。S32K3 包含PIT类型和STM类型定时器。
原理介绍
PIT
PIT时钟源为AIPS_SLOW_CLK,其中RTI时钟为SIRC_CLK,用于在standby模式下唤醒MPU。
PIT共有3个instance,每个instance又有4个channel。其中PIT_0可以被连接成为一个64bit的定时器(正常为32bit定时器)。
PIT定时器为向下计数器,counter值写在LDVAL registers中。
STM
STM时钟源来源于AIPS_PLAT_CLK or FXOSC or FIRC, 可以在CGM中选择。
STM共有3个instance,每个instance 有4个32bit的compare channel, 每个channel都有独立的中断。
1个32 bit的向上计数器,具有自己独立的8位预分频器,可进行0~256级分频。
配置工具
工具:S32KDS3.5 。如果不知道如何使用该工具请自行查阅相关指导说明,以下内容默认读者对该软件具有一定的使用经验,比如如何导入例程等。
软件版本:导入NXP的官方例程(S32K358对应版本),由于汽车行业目前使用EB配置MCAL的居多,可以选择带Autosar封装版本的Demo。导入Autosar接口封装的版本好处在于大部分配置项和EB差不多。NXP也提供了EB版本,但是由于时间有限,后期会在EB上配置该工程并验证。
配置步骤
GPT 配置
第一步:导入官方例程,带Autosar封装的版本。
第二步:配置GPT相关参数。
第三步:在Platform中的Interrupt Controller中添加对应的Handler名。
第四步:在MCU中添加对应的时钟来源。并打开时钟使能。
第五步:时钟表。
第六步:代码部分(配置了ADC0和ADC1)。初始化函数这些不做说明。
以上就是配置GPT的全部。
代码详解
找到对应函数,设置好参数即可。
注意事项
使用NXP的PE调试器时,部分定时器中断通知函数无法进断点,时间到了也不会进去。但使用劳特巴赫则没有该问题。可能是PE的bug。