驱动-MCU 握手协议深度 — 信号 / SPI boot / fault 锁存 / 双路径回报
本质与导读
本质 栅极驱动 IC 与 MCU 不是一根 PWM 线,而是一组握手信号。SPI boot 必须先配阈值过 CRC、driver 才置 RDY 放 PWM,故障到安全动作走两条独立路径:硬件保护自主软关断 + nFLT 硬线,与 MCU 读 SPI 状态命令动作,互相覆盖回报链的单点故障,这是 ASIL D 的硬约束。
1. 接口信号清单
驱动-MCU 之间一组信号各司其职,控制走快通道、配置/诊断走 SPI、故障走专线 + 软状态双份:
| 信号 | 方向 | 作用 |
|---|---|---|
| PWM IN | MCU → driver | 栅极开关控制,走最快通道(直连定时器);死区/最小脉宽是 AoU 硬约束 |
| EN / Enable | MCU → driver | 使能输出(与 RDY 配合做上电门控) |
| nFLT / FAULT | driver → MCU | 故障专线,开漏低有效,硬件最快回报 |
| RDY / READY | driver → MCU | 就绪(UVLO 清 + 配置完),MCU 据此放 PWM |
| RST / nRESET | MCU → driver | 复位 / 清锁存故障 |
| SPI(CSB/SCLK/SDI/SDO) | 双向 | 配阈值(DESAT/OC/UVLO/VGD)+ 读诊断(故障寄存器/Tdie/ADC) |
控制(PWM)与诊断(SPI)分离是关键:PWM 不能等 SPI,SPI 也不该挤占实时路径。
2. 物理本质:SPI 握手协议的必要性
简单模拟驱动 IC(无 SPI)只能硬编码一套保护阈值,三个根因强迫引入 SPI 可编程握手:
① DESAT 阈值必须可调——SiC 的 RDSon 随温度升高约 2.3 次方,冷态和热态下同样短路电流对应的 Vds 相差可达 30%。固定 DESAT 阈值在冷态误触发或热态漏检,只有 SPI 动态配置才能两头兼顾。
② ASIL D 故障覆盖要求两条独立路径——ISO 26262-5 §7.4 要求高完整性故障到安全动作链的 DC(诊断覆盖)由两条物理独立路径提供。单一的 nFLT 硬线只能构成路径 A;MCU 读 SPI 故障寄存器构成路径 B。二者互为冗余,缺一则 SPFM 降至不满足 ASIL D。
③ PWM 不能带错误阈值上电——上电后保护阈值默认为最保守值(往往过于保守导致误触发),必须先经 SPI 写正确值、CRC 确认后,driver 才置 RDY,MCU 才允许放 PWM。"先配 SPI 再放 PWM"是防带错误阈值运行的系统级锁定机制。
3. 上电 + SPI boot 时序
Driver 上电不是直接能开关,而是一段握手:先进安全态、配阈值、校验、就绪,才允许 PWM。次序错就出竞态或带错阈值跑。
- ① VCC 上电 → 达 UVLO — 之前输出强制关(默认安全态),不响应 PWM
- ② 内部 POR + 初始化 — UVLO 去抖 + IC 内部寄存器复位到安全默认值,约 50 μs
- ③ MCU 经 SPI 写配置 — DESAT 阈/blanking、OC 阈、UVLO 档、VGD 驱动强度、保护使能
- ④ CRC / checksum 校验 — 配置寄存器回读 + CRC,确认写对(防 SPI 误码带错阈值跑)
- ⑤ Driver 置 RDY — 配置有效 + 无故障
- ⑥ MCU 拉 EN + 放 PWM — 进入正常运行
硬约束:PWM 必须在 RDY 之后才放;boot 未完就来 PWM = 带默认/错误阈值开关,可能误触发或失保。
4. 故障锁存 → nFLT → 定位 → 清除 闭环
故障处理是 driver 自主 + MCU 协同的闭环,driver 先硬件兜底、MCU 再软件决策:
硬件自主软关断——DESAT/OC/OT/UVLO 命中,driver 不等 MCU:内部比较器百 ns 量级检出 + 软关断数 μs 放电(或拉 STO),整链远快于 MCU 软件中断响应(数十 μs),故必须硬件自主。见 DESAT 保护深度 的 tblank/tSTO 推导。
周期诊断 + 心跳——除被动报故障,MCU 还周期性轮询 SPI 诊断帧 + 与 driver/SBC 跑 watchdog Q&A 心跳(10–100 ms),平时确认 driver 还活着。
锁存 + nFLT——故障写进锁存寄存器(防瞬态丢失)+ 拉低 nFLT 专线通知 MCU。
读状态定位——MCU 经 SPI 读故障寄存器,区分是 DESAT / OC / OT / UVLO 哪类(nFLT 只说"有故障",SPI 才说"哪类")。
命安全态——MCU 据故障类型命整车安全态(切相 / 降扭 / STO/ASC)+ 记 DTC。
清除——经 nRESET / SPI 写清锁存;只在故障根因消失后清,否则反复 trip(chattering)。
关键设计:锁存保证瞬态故障不丢;nFLT(快、粗)+ SPI(慢、细)分工——专线抢时间,SPI 定位因。
5. ASIL D 故障双路径回报
单条回报路径自己也会坏(nFLT 线断、SPI 卡死),所以 ASIL D 要求故障到安全动作走两条独立路径,互为冗余:
路径 A(硬件直通)——Driver 内部保护直接驱软关断 / STO,不经 MCU 决策;nFLT 硬线同时通知。这是兜底,μs 级,不依赖软件。
路径 B(软件)——MCU 读 SPI 状态 + plausibility(相电流/RDY 超时)+ MCU 命安全态。这是确认与系统级协调。
独立性——A 走硬件比较器 + 专线,B 走 SPI + MCU,两路物理 + 逻辑独立;任一路单点失效,另一路仍能进安全态。
定位注意(别和 ASIL 分解混):这条硬件/软件双路径是 driver 回报链上的冗余诊断。真正的 B(D)+B(D) 分解通道是主 MCU 的 SSM + 独立 SBC / 2nd-level,driver 是被它们监视/执行的末端。见 Safe State Manager。
6. TC397 + SPI 驱动 IC 400V/100kW EPS 端到端 Worked Design
目标:证明 SPI boot 完成于系统 FTTI 窗口启动前,且故障-安全动作双路径总延迟远小于 EPS FTTI 和 SiC SCSOA 约束。
6.1 系统假设
以下为分析所用的基准参数,每项均有对应的 SSOT 或系统文档依据。
| 参数 | 值 | 依据 |
|---|---|---|
| 逆变器母线 | 400 V | EPS 典型 |
| EPS FTTI | 50 ms | SSOT topic-e-gas-architecture §8 |
| SiC SCSOA(tSC) | 2 μs | SCT3080AL / SiC 1200 V 典型 |
| SPI 时钟(TC397 QSPI) | 25 MHz | 50 MHz max 的 50% 降频,配线余量 |
| SPI 帧长度 | 24 bit(16 data + 8 CRC) | 典型 SPI 驱动 IC 帧格式 |
| 配置寄存器数量 | 8 个 | DESAT/OC/UVLO/VGD/保护映射/CRC 种子 |
6.2 SPI Boot 时序预算
tBOOT 是从 VCC 跨过 UVLO 阈值到 MCU 发出首个 PWM 脉冲之间的总时间,由以下各步串行决定:
各项展开:
| 步骤 | 时间 | 计算 |
|---|---|---|
| VCC 跨 UVLO 去抖(tUVLO) | 10 μs | 典型 UVLO 滤波 |
| IC 内部 POR + 初始化(tINIT) | 50 μs | 保守值,IC 复位寄存器到安全默认 |
| SPI 写 8 寄存器(tSPI) | 8 μs | |
| SPI 回读 + CRC 校验(tCRC) | 10 μs | + MCU CRC 计算 2 μs |
| Driver 内部置 RDY(tRDY) | 2 μs | IC 处理延迟 |
| tBOOT 合计 | 80 μs | VCC UVLO → RDYN 高 → 首 PWM 使能 |
系统从 aux 就绪到 PWM 首拍的窗口通常 ≥ 100 ms,tBOOT=80 μs 远在此窗口内;相对 EPS FTTI 50 ms 的余量 = 50 ms / 80 μs = 625× ✓
6.3 故障响应时序链
DESAT 硬件路径的 tdetect 和 tSTO 来自 topic-desat-protection SSOT(TI UCC21750-Q1 + SiC 模块):
| 路径 | 链路 | 时间 |
|---|---|---|
| 路径 A(硬件) | SC → DESAT detect | tdetect = 1.09 μs |
| nFLT 专线传播 | ≤ 100 ns | |
| SC → nFLT | ≈ 1.19 μs | |
| SC → 栅极完全关闭 | tdetect + tSTO = 1.09 + 0.81 = 1.90 μs ≤ tSC 2 μs ✓ | |
| 路径 B(软件) | nFLT → TC397 中断服务 | ≤ 500 ns(TriCore 中断延迟) |
| ISR 读 SPI 故障寄存器(2 reg) | ||
| MCU 决策 + GPIO/STO 命令 | ≈ 600 ns | |
| nFLT → STO 命令 | ≈ 3.02 μs | |
| SC → STO 命令(路径 B 总) | ≈ 4.21 μs ≪ FTTI 50 ms ✓ |
SCSOA 符合性:路径 A 在 1.90 μs ≤ 2 μs 内关断栅极,余量 5%,设计上必须按最坏角(Cblank 偏大 + 软关断电流偏小)核对;见 topic-desat-protection 的最坏角分析。
路径独立性确认:路径 A 经 DESAT 比较器 + 栅极直驱(不经 MCU,不经 SPI 总线);路径 B 经 nFLT 中断 + SPI + MCU + STO GPIO。A 路断路时(DESAT 引脚断线)B 路仍经 SPI 诊断心跳发现异常(周期 10–100 ms 轮询);B 路失效时(MCU 死锁)A 路硬件自主完成软关断。
6.4 故障清除流程时序
故障清除是锁存寄存器的复位动作,持续时间由 tblank + tprop + tSTO 决定:
清除四步序:
- MCU 确认故障根因消除(相电流已降至 0,过压已散)
- 写 RST 或 SPI CLEAR bit → driver 内部锁存复位(持续 tclear ≈ 1.90 μs)
- MCU 回读 nFLT:若高 = 清除成功;若仍低 = 根因未消、立即 re-trip
- 重跑 SPI boot 配置校验(可选:仅写保护触发前已变化的寄存器)+ 重置 EN
7. 设计陷阱 G1-G7
本节列出驱动-MCU 握手中最常见的七类系统设计失误,每类都能导致保护失效或 ASIL D 不达标。
G1. SPI 写配置后不回读 CRC,或 CRC 失败无处理——SPI 误码写错 DESAT 阈值(比如写飞到最大值),短路发生时 DESAT 永不触发。正确做法:每次 boot 配置必须回读 + CRC 验证,CRC 失败须重写最多 N 次;仍失败则拒绝置 RDY、永不放 PWM,并向 MCU 报告 boot_fail DTC。
G2. 不检查 RDY 就放 PWM——RDY 未置(UVLO 尚未清除,或配置未完成)时放 PWM,实际是在默认/错误阈值下开关。UVLO 边界时器件可能处于不稳定线性区导致过热,DESAT 阈值默认往往过于保守引发误触发。必须 RDY-gated:MCU 轮询 RDY pin 或等 RDY 中断上升沿,再允许 PWM。
G3. nFLT 与 DOUT 引脚复用配错——多功能引脚(TI 类驱动常见 nFLT2/DOUT 复用)若 SPI 配置为诊断输出(DOUT)而非故障线,nFLT 回报消失,MCU 永远看不到故障。后果:短路时路径 B 完全失效。必须在 SPI boot 时按系统需求明确写 mux 寄存器。
G4. 只信 nFLT 不读 SPI 故障寄存器——nFLT 只说"有故障"不说类别。DESAT 触发和 OT 触发所需的安全态截然不同(前者需 ASC 关闭三相,后者可能只需降扭 + 继续运行)。不读 SPI 定位就无法对症进安全态,轻则过度安全(不必要 EPS 停止)、重则安全态错误(DESAT 触发却只降扭)。
G5. 清故障不等根因消失——根因仍在(如过流还在、短路还在)就写清锁存,driver 立即重新检测到故障再次 trip,陷入 chattering loop。每个 trip 都有一次软关断,对 SiC 器件施加应力;更严重的是 chattering 期间系统反复进出安全态,状态机混乱,DTC 日志爆满。清除前必须等相电流归零、故障物理条件消除。
G6. 路径 A 和路径 B 共享电源或接地(真独立性破坏)——若 DESAT 引脚的偏置电流来自 MCU IO 供电,或 nFLT 开漏的上拉电阻接在 MCU VIO 上,同一供电噪声同时影响两条路径。ASIL D 要求两路物理独立,具体是:路径 A 偏置来自 driver 内部稳压或独立 LDO,路径 B 上拉来自不同供电域,地回路分开。否则单次 VIO 掉电让两路同时哑,ASIL D DC 崩塌。
G7. SPI boot 期间发生故障未处理——配置写到一半时 VCC 抖动或线扰触发 DESAT/UVLO,driver 进入故障锁存,SPI 无法继续。若 MCU 的 boot 状态机没有故障中断 handler,boot 程序阻塞在"等下一条 SPI 响应"死循环,driver 永不置 RDY,系统无法上高压。Boot 状态机必须有 timeout + 故障退出路径:检测 nFLT 在 boot 中途拉低 → 中止 boot → 读 SPI 定位 → 修复 → 重启 boot。
8. 工作极限 C1-C3
C1. 低温冷启(-40°C):boot 反复重启 chattering
低温下电解电容 ESR 剧增(X5R/X7R 在 -40°C ESR 升 3-5 倍),5V aux 供电对 VCC 滤波电容的充电电流受限,VCC 上升斜率减缓。若 VCC 斜率导致在 UVLO_rising(4.0V) 与 UVLO_falling(3.8V) 之间反复振荡(UVLO chatter),IC 会每次入 UVLO 时复位寄存器到默认值,SPI boot 每次被中断重来。后果:系统始终无法完成 boot → 无法上高压。
设计对策:① 选低 ESR 陶瓷电容(X7R 0603 ≥ 4.7 μF)作 VCC 去耦,而非电解;② 确认 aux 供电在 -40°C 下输出电流能力满足 VCC 上升速率;③ MCU boot 状态机设最大重试次数(如 5 次)+ 升温报警。
C2. EMI 重冲 SPI 总线:CRC 失败 lockout
高功率 SiC 开关(400V/100kW)的 EMI 辐射可能在 SPI 走线上耦合毛刺,导致 SPI 数据位翻转。若 boot 期间 CRC 连续失败(比如 5 次),driver 若设计为拒绝 RDY 等待 MCU 人工干预,系统进入永久 lockout 无法上高压。
设计对策:① SPI 总线布线远离高 dv/dt 走线,磁珠 + 100nF + 10Ω 串阻抑制 EMI;② CRC 失败后 MCU 等 10 ms 再重试(让 EMI 干扰脉冲过去);③ 预设最大重试上限(如 10 次)而非无限重试;④ CRC 算法使用 CRC-8 或更强,优于简单奇偶。
C3. MCU 软件死锁(路径 B 失效):路径 A 独立性边界
极端场景:MCU 软件陷入死循环或 WDT 复位中,路径 B 完全失效。路径 A(硬件 DESAT → nFLT → 软关断)独立运作,但有一个隐蔽边界:若 EN 信号由 MCU GPIO 控制且 MCU 死锁时 EN 被误置高,driver 在路径 A 清锁存后可能自动允许重开(取决于 driver 的 EN/FAULT 互锁逻辑)。
设计对策:① EN 信号加 RC 下拉(默认低 = PWM 禁止),MCU 死锁时 EN 自动拉低;② 确认所用 driver IC 的 FAULT+EN 互锁逻辑:多数 SPI driver 在故障锁存期间忽略 EN,但需按 datasheet 验证;③ 若 MCU 有硬件安全监控器(如 TLF35584 SBC),由 SBC 独立拉 EN 低,完全隔离 MCU 软件死锁。
核心要点
- 驱动-MCU 是一组握手信号:PWM/EN(控制)+ nFLT/RDY(状态)+ RST(复位)+ SPI(配阈值/读诊断);控制与诊断分离
- SPI boot 时序:VCC→UVLO 去抖(~60 μs)→ SPI 写 8 寄存器(8 μs)→ CRC 回读(10 μs)→ RDY(2 μs)→ 首 PWM,合计约 80 μs,与 FTTI 50 ms 相比余量 625 倍
- 故障闭环:Driver 自主软关断(1.09 μs + 810 ns,硬件) + 锁存 + nFLT → MCU 读 SPI 定位(~2 μs) → 命安全态 → 根因消失才清
- nFLT(快粗)+ SPI(慢细)分工:专线抢时间( 100 ns 传播),SPI 定位类别
- ASIL D 双路径回报:路径 A 硬件直通(1.90 μs ≤ tSC 2 μs ✓)+ 路径 B 软件(4.21 μs ≪ FTTI 50 ms ✓),两路物理逻辑独立覆盖单点
- 陷阱集中在:CRC 未强制执行(G1)、RDY 未检查放 PWM(G2)、nFLT/DOUT 引脚复用(G3)、不读 SPI 定位(G4)、清故障时机错误(G5)
- 极限:低温 -40°C VCC UVLO chatter(C1)+ EMI 干扰 SPI CRC 失败 lockout(C2)+ MCU 死锁后 EN 互锁逻辑边界(C3)
缩写表
| 缩写 | 全称 | 中文 |
|---|---|---|
| PWM | Pulse-Width Modulation | 脉宽调制(控制信号) |
| EN | Enable | 使能 |
| nFLT | Fault (active-low) | 故障输出(低有效) |
| RDY | Ready | 就绪 |
| RST | Reset | 复位 |
| SPI | Serial Peripheral Interface | 串行外设接口 |
| CRC | Cyclic Redundancy Check | 循环冗余校验 |
| DESAT | Desaturation detection | 退饱和检测(短路保护) |
| OC | Over-Current | 过流 |
| OT | Over-Temperature | 过温 |
| UVLO | Under-Voltage Lockout | 欠压锁定 |
| STO | Safe Torque Off | 安全转矩关断 |
| ASC | Active Short Circuit | 主动短路(安全态) |
| VGD | Variable Gate Drive | 可变栅驱强度 |
| DTC | Diagnostic Trouble Code | 诊断故障码 |
| FTTI | Fault Tolerant Time Interval | 故障容忍时间间隔 |
| SCSOA | Short-Circuit Safe Operating Area | 短路安全工作区 |
| POR | Power-On Reset | 上电复位 |
| DC | Diagnostic Coverage | 诊断覆盖率 |
| SPFM | Single-Point Fault Metric | 单点故障度量 |
Cross-references
- ← 索引
- DESAT 保护深度 — tblank/tSTO 公式推导与 SSOT 真器件数字
- Driver UVLO 深度 — UVLO 故障与上下电时序
- Safe State Manager 深度 — MCU 收故障后命安全态的仲裁
- TI UCC5870 驱动深度 — SPI boot init + 9 protection 阈值调校的代表实现
- Driver IC FMEDA worked — 故障回报链的 DC 与双路径在 FMEDA 里的位置