外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用

内容提要

引言

1. SWT的功能概述

2. SWT的工作模式和初始化

3. SWT喂狗

总结

 

引言

 

NXP的MPC574xP系列汽车级MCU是业界第一款拿到功能安全ISO-26262 ASIL-D Qulification 证书的汽车级MCU--MPC5643L的新一代产品,主要针对底盘安全和新能源电机控制应用,比如EPS、VCU和BMS主控制器汽车电子产品,其为双核锁步PowerPC e200z4内核,加上端到端的ECC(e2eECC)以及失效收集与处理单元FCCU等安全机制可以实现汽车功能安全ISO-26262 ASIL-D等级。

其片内集成的SWT看门狗为了保证FCCU对功能安全的统一管理,其配置和使用与MPC56xx系列的SWT看门狗有所不同,本文将介绍MPC574XP系列的SWT的功能和具体使用方法以及配置时的注意事项。

 

1. SWT的功能概述

 

SWT--Software Watchdog Timer,软件看门狗定时器,是一个递减计数器。作为MPC574xP的片上外设模块,用于防止CPU内核软件跑飞(run away)/死循环陷阱(trap in a loop)或者总线传输失败终止(a bus transaction fails to terminate)造成的系统锁死(system lockup)。一旦SWT使能,用户程序就必须周期性的执行喂狗操作,如果喂狗不及时--未能在SWT定时器溢出之前喂狗,则会产生一个中断或者硬件复位请求,如果该定时器连续2次溢出则总是产生复位请求。

对于以前的MPC56xx系列MCU,SWT的复位请求直接连到(route to) RGM(Reset Generate Module--复位产生模块)直接产生对MCU的硬件复位,而在MPC574xP上,其SWT的溢出事件是作为MCU系统失效连接到FCCU的,通过FCCU的配置决定是否复位MCU:

 

 

 所以要让MPC574xP的SWT正常工作,必须正确配置FCCU相应的失效处理。

 

为了保证MPC574xP的SWT正常工作,主要需要配置的FCCU寄存器是FCCU_NCFS_CFGn非关键失效状态配置寄存器,因为其默认NCFSC14 = 00'b,为无复位响应,必须将其配置为对RGM模块产生短功能复位请求脉冲(NCFSC14 = 01'b)或者长功能复位请求脉冲(NCFSC14 = 10'b)

 

 

因此, 典型的MPC574xP系列MCUSWT相关FCCU初始化配置函数如下:

Tips:关于MPC574xP的FCCU使用请参考如下应用笔记:

AN5248:Using FCCU on MPC5744P (REV 0);

AN5259:MPC574xP FCCU Fault Sources (REV 0);

 

2. SWT的工作模式和初始化

 

通过SWT的控制寄存器SWT_CR,可知SWT定时器工作有正常模式(WND=0)和窗口模式(WND=1):

 

正常模式下:只要在SWT定时器溢出(计数器递减至0)之前执行喂狗都可以分为SWT计数器;

 

窗口模式下:只能在SWT计数器位于SWT_WN(SWT Window Register)SWT窗口寄存器定义的值到SWT定时器溢出(计数器递减至0)之前的这个时间窗口中执行喂狗,其他时间喂狗都会直接产生复位请求;

 

 

Tips:

 必须在SWT软件锁打开(SLK=0)时才能才能配置SWT_TO(SWT Time-out Register)和SWT_WN(SWT Window Register),为了解锁需要将0xC520接着0xD928的解锁序列写入到SWT_SR(SWT Service Register)服务寄存器;

 

将SWT_CR的FRZ位置为1,可以让其计数器在debug时停止计数,从而避免非预期的中断和复位;

 

在MPC574xP上,SWT的时钟源只有16MHz的IRCOSC,故以此看方便的计算溢出周期寄存器配置值;

 

如下为典型的SWT初始化函数:

 

3. SWT喂狗

 

根据SWT_CR控制寄存器的不同配置,SWT的喂狗分为两种模式:

 

固定序列模式(SWT_CR.SMD=0): 向SWT_SR服务寄存器写入0xA602和0xB480的序列

 

随机序列模式(SWT_CR.SMD=1): 向SWT_SR服务寄存器写入由SWT_SK(SWT Service Key Register)服务秘钥寄存器产生的随机序列;

Tips:喂狗时向SWT_SR服务寄存器写入喂狗序列/解锁序列时,请务必使用整个寄存器写,而不要用头文件中定义的位段操作(比如,SWT_0.SR.B.WSC  = 0xA602; SWT_0.SR.B.WSC  = 0xB480;),否则会造成IVOR1异常(至少在S32DS for Power V1.2下);

 

如下为MPC574xP的典型SWT的喂狗函数:

 

总结

 

MPC574xP为了实现更高等级的功能安全,引入了FCCU模块对MCU的片上外设失效和系统功能模块失效进行了统一管理,因此其SWT看门狗定时器在使用时必须配置相应的FCCU模块通道NCFSC14,使能复位请求脉冲,才能让RGM模块在SWT定时器溢出时产生对MCU的复位。

 

针对本文的介绍,我做了一个MPC574xP的SWT看门狗定时器配置和使用的demo工程--MPC5744P_SWT_DemoPrj.zip(基于S32DS for Power V1.2),我将其分享至如下百度云盘,工大家参考学习:

 

链接:http://pan.baidu.com/s/1hs9Z3pE

密码:6zw2

 

 

以上就是今天跟大家分享的内容。希望对大家有用。

        

        本微信公众号已经发布的个人原创精品----嵌套嵌入式系统技术文章链接如下,欢迎大家参考学习,并转发分享:

 

         如果你喜欢本公众号的文章,请点击文章最开始的公众号关注或微信直接长按扫描识别下方二维码关注,你也可以在微信添加朋友-->公众号-->输入"汽车电子expert成长之路"搜索-->点击关注。若对本文观点有任何意见和建议也欢迎留言指出。您的关注、点赞、转发分享是对我辛勤写作的最大肯定。

 



胡恩伟

                      NXP汽车电子FAE

                   2017年9月12日于山城重庆

 

 
 

微信扫一扫
关注该公众号