当前位置: 首页 > backend >正文

汽车功能安全 -- TC3xx Error Pin监控机制

目录

1.TC3xx SMU FSP简述

2.TLF35584的Error Monitor

3.SMU配置FSP


白天有朋友问到了Error Pin使用。

正好,我们就接着上文继续来看ESM(External Safety Mechanism)。

在上篇汽车功能安全 -- TC3xx外部看门狗里面,我们提到了ESM机制的系统方案示例,介绍了ESM[HW]:SYS:WATCHDOG_FUNCTION机制,如下:

今天结合这个图,我们再来聊聊TC3xx的ESM[HW]:SYS:FSP_ERROR_PIN_MONITOR机制

1.TC3xx SMU FSP简述

这个机制说起来也很简单,它需要一个独立于AURIX的组件来监控FSP Error Pin,FSP Error Pin输出预定义波形表示MCU内部存在故障的,由于这是纯硬件设计,因此状态输出非常迅速,并且只需要软件按需配置。

既然FSP是SMU的一部分,自然我们要回忆回忆SMU的框架,如下图所示:

当功能安全机制触发后会产生SMU alarm事件(可以是脉冲也可以是电平)给到SMU,SMU根据用于预定义配置触发相应行为,具体如下:

  • alarm在MCU内部行为:
    • 向CPUs发起中断请求
    • 产生NMI
    • 向CPUs发起CPU复位请求
    • 向SCU发起系统\应用复位请求
  • 给外部通知错误状态:
    • 通过ErrorPin向外部通知错误状态。

而TC3xx向外部设备报告错误状态这个行为叫做FSP(Fault Signaling Protocol,手册15.3.1.8),报告状态所用的物理pin脚当然就是我们熟悉的P33.8,此外还有一个不怎么熟悉的P33.10。

FSP有三种输出模式,分别是:

  • Bi-stable protocol (default):使用1个pin,人话就是错误状态为0,正常状态为1
  • Dynamic dual-rail protocol:使用2个pin,错误状态两个pin为0,正常状态为一个pin为1,一个为0,交替翻转;
  • Time-switching protocol:使用1个pin,错误状态为0(注意,这个只是MCU定义的),正常状态为占空比为50%的PWM波。

那我们根据什么来选择FSP输出模式呢?我没有准确答案,只能从官方推荐上入手。

在英飞凌Safety方案里,有这么一个框图:

里面提到AURIX通过P33.8输出错误状态给到TLF35584,而图上提供的波形为PWM,那是否说明要选取什么模式其实是需要依赖外部设备对ErrorPin的监控设计, 可能在TLF35584是这种,换到例如NXP FS6500又需要另外一种,这是题外话。

2.TLF35584的Error Monitor

我们还是回头看看TLF35584针对Error Pin监控做了什么设计,示意图如下:

SMU通过Error Pin输出错误状态(假设是0)给到35584,该芯片内部设计了Error Monitor用于监控错误状态,当它发现在一段时间内本该翻转的信号没有翻转,这时候就会通知Safe Control通过SS1、SS2输出错误状态,示意图如下:

 当然还有一种情况就是翻转频率突然变快,这个时候也需要35584处理,如下:

 根据手册描述,TFL35584认为正常的ErrorPin频率应该是10-50kHz,我们SMU应该怎么配置呢?

3.SMU配置FSP

首先我们要配置Port33.8为输出,提到输出能力,这个是port部分,不多讲。

其次就是要配置SMU寄存器FSP、PCTL,寄存器定义如下:

 将Port33.8给到SMU控制,需要配置PCS、HWEN、HWDIR,如下:

FSP寄存器就比较关键,首先是Mode要选对,当然是time switch mode,其次就是要给输出波形设定频率,根据手册,我们要配置PRE2

而根据TLF35584的有效频率定义,我们需要计算 fBACK 100MHz /Prescale要在10~50KHz,从上图看配置为11B最为合适。

总结伪代码如下:

SMU_PCTL.U |= 0x85;
//MODE=2time switching; PRE2=3 (100MHz/4096 = 24.4kHz)
SMU_FSP.U = 2 << 5 | 3 << 3; 

SMU配置好了,还需要配置TFL35584,使能error monitor,配置SS2 delay时间等等,这不在今天的范畴了。

就酱,拜拜。

http://www.xdnf.cn/news/16205.html

相关文章:

  • Django集成Swagger全指南:两种实现方案详解
  • FastDFS如何提供HTTP访问电子影像文件
  • 《Nature》|scRNA Velocity剪切速率分析
  • 【实操记录】docker hello world
  • 二开----02
  • Colab中如何临时使用udocker(以MinIO为例)
  • Kotlin 内联函数
  • LeetCode|Day25|389. 找不同|Python刷题笔记
  • 小程序安卓ApK转aab文件详情教程MacM4环境
  • C++中std::string和std::string_view使用详解和示例
  • Redis数据库入门教程
  • 前端安全问题怎么解决
  • 一篇文章了解HashMap和ConcurrentHashMap的扩容机制
  • Node.js 中的内置模板path
  • 论文阅读:《Many-Objective Evolutionary Algorithms: A Survey. 》多目标优化问题的优化目标评估的相关内容介绍
  • 机器翻译编程
  • 【安卓笔记】解决livedata粘性事件
  • 在 Alpine Linux 中创建虚拟机时 Cgroup 挂在失败的现象
  • Springboot宠物用品商城的设计与实现
  • 详解力扣高频SQL50题之197. 上升的温度【简单】
  • 星慈光编程虫2号小车讲解第二篇--向左向右平移
  • Python编程进阶知识之第五课处理数据(matplotlib)
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(结)
  • 100条SQL语句分类精讲:从基础到进阶的实操指南
  • 医疗系统国产化实录:SQL Server国产替代,乙方保命指南
  • 机器学习的基础知识
  • 洛谷 P1996 约瑟夫问题之题解
  • kafka的shell操作
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • MapStruct类型转换接口未自动注入到spring容器中