S32K5xx ADC 功能安全机制设计
适用平台:NXP S32K5xx 系列(S32K566 等),含 SARADC_0 / SARADC_1 / LPE_SARADC、SINC、LPE_LPCMP 0–2、TEMPSENSE 五个模拟/模数相关模块
资料来源:NXP S32K5 Foundation Training —— Analog(ADC - SINC - LPCMP - TEMPSENSE) 与 Safety(AAES AMCU Systems and Applications)、S32K5xx Reference Manual Rev.2 Chapter 63 Safety Overview(2026-06-01)、S32K5 RTD ADC Driver User Manual(UM85ADCASRR23-11)、S32K5 Safety Manual(SEooC 文档)
版本说明(2026-10-15):Foundation 培训材料基于 S32K5RM Rev2 DraftE 与 S32K5xx DS Rev1 DraftE,RM 引用取自 Rev.2 正式版 Ch.63。所有寄存器名、位域与默认值在量产前必须以对应型号的正式 Reference Manual 和 Safety Manual 逐条核对。
增补(2026-10-15):新增第 7 章「VCU 加速踏板应用:失效场景与 ADC 侧的额外机制」—— 以加速踏板双路采集为例,给出 F1–F10 失效场景清单与 ADC 硬件层 / VCU 软件层的机制映射;应用层门限为工程惯例示例值,须按项目 HARA 标定。
关联阅读:本目录 R52 和 M7 双核独立 OS 的休眠设计方案(电源域 PD0/PD1/PD2 划分)、MPU 内存保护单元设计方案(ASIL 分区隔离)。
1. 为什么 ADC 必须做功能安全设计¶
ISO 26262 的概念安全架构里,一条典型的安全链路是:
ADC 是模拟世界进入数字世界的唯一入口。一旦 ADC 给出错误转换值,上游的传感器监测和下游的控制决策会同时被污染,且应用层往往无法区分"真实信号越界"与"ADC 疯了"。因此 NXP 在 RM Ch.63 Safety Overview 中把 ADC self-test 列为与 LBIST/MBIST 并列的 specific BIST 之一:
"The implementation of the ADC self-test serves a special purpose that is important for a safety-related usage of the ADC. This self-test provides test steps that permit an independent assessment of the elements of the ADC integrated within this chip."
[来源: S32K5xx RM Rev.2, Ch.63 §63.7.2]
S32K5 按 ISO 26262 以 SEooC(Safety Element out of Context) 开发,目标完整性等级覆盖 ASIL D。对 ADC 而言,功能安全机制分为三层,本文按此展开:
| 层次 | 机制 | 回答的问题 |
|---|---|---|
| 精度层 | 校准(Calibration) | "转换结果准不准?" —— 补偿制造偏差与温漂 |
| 自检层 | Self-Test 算法 S/O/C + 看门狗 | "ADC 元件坏没坏?" —— 永久故障检测 |
| 监控层 | 模拟看门狗(AWD)、SINC 检测器、TEMPSENSE 阈值 | "这次转换可不可信?" —— 运行时数据合理性 |
2. 模拟子系统总览(安全视角)¶
| 模块 | 实例 | 定位 | 与安全相关的关键特性 |
|---|---|---|---|
| SARADC | SARADC_0、SARADC_1、LPE_SARADC | 14-bit SAR 模数转换,最高 2 MSa/s | Self-Test(算法 S/O/C)+ 自检看门狗定时器、4 路模拟看门狗、内部带隙基准通道 |
| SINC | SINC(1 实例) | 外部 Σ-Δ 调制器位流抽取滤波 | SCD 短路/开路检测、CAD 时钟缺失检测、ZCD 零交叉检测、break signal 关断输出 |
| LPCMP | LPE_LPCMP_0/1/2 | 低功耗比较器(CMP + 8-bit DAC + ANMUX) | STANDBY 下 Round-Robin 触发、滞环、窗口模式、唤醒比较 |
| TEMPSENSE | TEMPSENSE(1 实例) | 片内高精度温度传感(BJT + Σ-Δ + 抽取滤波 + 校准引擎) | normal 与 secure 双地址空间阈值比较器、过温/欠温/panic 多级阈值 |
电源域提示:按 PD0/PD1/PD2 划分(见休眠设计文档),LPE 侧模拟外设(LPE_SARADC、LPE_LPCMP 0–2)隶属 PD1,主平台 SARADC_0 / SARADC_1 随 PD2 一起关断。在 LPRUN 场景做 ADC 安全监控时,必须选用 LPE 侧实例。
[推导自电源域表,量产前以 RM 电源章节复核]
3. SARADC 硬件基础¶
3.1 实例与通道模型¶
| 项目 | SARADC_0 | SARADC_1 | LPE_SARADC |
|---|---|---|---|
| BCTU 触发 | 支持 | 支持 | 支持 |
| DMA | 支持 | 支持 | 支持 |
| 硬件通道交错(interleaving) | 支持 | 支持 | 支持 |
| 模拟看门狗数量 | 4 | 4 | 4 |
| 触发源数量 | 51 | 51 | 51 |
| 外部通道 | 32 | 32 | 32 |
| 外部 MUX 扩展通道 | 32 | 32 | 32 |
- 全芯片共 96 路标准模拟输入,另支持经外部 MUX 扩展 96 路扩展输入。
- 分辨率最高 14-bit,转换结果存入 16 位宽数据寄存器。
- 采样率最高 2 MSa/s;内置 bandgap 电压基准通道(自检算法 S 的被测对象之一)。
- 每实例含 P-SARADC(Plus)与 M-SARADC(Minus)两个 SAR 引擎,差分模式由两者协同完成。
通道交错陷阱:部分 ADC 通道由多个 pad 驱动,具体接哪个 pad 由
GPR_1.GPR_RWF_0[ADC_CHxx]决定(如ADC1_X0_P16默认走 GPIO 322,可切到 GPIO 240)。改交错等于改硬件拓扑,安全评审时必须与原理图一起冻结。
3.2 转换公式与三种启动模式¶
$$ \text{Digitalcode}=\frac{V_{in}}{(VREFH-VREFL)}\times\left(2^{RESOLUTION}-1\right) $$
| 模式 | 触发 | 通道选择寄存器 | 行为 |
|---|---|---|---|
| Normal | 软件 / 硬件 | NCM0/1/2 |
One-Shot 或 Scan(连续循环);从最低通道号顺序转换到最高 |
| Injected | 软件 / 硬件 | JCM0/1/2 |
仅 One-Shot;到达时挂起正在进行的 Normal 链,转完注入链后从挂起点续跑 |
| BCTU | BCTU 硬件 | 由 BCTU 送入通道号 | 单通道转换;结果经数据总线 + Next command / End of conversion 信号返回;MC[CTUEN]=1 使能 |
Normal 模式下若
NCMn全为 0 却收到启动触发,硬件置位IS[ECH]并发出 End of Chain 中断 —— 这是"转换链配置丢失"的天然哨兵,建议在安全应用中挂接处理。
3.3 平均(Averaging)¶
- 校准路径:最多 1024 次转换平均。
- 输入数据路径:最多 32 次转换平均。
平均提高的是有效精度与抗噪能力,属于精度层手段;它不能检测 ADC 元件失效,不要与自检混淆。
4. 校准(Calibration):精度补偿,不是安全机制¶
定位先讲清楚:校准补偿的是制造偏差与运行环境(温度、供电)变化引起的 offset / gain / 电容失配,目标是"准"。ISO 26262 意义上的安全机制要回答的是"坏没坏",由 Self-Test 承担。两者互补,不可互相替代。
4.1 硬件规则(Foundation Training)¶
- 采样并转换已知参考电压,在受控条件下推导 offset、gain、电容失配的校正值。
- 必须作为 SARADC 初始化流程的一部分执行,否则达不到最佳精度。
- 两种复位对校准的影响截然不同:
- functional reset:所有寄存器回默认值,但校准寄存器被保留 —— 无需重校。
- destructive reset:每次之后必须重新执行校准。
- 运行期间工作条件发生变化时(温度大幅波动、供电变化等),建议重新校准。
4.2 RTD 驱动 API¶
/* 配置期(AutosarExt 容器):
* AdcEnableCalibration = true
* AdcEnableAsyncCalibration = true (可选,异步模式)
* AdcCalibrationPrescale (校准时钟输入选择)
*/
Adc_Init(&AdcConfigSet); /* 校准不会由 Init 自动启动 */
Adc_Calibrate(); /* 无进行中转换时显式调用 */
/* 异步校准:分两次调用 */
Adc_Calibrate(); /* 第一次:启动校准,随后可执行其他任务 */
/* ... 期间禁止调用除 Adc_DeInit() 外的任何 ADC API ... */
Adc_Calibrate(); /* 第二次:阻塞等待完成并恢复校准占用的寄存器 */
DET 错误:
Adc_Calibrate()超时返回ADC_E_TIMEOUT(校准操作超时)。与自检的耦合:一旦启用 Self-Test,必须先执行校准(Foundation Training 原文:"It is mandatory to run calibration procedure if Self-Test is enabled.")。自检算法的期望值是在校准后的器件上定义的,跳过校准会导致自检误报。
5. Self-Test:三大算法深度解析¶
SARADC 可自动检查自身元件并置位错误标志。自检的输入不是外部模拟信号,而是内部已知量(基准、内部节点),因此是真正独立的评估。
5.1 算法总览¶
| 算法 | 名称 | 被测对象 | 序列特征 |
|---|---|---|---|
| S | Supply Self-Test | Bandgap 电压 VBG、供电 AVDD、VREFH、VREFL、VREFH/2、VREFH/3、2×VREFH/3 |
7 步原子序列(atomic,执行期间不可被中断插入正常转换之外的动作) |
| O | Offset Self-Test | 比较器失调(Comparator Offset) | 单一序列 |
| C | Capacitor Self-Test | 电容阵列:33 MSB + 17 ISB + 17 LSB,对 P-SARADC 与 M-SARADC 各自执行 | 多步原子执行 |
5.2 自检模拟看门狗(Self-Test Analog Watchdog)¶
- 数字接口为每个算法提供独立的看门狗寄存器组,判定自检转换结果是否落在该算法的 guard area 内。
- 算法内每一步转换后都比较结果与上下门限;越界时:
- 对应错误位被置位;
- 记录出错的步号(step number)—— 排障时可直接定位坏在哪一步,而不是只知道"自检挂了"。
5.3 自检看门狗定时器(Watchdog Timer)¶
- 监控自检算法的执行序列,验证算法在安全时间(safe time)内完成。
- 每个算法有独立的看门狗定时器,互不影响。
- 安全时间值编程在
STBR[WDT]。 - 计时窗口定义:以算法 S 为例,从 Step 0 启动(含其间插入的正常链转换)到下一轮 Step 0 再次启动为一个周期;超时即判序列故障。
5.4 RTD 驱动 API¶
/* 配置期:AutosarExt 容器 AdcEnableSelfTest = true
* AdcSelfTestInputSamplingAlgCVal 默认 24(范围 1–255)
* AdcSelfTestInputSamplingAlgSVal 算法 S 测试转换采样相位时长
*/
Adc_SelfTest(); /* 无进行中转换时显式调用;超时返回 ADC_E_TIMEOUT */
AdcSelfTestInputSamplingConfiguration容器定义算法 C / S 测试转换的采样相位时长,直接影响自检建立的精度 —— 改动前先读 RM 对应章节,不要凭经验拍值。
6. 模拟看门狗(Analog Watchdog):运行时数据合理性监控¶
自检回答"器件坏没坏",模拟看门狗回答"这一次转换结果可不可信"—— 两者时间尺度和覆盖的故障模型完全不同,必须同时使用。
6.1 硬件机制¶
- 每实例 4 个模拟看门狗,各自持有上阈
THRH与下阈THRL。 - 所选通道转换完成后,结果与双阈比较,越界产生阈值违例中断:
WTIS[WDGnH] |
WTIS[WDGnL] |
转换数据 |
|---|---|---|
| 1 | 0 | 数据 > THRH |
| 0 | 1 | 数据 < THRL |
| 0 | 0 | THRL ≤ 数据 ≤ THRH(正常) |
| 1 | 1 | THRH < 数据 且 THRL > 数据(异常组合) |
- 每通道可经
CWEN字段独立使能;经CWSEL_n选择归属哪个看门狗。
6.2 RTD 驱动 API¶
/* 配置期:AdcEnableWatchdogFunctionality = true
* AdcChannel 下 AdcEnableThresholds = true,
* 指定 AdcThresholdRegister(THRH/THRL)与 AdcWdogNotification
*/
Adc_ConfigureThreshold(/* 运行时改写阈值 */);
Adc_EnableWdgNotification(Channel); /* 使能通道的看门狗事件通知 */
Adc_DisableWdgNotification(Channel); /* 关闭 */
⚠️ 驱动限制(RTD ADC UM §3.5 原文):"Watchdog threshold functionality not validated." —— 阈值看门狗功能在驱动层面未经充分验证。若安全案例依赖 AWD,必须在自己的平台上做补充验证与误差分析。
另两条同节限制:Adc0/Adc1 的 DMA 功能未经验证;LPE_BCTU 在 Design Studio 中不可用;Cortex-M4 侧中断/DMA 数据传输未经验证。
7. VCU 加速踏板应用:失效场景与 ADC 侧的额外机制¶
前六章讲的是"ADC 本身"的机制;本章把它们放进最典型的 ASIL 应用场景里检验 —— 加速踏板(APPS,Accelerator Pedal Position Sensor)。选它作为试金石有三个原因:
- 信号链全模拟:电位器 → 线束 → ADC,应用层软件使不上力,检测责任大量前移到 ADC 与信号调理;
- 失效即非预期扭矩:踏板信号错误直接映射到"非预期加速 / 失速",是 VCU 侧等级最高的安全目标之一(具体等级以项目 HARA 为准,通常 ASIL C/D);
- 双路冗余是行业惯例:APPS1/APPS2 两路电位器把"两路转换结果互相对照"做成了硬性要求,而两路是否同期采样,是 ADC 配置决定的。
本章聚焦模拟电位器踏板。若采用 SENT 等数字传感器,安全机制的一部分(CRC、rolling counter)由传感器侧提供,链路不同,不在本文展开。
7.1 应用信号链与安全目标¶
- 机械踏板驱动双电位器:量程通常 0.5 V–4.5 V,两路斜率相反(互补设计,一路 0.5→4.5 V、另一路 4.5→0.5 V),便于交叉校验;
- VCU 以 5–10 ms 周期采样两路,解算踏板行程并进入扭矩仲裁;
- 线束上的上拉/下拉电阻不是可选装饰 —— 它决定开路、短路在 ADC 眼里呈现哪种可区分电平(见 7.2 的 F5);
- 安全目标(示例):"防止输出超过驾驶员意图的扭矩",任何单点失效不得导致该违背。
7.2 失效场景清单(FMEA 视角)¶
| # | 失效场景 | 典型物理成因 | 危险表现 | 主检测层 |
|---|---|---|---|---|
| F1 | 信号卡死(stuck) | 电位器导轨磨损、触点氧化、接插件松动 | 踏板位置不跟随物理踏板 | 软件(新鲜度 + 时间窗) |
| F2 | 双路信号不一致 | 一路老化、半断路、EMC 单路受扰 | 两路解算出的扭矩不同 | 软件 plausibility(依赖 ADC 同期采样) |
| F3 | 对地短路 | 线束破损、接插件进水 | 读数 ≈ 0,误判全松 / 全踩 | ADC:AWD |
| F4 | 对电源短路 | 线束与 VBAT/5 V 短接 | 读数 ≈ 满量程 | ADC:AWD |
| F5 | 开路 / 断路 | 焊点开裂、端子退出 | 悬空漂移或被上/下拉钳位 | ADC:AWD + 调理判据 |
| F6 | 超出量程 | 传感器超程、安装错位 | 读数越过物理行程 | ADC:AWD |
| F7 | 信号跳变(spike) | EMC 耦合、地弹、参考纹波 | 单周期尖峰,扭矩抖动 | ADC 平均/滤波 + 软件梯度限幅 |
| F8 | 双路非同期采样 | 两次独立触发、中断抖动 | 快速踩踏板时两路"对不上" | ADC 触发/扫描配置 |
| F9 | 数据陈旧(stale) | DMA 停摆、中断丢失、组未重启 | 用旧位置算扭矩 | 软件新鲜度(依赖 ADC 完成标志) |
| F10 | 地偏移 / 参考漂移 | 单端接线、地弹、供电跌落 | 系统性偏置,零位判据失效 | 比率式接线 + 校准 |
7.3 ADC 侧机制映射:每个场景靠什么抓¶
| 失效 | ADC / 硬件机制 | RTD 驱动落点 | 说明 |
|---|---|---|---|
| F1 | 周期扫描 + 转换完成标志 / 时间戳 | Adc_StartGroupConversion + 组状态查询 |
卡死本质是"该变不变",先保证采样节拍本身新鲜 |
| F2 | 双通道同期转换:scan 背靠背或 BCTU 单次触发 | Adc_CtuSetList + Adc_CtuStartConversion |
两路落在同一转换链,时间差微秒级,远小于踏板毫秒级动态 |
| F3 / F4 / F6 | AWD 上下阈越界即判短路 / 超程 | Adc_ConfigureThreshold + Adc_EnableWdgNotification |
阈值按有效窗 + 余量设定(见 7.4) |
| F5 | AWD + 调理设计:断路读到上拉电平,与短路电平可区分 | 同 AWD | 检测能力一半在信号调理,不在 ADC |
| F7 | Averaging 多采样平均 | 配置项 averaging | 平均服务精度,同时压低尖峰误报 |
| F8 | BCTU 触发源与扫描顺序冻结 | Adc_CtuSetList / GPR 交错配置 |
通道交错陷阱见第 3 章;调用序列见第 11 章 |
| F9 | 转换完成中断 / FIFO watermark 作新鲜度锚点 | Adc_SetupResultBuffer / Adc_CtuSetFifoWatermark |
没有完成事件 = 没有新鲜数据 |
| F10 | 比率式测量:VREFH 跟踪踏板供电 | 硬件接线 | 读数随供电同比缩放,天然抗电源跌落 |
| 全场景 | 上电 Self-Test(算法 S/O/C) | Adc_SelfTest |
元件级故障(比较器 / 电容阵列 / 参考)在上电时暴露 |
一句话总结:AWD 保"单路边界",plausibility 保"两路关系",Self-Test 保"元件本身",新鲜度保"数据时效" —— 四类机制覆盖的是不同故障模型,互相不可替代。
7.4 一个可落地的配置示例(SARADC_0)¶
以下为示例值,量产前按传感器数据手册与项目标定确定:
- 分辨率与基准:14-bit,设
VREFH = 5.0 V(与踏板传感器供电同源;实际以原理图与 RM 电气特性为准)→ 1 LSB = 5.0 / 2^14 ≈ 0.305 mV; - 有效窗 0.5 V–4.5 V → raw ≈ 1638 … 14746;
- AWD 边界各留 0.1 V 余量:
THRL ≈ 0.4 V(raw ≈ 1311)、THRH ≈ 4.6 V(raw ≈ 15073)—— 越界即短路 / 开路 / 超程,置 DTC 并进入降级; - 采样链:CH0 = APPS1、CH1 = APPS2 放同一 group,scan 模式背靠背转换;或经 BCTU 以 5–10 ms 周期硬件触发,保证确定性节拍;
- 结果缓冲:
Adc_SetupResultBuffer+ streaming(双缓冲),转换完成中断里做 plausibility 与新鲜度检查; - boot 检查:上电后首组转换,踏板必须处于零位(raw < 死区),否则不允许退出 limp 模式;
- ⚠️ 两个已知限制:AWD 在 RTD 驱动中 not validated(第 6 章),Adc0/1 的 DMA 未验证 —— 踏板数据通路建议先用中断模式,DMA 需平台级验证。
7.5 软件检查层:ADC 数据质量的"消费者"¶
以下机制超出 ADC 范畴,但每一项都依赖 ADC 提供新鲜度与同期性,列在这里保证链路完整:
- plausibility:
|APPS1 − APPS2|窗口 + 去抖(示例 100 ms); - stuck:死区内"长时间不变"判卡死(示例 300–500 ms);
- gradient:单周期变化率限幅(示例:全行程不低于 150–200 ms);
- 新鲜度:每控制周期必须有新样本(完成中断 / watermark + 滚动计数),陈旧数据立即降级;
- 互斥:踏板有效 + 制动有效同时出现即冲突;
- 降级与恢复:limp home(限制扭矩 / 怠速)→ 安全状态;恢复需重新通过 plausibility。
7.6 风险与验证要点¶
| # | 风险 | 严重度 | 缓解 |
|---|---|---|---|
| 1 | AWD not validated,踏板越界检测直接进安全案例有缺口 | 🔴 高 | 平台级 AWD 验证 + 软件冗余阈值检查 |
| 2 | 双路采样非同期 → 动态工况 plausibility 误报 / 漏报 | 🔴 高 | scan 背靠背或 BCTU 单次触发双路 |
| 3 | 只配 AWD 不配 plausibility → 两路"各自合理但互相矛盾"漏检 | 🟠 中高 | 双层并行:AWD 保单路,plausibility 保关系 |
| 4 | 断路 / 短路电平设计不当 → F3/F4/F5 不可区分 | 🟠 中高 | 上拉 / 下拉电阻 + 判据表评审 + 台架注入验证 |
| 5 | 踏板线束最长,EMC 尖峰被误判为真实踏板动作 | 🟠 中高 | Averaging + gradient 限幅 + EMC 注入试验 |
| 6 | 未做零位 boot 检查 → 上电时踏板非零位直接输出扭矩 | 🟡 中 | boot-to-safety 序列加零位判据 |
| 7 | 电源跌落未做比率式处理 → 全体读数偏移 | 🟡 中 | VREFH 跟踪供电 + 周期性重校 |
注:7.2–7.6 中的门限、时间窗均为工程惯例示例值,须按项目 HARA、传感器数据手册与台架标定确定;NXP 文档不覆盖应用层算法,本节的机制映射与风险结论需在项目安全分析中独立确认。
8. SINC:Σ-Δ 链路的数字保护逻辑¶
当电流、电压等模拟量经外部 Σ-Δ 调制器进入 S32K5 时,SINC 不只是抽取滤波器 —— 它内置了一组面向开路/短路/时钟失效的专用检测器,这是模拟看门狗之外的第二道运行时防线。
8.1 数字保护三件套¶
| 检测器 | 监测对象 | 典型用途 |
|---|---|---|
| SCD(Short-Circuit Detector) | 短路(过流)与开路(过压)错误 | 检测执行器驱动/传感器线路故障 |
| CAD(Clock-Absence Detector) | 调制器时钟输入缺失 | 时钟树失效时立即暴露,避免滤波器输出静默劣化 |
| ZCD(Zero-Cross Detector) | 滤波通道符号翻转 | 过零事件监控(如 PWM 应用) |
- Break signal 输出:保护事件发生时直接关断外部器件 —— 硬件级故障遏制,不等软件反应。
- 每通道 16 项 FIFO(带 watermark)、每通道 2 个 DMA 请求、可编程高/低检测限、偏移 bias 补偿、HPF 去直流、支持 Manchester 编码位流、脉冲触发输出。
8.2 滤波器与转换模式¶
- 结构:每通道 1 个 Primary Filter(PF,带 shift 的 CIC,24-bit 精度)+ 可选 CIC 子模块 + 可选 HPF/bias/唤醒。
- 阶数:
CnDR[PFORD]=0选 FastSinc;>0选对应阶数(最高 3 阶)。 - OSR:
CnDR[PFOSR]+1,最大 2048。 - 转换模式(
CnDR[PFCM]):
| 模式 | 行为 |
|---|---|
| Single(00b) | 每转换需一次触发 |
| Continuous(01b) | 触发后持续转换,下一触发取消并重启 |
| Always(10b) | 触发后持续转换直到被禁用,忽略后续触发 |
| Fixed-Number(11b) | 转换满 CnCFR[FIFOWMK] 设定数量后停(NIS[CHFn]=1) |
- 转换时间:首个 24-bit 样本 = ORD × OSR × MOD_CLK 周期;后续样本每 OSR × MOD_CLK 周期出一个。
安全用法建议:给 SINC 配置 CAD + SCD + 可编程高/低限,等价于给 Σ-Δ 链路补上了"数据合理性 + 线路完整性 + 时钟活性"三项监控;break signal 直接映射到执行器关断路径,延迟最低。
9. LPCMP 与 TEMPSENSE:低功耗监控搭档¶
9.1 LPCMP(低功耗比较器)¶
- 3 个实例:
LPE_LPCMP_0/1/2,每实例 8 路输入通道 + 1 个 8-bit DAC + ANMUX。 - 安全相关能力:可编程滞环、窗口模式(
WINDOW_EN,仅允许在已知稳定期采样比较器输出,抑制 PWM 类应用的误触发)、输出反相、滤波计数。 - STANDBY 下的 Round-Robin Trigger 模式:配合 RTC-API 周期性扫描多路输入并与上次结果比较,不等则唤醒芯片 —— 这是"睡觉时也不丢监控"的关键机制(仅 continuous 模式;RTC_CLK 仅支持 SIRC/SXOSC)。
- 中断标志:
CSR[CFR]下降沿、CSR[CFF]上升沿、CSR[RRF]round-robin 周期完成。
9.2 TEMPSENSE(片内温度传感)¶
- 结构:BJT 传感器 + Σ-Δ ADC + 抽取滤波器 + 校准引擎;数字输出直接以 °C 表示。
- 模式:Single One-Shot / Periodic One-Shot(测量间自动休眠,可编程间隔)/ Low-Power。
- 阈值比较器同时位于 normal 与 secure 地址空间,支持方向与阈值编程,多级阈值覆盖欠温 / 过温 / panic;结束测量与阈值违例均有中断和状态位。
- 数字格式:
DATAn[DATA_VAL]为 16-bit 有符号数,低 6 位为小数位 —— 例:0000_0110_0101_0000= +25.25 °C,1111_1001_1011_0000= −25.25 °C(二进制补码)。
过温即系统性风险:S32K5 的 fault reaction 分级中,"SoC out-of-context local"一类的例子正是过温 —— TEMPSENSE 的 panic 阈值建议直接接入主安全核的故障处理路径,而不是仅做日志。
10. 从故障到安全状态:VFCCU 反应分级与 SAF 软件栈¶
ADC 自检错误、看门狗违例、SINC 检测器事件,最终都要汇入芯片的故障管理单元(FMU)才能变成受控动作。
10.1 故障反应分级(Foundation Training: Safety)¶
| 反应类型 | 名称 | 故障影响 | EOUT | 反应所有者 | 升级路径 |
|---|---|---|---|---|---|
| Transparent | 透明 | 被观测元件 | 不置位 | 安全机制自身 | 无(如 ECC 单位纠错) |
| R1 | 应用内本地 | 限于应用及其资源 | 不置位 | 受影响应用 | 告警中断 → 全局软件 |
| R1 | 应用外本地 | 可能影响全芯片/共享资源 | 不置位 | 主安全核 | 告警中断 → 全局硬件 |
| R1 | SoC 上下文本地 | 共享外设/共享内存类 | 不置位 | 受影响应用(分布式) | 告警中断 → 全局软件 |
| R1 | SoC 外上下文本地 | 过温等系统性故障 | 不置位 | 主安全核 | 由片外安全硬件观测 |
| R2 | 全局软件 | 全芯片 | 置位 | 主安全核 | 故障中断(如 ECC 多位错误) |
| R3 | 全局硬件 | 全芯片 | 置位 | RGM | 复位(如 EDC gasket / XBIC 错误) |
- R1 四类若在告警/升级超时窗口内未完成恢复,自动升级。
- VFCCU 规模:5 个 LVFCCU(本地汇聚)+ 1 个 CVFCCU(中央管理),最多 8 类反应经 27 个反应输出,EOUT 支持 7 种引脚模式(Input-Only / Push-Pull / Open-Drain / Open-Collector / Bistable / Fault-Toggle / Time Switch)。
- 每条故障输入的推荐立即/延迟反应以 RM 附件 fault map 为准(
S32K5xx_fault_map.xlsx)。
10.2 Boot-to-Safety:安全上下文在此建立¶
上电后主安全启动核依次:检查安全机制是否按预期工作 → 启动芯片 BIST 检测潜在永久故障 → 检查安全配置(所需机制已使能且配置正确)。全部通过才进入 Normal Operation;任一失败,由应用决定降级模式或进入安全状态。ADC 的首次自检与校准应纳入 boot-to-safety 序列。
10.3 安全软件栈(SAF / SPD / SCST)¶
| 组件 | 作用 |
|---|---|
| SPD(Safety Peripheral Drivers) | Bist + eMcem(Extended Microcontroller Error Manager)两个安全外设驱动,AUTOSAR 与非 AUTOSAR 环境均适用 |
| SAF(Safety Framework) | 6 组件:Bist、eMcem、mSel(Mode Selector)、sBoot、sCheck(周期性平方校验)、sReco(软件恢复) |
| SCST(Structural Core Self-Test) | 运行时检测处理器核永久故障,诊断覆盖度 90%,覆盖 M4/M7/R52 |
软件侧的周期性策略:sCheck 提供周期性校验框架,ADC 的
Adc_Calibrate()+Adc_SelfTest()应按安全分析确定的周期挂入其中;自检结果(错误位 + 步号)纳入 eMcem 的诊断信息一并记录。
11. RTD ADC 驱动:安全相关配置与调用时序¶
11.1 配置项清单(AutosarExt)¶
| 参数 | 作用 | 备注 |
|---|---|---|
AdcEnableSelfTest |
使能 Adc_SelfTest() API |
安全应用必开 |
AdcEnableCalibration |
使能 Adc_Calibrate() API |
启用自检则必须执行校准 |
AdcEnableAsyncCalibration |
异步校准(两次调用) | 校准期间不得调用其他 ADC API |
AdcCalibrationPrescale |
校准时钟输入选择 | — |
AdcSelfTestInputSamplingAlgCVal |
算法 C 采样相位时长 | 默认 24,范围 1–255 |
AdcSelfTestInputSamplingAlgSVal |
算法 S 采样相位时长 | 同上 |
AdcEnableWatchdogFunctionality |
模拟看门狗总开关 | 预编译期移除相关代码 |
AdcEnableThresholds / AdcThresholdRegister / AdcWdogNotification |
通道级阈值与通知 | 每通道独立 |
11.2 推荐调用序列¶
上电 / boot-to-safety
│
▼
Adc_Init(&AdcConfigSet) ── 失败:ADC_E_TIMEOUT(硬件无法进入 power-down/idle)
│
▼
Adc_Calibrate() ── 补偿 offset/gain/电容失配
│ functional reset 后不必重跑;
│ destructive reset 后必须重跑
▼
Adc_SelfTest() ── 算法 S / O / C + 双看门狗
│ 超时:ADC_E_TIMEOUT
▼
┌─ 正常运行 ─────────────────────────────────────┐
│ Adc_StartGroupConversion(Group) │
│ ├─ Normal / Injected / BCTU 模式 │
│ ├─ 模拟看门狗实时监控(AWD 中断 → notification)│
│ └─ SINC 链路:SCD / CAD / ZCD + break signal │
│ Adc_StopGroupConversion(Group) │
└────────────────────────────────────────────────┘
│
▼
条件变化(温度剧变 / destructive reset)→ 回到 Adc_Calibrate()
11.3 DET 运行时错误速查¶
| 函数 | 错误码 | 触发条件 |
|---|---|---|
Adc_Init() / Adc_DeInit() |
ADC_E_TIMEOUT |
ADC 硬件无法进入 power-down / idle |
Adc_StartGroupConversion() / Adc_StopGroupConversion() |
ADC_E_TIMEOUT |
进行中的转换无法中止 |
Adc_SetHwUnitPowerMode() |
ADC_E_TIMEOUT |
设置电源模式超时 |
Adc_Calibrate() |
ADC_E_TIMEOUT |
校准操作超时 |
Adc_SelfTest() |
ADC_E_TIMEOUT |
自检操作超时 |
Adc_SetClockMode() |
ADC_E_UNINIT / ADC_E_INVALID_CLOCK_MODE / ADC_E_TIMEOUT |
全局指针为空 / 时钟模式非法 / 超时 |
12. 设计检查清单与风险登记¶
12.1 检查清单¶
- ADC 实例选型确认电源域:LPRUN 场景仅 LPE_SARADC 可用(PD1),主域 SARADC_0/1 随 PD2 关断
- boot-to-safety 序列包含:
Adc_Init→Adc_Calibrate→Adc_SelfTest,且首结果入库 - destructive reset 处理流程中安排了重新校准(functional reset 不需要)
- 自检启用即校准的前提条件已在配置中固化(
AdcEnableCalibration+AdcEnableSelfTest同开) -
STBR[WDT]安全时间与自检周期匹配(Step0 到下一轮 Step0 的完整窗口) - 自检模拟看门狗错误位 + 步号已接入诊断记录(排障可定位到步)
- 模拟看门狗 THRH/THRL 按信号量程设置,
AdcWdogNotification已挂处理函数 - AWD 驱动未验证的限制已在项目安全分析中显式记录并安排平台验证
- SINC 通道 CAD / SCD / ZCD 已使能,break signal 接入执行器关断路径
- TEMPSENSE panic 阈值接入主安全核故障处理(而非仅日志)
- 通道交错(GPR_RWF_0)配置与原理图一致并冻结
- Normal 模式空链(
NCMn=0)的IS[ECH]中断已挂接(配置丢失哨兵) - 温度/供电大幅变化的运行场景安排了周期性重校(重校期间无正常转换)
- 加速踏板双路通道置于同一 group:scan 背靠背或 BCTU 单次触发,两路采样时间差远小于踏板动态(微秒级 vs 毫秒级)
- 踏板通道 AWD 阈值按有效窗 + 余量设定(示例:0.5–4.5 V 窗,0.4 V / 4.6 V 越界),越界即置 DTC 并降级
- 上拉/下拉电阻设计使 F3 对地短路 / F4 对电源短路 / F5 开路呈现可区分电平,台架逐条注入验证
- VREFH 跟踪踏板传感器供电(比率式接线),电源跌落场景读数同比缩放
- boot-to-safety 增加零位检查:上电首组转换踏板必须处于零位,否则不允许退出 limp 模式
- 每控制周期必须有新鲜样本(转换完成中断 / FIFO watermark + 滚动计数),陈旧数据立即降级
- plausibility 双路一致性窗口与去抖时间、stuck 死区时间窗、gradient 变化率限幅均按 HARA 标定并冻结
- limp home 降级策略(限制扭矩)与恢复条件(重新通过 plausibility)已在安全状态机中定义
12.2 风险登记¶
| # | 风险 | 严重度 | 依据 |
|---|---|---|---|
| 1 | 启用 Self-Test 却跳过校准 → 自检误报,安全机制被"狼来了"废掉 | 🔴 高 | Foundation Training:自检启用的前提是已校准 |
| 2 | destructive reset 后未重校 → 全部后续转换带着错误 offset | 🔴 高 | functional reset 保留校准寄存器,destructive reset 不保留 |
| 3 | 自检/校准期间仍有进行中转换 → API 报错或功能不执行,静默失去保护 | 🔴 高 | RTD UM:调用前提是 no ongoing conversions |
| 4 | 模拟看门狗功能在 RTD 驱动中 not validated,直接用于安全案例有缺口 | 🔴 高 | RTD ADC UM §3.5 Driver Limitations |
| 5 | LPRUN 下错用主域 SARADC → 休眠策略与监控需求互相打架 | 🟠 中高 | 电源域表(推导,需 RM 复核) |
| 6 | Adc0/Adc1 DMA 未验证,安全数据通路若依赖 DMA 需补充验证 | 🟠 中高 | RTD ADC UM §3.5 |
| 7 | 通道交错 GPR 配置与原理图不一致 → 采到的不是想采的 pad | 🟠 中高 | Foundation Training:interleaving 表 |
| 8 | 自检安全时间 STBR[WDT] 配得过紧 → 正常链转换插入导致误超时 |
🟡 中 | 安全时间窗口含间插的正常链转换 |
| 9 | 异步校准期间调用其他 ADC API → 返回错误或静默不执行 | 🟡 中 | RTD UM:仅允许 Adc_Deinit() |
| 10 | SINC Manchester 编码/HPF/bias 配置错误 → 抽取结果系统性偏移 | 🟡 中 | Foundation Training:均为可选功能,需按调制器数据手册配置 |
| 11 | TEMPSENSE 仅接日志未接反应 → 过温事件无故障遏制 | 🟡 中 | Fault reaction 分级:过温属 SoC out-of-context local |
| 12 | LPE_BCTU 在 Design Studio 不可用,工具链方案需提前确认 | 🟡 低 | RTD ADC UM §3.5 |
| 13 | 踏板双路采样非同期 → 动态工况 plausibility 误报 / 漏报 | 🔴 高 | scan 背靠背或 BCTU 单次触发双路(第 7 章 F2/F8) |
| 14 | 只配 AWD 未配 plausibility → 两路各自合理但互相矛盾时漏检 | 🟠 中高 | 双层并行:AWD 保单路边界,plausibility 保两路关系 |
| 15 | 踏板线束最长,EMC 尖峰被误判为真实踏板动作 | 🟠 中高 | Averaging + gradient 限幅 + EMC 注入试验 |
13. 参考资料¶
- NXP S32K5 Foundation Training —— Analog: SARADC, SINC, LPCMP, TEMPSENSE(AAES AMCU Systems and Applications;基于 S32K5RM Rev2 DraftE / S32K5xx DS Rev1 DraftE)
- NXP S32K5 Foundation Training —— Safety(同上)
- NXP S32K5xx Reference Manual, Rev.2(2026-06-01),Chapter 63 Safety Overview(§63.4.2 specific BIST / §63.5 boot-to-safety / §63.7 BIST)
- NXP S32K5xx Safety Manual(SEooC 安全概念、assumptions of use、fault map 附件)
- NXP User Manual for S32K5 ADC Driver(RTD,UM85ADCASRR23-11)—— §3.6.2 Calibration / §3.6.3 Self-Test / §3.6.13 Analog Watchdog / §3.7 Runtime errors / §3.5 Driver Limitations
- 本目录关联文章:S32K5_R52_M7_Sleep_Design_CN.md、S32K5_R52_M7_MPU_Design_CN.md
本文所有寄存器名、位域与默认值均来自上述公开培训与文档;量产前必须与对应型号的正式 Reference Manual 及 Safety Manual 逐条核对,并以项目自身的 HARA/FSC 结论为准。