驱动-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 boot 时序
driver 上电不是直接能开关,而是一段握手:先进安全态、配阈值、校验、就绪,才允许 PWM。次序错就出竞态或带错阈值跑。
- ① VCC 上电 → 达 UVLO — 之前输出强制关(默认安全态),不响应 PWM
- ② 默认/复位态 — 寄存器为安全默认值(保护全开、最保守阈值)
- ③ MCU 经 SPI 写配置 — DESAT 阈/blanking、OC 阈、UVLO 档、VGD 驱动强度、保护使能/Safe State 映射
- ④ CRC / checksum 校验 — 配置寄存器回读 + CRC,确认写对(防 SPI 误码带错阈值跑)
- ⑤ driver 置 RDY — 配置有效 + 无故障
- ⑥ MCU 拉 EN + 放 PWM — 进入正常运行
硬约束:PWM 必须在 RDY 之后才放;boot 未完就来 PWM = 带默认/错误阈值开关,可能误触发或失保。
3. 故障锁存 → nFLT → 定位 → 清除 闭环
故障处理是 driver 自主 + MCU 协同的闭环,driver 先硬件兜底、MCU 再软件决策:
- 检测 + 自主软关断 — DESAT/OC/OT/UVLO 命中,driver 不等 MCU:内部比较器 ~百 ns 检出 + 软关断 数 μs 放电(或拉 STO),整链远快于 MCU 软件中断响应(数十 μs),故必须硬件自主
- 周期诊断 + 心跳 — 除被动报故障,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 定位因。
4. ASIL D 故障双路径回报
单条回报路径自己也会坏(nFLT 线断、SPI 卡死),所以 ASIL D 要求故障到安全动作走两条独立路径,互为冗余:
- 路径 A(硬件直通) — driver 内部保护直接驱软关断 / STO,不经 MCU 决策;nFLT 硬线同时通知。这是兜底,μs 级,不依赖软件
- 路径 B(软件) — MCU 读 SPI 状态 + plausibility(相电流/RDY 超时)+ MCU 命安全态。这是确认与系统级协调
- 独立性 — A 走硬件比较器 + 专线,B 走 SPI + MCU,两路物理 + 逻辑独立;任一路单点失效,另一路仍能进安全态
注意定位(别和 ASIL 分解混):这条硬件/软件双路径是 driver 回报链上的冗余诊断——对应 FMEDA 里 driver 内置 SM 的 DC + MCU 端系统级 SM 的串联覆盖,它支撑整车 ASIL D,但本身不是 B(D)+B(D) 分解 的两条通道。真正的两条分解通道是主 MCU 的 SSM(B(D))+ 独立 SBC / 2nd-level(B(D))(见 Safe State Manager),driver 是被它们监视/执行的末端。这条"硬件先兜底、软件再确认"的双路径,是主驱 driver 选型必看的 ASIL D capability。
5. 握手陷阱
握手出问题几乎都在"时序竞态"和"故障/清除边界":
- PWM/EN 上电竞态 — boot 未完(RDY 未置)就放 PWM → 带默认/错阈值开关,误触发或失保;必须 RDY-gated
- boot 期间来故障 — 配置中若 VCC 抖或线扰触发故障,要能在 boot 流程里处理,不能把 boot 卡死
- SPI 不校 CRC / 无 CRC 失败 handler — SPI 误码写错阈值(DESAT 阈写飞)→ 保护失效或误触发;配置必回读 + CRC,且 CRC 失败要有明确动作(重写 N 次 → 计数后进 fail-safe / 锁死不放 PWM),不能"校了不处理"
- nFLT / DOUT 复用配错 — 多功能引脚(nFLT2/DOUT)的 mux 配置错 → 故障漏报或误报;按 datasheet 配准
- 清故障不等根因消失 — 故障还在就清 → 立即重 trip(chattering);清前先确认根因解除
- 只信 nFLT 不读 SPI — nFLT 只说"有故障"不说哪类,不读 SPI 定位就无法对症进安全态
核心要点
- 驱动-MCU 是一组握手信号:PWM/EN(控制)+ nFLT/RDY(状态)+ RST(复位)+ SPI(配阈值/读诊断);控制与诊断分离
- SPI boot 时序:VCC→UVLO→默认安全态→SPI 配阈值→CRC 校验→RDY→RDY 之后才放 PWM
- 故障闭环:driver 自主软关断(μs,硬件) + 锁存 + nFLT → MCU 读 SPI 定位 → 命安全态 → 根因消失才清
- nFLT(快粗)+ SPI(慢细)分工:专线抢时间,SPI 定位因
- ASIL D 双路径回报:硬件直通(兜底,不依赖软件)+ SPI 软状态(确认),两路物理逻辑独立覆盖单点
- 陷阱集中在上电竞态(RDY-gated PWM)、SPI CRC、清故障时序
缩写表
| 缩写 | 全称 | 中文 |
|---|---|---|
| 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 | 安全转矩关断 |
| VGD | Variable Gate Drive | 可变栅驱强度 |
| DTC | Diagnostic Trouble Code | 诊断故障码 |
Cross-references
- ← 索引
- TI UCC5870 驱动深度 — SPI boot init + 9 protection 阈值调校的代表实现
- DESAT 保护深度 — 故障源之一,自主软关断的触发
- Driver UVLO 深度 — UVLO 故障与上下电时序
- Safe State Manager 深度 — MCU 收故障后命安全态的仲裁
- Driver IC FMEDA worked — 故障回报链的 DC 与双路径在 FMEDA 里的位置