一、概述
NXP 推出的 S32K3 系列 MCU 是针对汽车应用的高性能车规级 MCU,该系列芯片最高支持 ASIL-D 等级的功能安全,广泛应用于汽车BMS、底盘控制器、车身控制器等汽车应用中,本文将给大家介绍下 S32K3 芯片中的 STCU2 模块,即自检控制单元,该模块是实现功能安全的主要模块之一,该模块主要用于实现对芯片内部的逻辑单元和内存单元进行自检,下文将重点介绍这个模块的功能。
二、主要特性
STCU2 模块主要包括 MBIST 和 LBIST 两大功能,LBIST 主要针对逻辑电路,而 MBIST 主要针对存储器。
STCU2 模块主要包括以下特性:
-
可控制 LBIST/MBIST 的并发或顺序执行
-
可编程的 LBIST 延迟并发启动
-
可编程的内部时钟预分频器,用于降低内部时钟和 LBIST 时钟的频率
-
BIST 序列执行过程会对 PLL Lock 信号进行监控
-
支持可编程的 BIST 序列执行看门狗定时器,可以设置 BIST 序列执行的最大时间
-
支持可编程的寄存器写访问看门狗定时器,可以设置寄存器解锁后允许进行写访问的最大时间
-
BIST 自检是否通过可以通过寄存器进行读取
-
BIST 内部的错误状态可以通过寄存器进行读取
-
支持当检测到错误时向 FCCU 模块进行报告
-
支持冗余的可恢复和不可恢复的故障生成逻辑,以提高可靠性
-
支持全局的寄存器写保护机制,需要提供两个安全密钥才可访问
-
当检测到看门狗定时器超时时,在 BIST 序列完成后自动进入全局省电模式
-
当软件解锁 STCU2 的寄存器以进行写访问时,看门狗时钟自动唤醒
-
当固定的寄存器写入访问看门狗定时器超时时,看门狗自动进入省电模式
三、功能描述
STCU2 模块的框图如下:
图 3.1 STCU2 模块内部框图
STCU2 模块内部有三个状态机,分别是:
-
Master FSM
-
Loader Shifter FSM
-
WDG FSM
Master FSM 状态机是 STCU2 的核心单元,其主要负责协调所有的自检操作以及其它状态机,Loader Shifter FSM 主要用于对 MBIST 和 LBIST 的参数进行编程,并根据存储在 STCU2 寄存器中的参数、在 Master FSM 的控制下获取相关测试结果。WDG FSM 则用于评估 MBIST 和 LBIST 的所有调度时间,以及在 STCU2 编程错误的情况下判断是否超时。
LBIST 和 MBIST 的执行时间可以在 STCU2 Watchdog Granularity 寄存器中进行配置,配置值总共是 32 位,例如配置为 1 ,则表示超时时间为:(1+1)* 16 = 32 个 STCU2 的时钟周期(通常为 40MHz),即 0.8 us,用户应根据实际自检序列的执行时间进行配置,一般情况下 BIST 执行的时间是低于 10 ms,约为 5.8 ms 左右,当在配置的时间内,LBIST 或这 MBIST 序列还没有完成则会停止序列的执行并且在 ERR_STAT[WDTOSW] 位进行置位,标记为看门狗超时。
图 3.2 STCU2 Watchdog Granularity 寄存器描述
S32K3 的 LBIST 只有一个分区,MBIST 则分成 12 个分区,如果自检配置为顺序执行,则会按照每个分区顺序执行下去,执行的顺序可以通过寄存器进行配置。其中 STCU2 的配置寄存器中的 PTR 域(bit 21~30)可以配置第一个运行的分区。0x0 代表 LBIST 的分区 0,0x80 代表 MBIST 的分区 0,0x81 代表 MBIST 的分区 1,以此类推,0x3ff 则表示没有 BIST 执行。其它值则是非法的,有非法值存在则 ERR_STAT 寄存器的 INVPSW 位会置位。
图 3.3 STCU2 配置寄存器描述
每个 BIST 分区都有一个控制寄存器进行配置,分别为 LB_CTRL0 和 MB_CTRL0~18 寄存器,这些寄存器中可以配置当前分区自检完成后需要执行的下一个分区,可通过 PTR 域进行配置,具体如何配置跟 STCU2 的配置寄存器的使用一样,在此不在赘述。
图 3.4 STCU2 MBIST 控制寄存器描述
四、参考资料
-
《S32K3XXRM.pdf》,Rev 9,2024.07