600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【转载】外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用

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

时间:2024-06-17 08:08:26

相关推荐

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

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

原创-09-13胡恩伟汽车电子expert成长之路

内容提要

引言

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),我将其分享至如下百度云盘,工大家参考学习:

链接:/s/1hs9Z3pE

密码:6zw2

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

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

汽车电子expert成长之路公众号系列文章列表

浅谈嵌入式MCU开发中的三个常见误区

浅谈嵌入式 MCU 软件开发之应用工程的堆与栈

浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

浅谈嵌入式MCU软件开发之代码风格与代码优化

浅谈嵌入式MCU软件开发之startup过程详解(从复位向量到main函数之前的准备工作)

浅谈嵌入式MCU软件开发之startup过程详解(在CodeWarrior 5.1 中实现RAM自定义初始化)

浅谈嵌入式MCU软件开发之S12(X)系列MCU 中断ISR在CodeWarrior 5.1 IDE 中的三种写法

浅谈嵌入式MCU硬件设计之MCU最小系统电路

S12(X)系列MCU的片上存储器资源与分页访问机制详解(一)

S12(X)系列MCU的片上存储器资源与分页访问机制详解(二)

S12(X)系列MCU的加密(Secure)原理和解密(Unsecure)方法

使用 Cyclone 离线编程器对 S12(X)和 MagniV S12Z 系列 MCU 片上 NVM 编程

Qorivva MPC56xx/57xx系列MCU的模式控制与切换(片上外设资源使能与功耗控制)

外设使用Tips之MSCAN接收ID滤波器设置

外设使用Tips之TIM定时器使用FAQ和使用经验

S32DS 使用 tips--使用Flash from file下载S19或elf文件

S32DS 使用tips--S32DS for ARM v1.3工程到S32DS for ARM V2.0迁移升级方法和注意事项

S32DS 使用 tips--工程属性配置(编译选项和C编译器、汇编器及链接器设置)

CodeWarrior IDE使用tips之map文件详解

CodeWarrior IDE使用tips之prm链接文件详解(自定义存储器分区以及自定义RAM数据初始化与在RAM中运行函数)

CodeWarrior IDE使用tips之bug定位绝技--hotsync与attach调试

CodeWarrior IDE 版本选择与 License功能(feature)和价格,授权形式差异、激活方法与安装使用

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

胡恩伟

NXP汽车电子FAE

9月12日于山城重庆

微信扫一扫

关注该公众号

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。