汽车功能安全 -- 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时间等等,这不在今天的范畴了。
就酱,拜拜。