I3C 总线物理层与电气特性归纳总结

聊 CRC 校验之前,咱得先把 I3C 的“身子骨”搞清楚。说白了,CRC 算得再好,信号在线上都传不过去,那全是白搭。

我刚开始接触 I3C 时有个错觉——觉得它跟 I2C 差不多,不就是多了个高速模式嘛。结果第一次调板子,发现从设备死活不 ACK。查了一整天,最后发现是上拉电阻没选对。嗯,从那以后我老老实实把电气特性从头啃了一遍。

核心观点: I3C 物理层是兼容 I2C 的,但不是简单复制。它在保持两线制的基础上,把速率、驱动方式、时序容限都做了大幅升级。

信号线定义与电气连接

I3C 只用两条线:SCL(时钟)和 SDA(数据)。跟 I2C 一样,都是漏极开路(Open-Drain)加外部上拉。但有个关键区别——I3C 允许在高速模式下切换到推挽驱动。

我个人习惯把电气连接拆成三块来看:

  • 主设备(Master): 负责产生时钟,发起通信。可以有多主,但同一时刻只能有一个主控。
  • 从设备(Slave): 响应主设备指令。每个从设备有唯一的动态地址。
  • 上拉电阻(Rp): 决定总线上升时间。阻值选小了功耗大,选大了速率上不去。
一个小技巧: 如果你的板子上 I3C 和 I2C 设备混用,上拉电阻按 I3C 的要求来选。I2C 设备一般能兼容更快的上升时间,反过来却不行。

电压模式与速率特性

I3C 规范定义了两种电压模式:

模式 VDD 范围 典型应用
标准电压(SV) 1.7V – 3.6V 传统 I2C 设备共存场景
低压(LV) 1.1V – 1.3V 低功耗移动设备、IoT 传感器

速率方面,I3C 甩 I2C 好几条街。SDR(单倍数据率)模式最高跑 12.5 MHz,HDR(高倍数据率)模式能到 25 MHz 甚至更高。你想想看,传统 I2C 才 400 kHz / 1 MHz,这差距可不是一星半点。

我曾经踩过的坑: 在设计一款多传感器采集板时,PCB 走线长度超过 15 cm,结果 SDR 模式下 12.5 MHz 跑不稳,出现了间歇性 CRC 错误。后来把走线控制在 8 cm 以内,问题立刻消失。高频下,物理层细节真的会要命。

上拉电阻与开漏驱动

开漏驱动的本质:设备只能拉低总线,拉高靠外部上拉电阻。所以上升时间完全由 RC 常数决定——R 是上拉电阻,C 是总线总电容。

上拉电阻的选型公式(我整理的经验简化版):

Rp_min = (VDD - VOL_max) / IOL_max
Rp_max = (Tr_max) / (0.8473 × Cbus)

其中:

  • VOL_max:输出低电平最大值(通常 0.4V)
  • IOL_max:输出拉电流能力(通常是 3mA 或 4mA)
  • Tr_max:允许的最大上升时间(跟速率有关)
  • Cbus:总线总电容(包含 PCB、封装、引脚)

举个例子:VDD=1.8V,Cbus=30pF,目标速率 12.5 MHz(Tr_max≈12ns),算下来 Rp 大约在 470Ω 到 1kΩ 之间。我个人习惯先取中间值 750Ω 打样,再用示波器测上升时间微调。

重点: 速率越高,Rp 越小,但也不能太小,否则低电平会超标。这个平衡点,经验值和仿真缺一不可。

时序参数与数据采样

时序这东西,做 CRC 校验之前必须心里有数。如果采样点不对,算出来的 CRC 全是错的。

I3C 规定数据在 SCL 上升沿采样,但不同模式下还有些细节差异:

参数 SDR (12.5 MHz) HDR (25 MHz) 备注
SCL 高电平时间 ≥ 20 ns ≥ 10 ns 下降沿不一定对称
SDA 建立时间 ≥ 5 ns ≥ 2 ns 相对于 SCL 上升沿
SDA 保持时间 ≥ 0 ns ≥ 0 ns 输入保持几乎为零
总线空闲时间 ≥ 50 ns ≥ 25 ns Stop 到下一次 Start 之间
实战经验: 我在做 FPGA I3C 控制器时,时序参数全部留了 20% 裕量。比如建时要求 5 ns,我按 6 ns 约束。别小看这一点,量产时芯片的 PVT 偏差全靠这些裕量兜底。
I3C 总线物理层与 CRC 校验关系图 物理层基础 电源模式 (SV / LV) 两线制:SCL + SDA 上拉电阻选型 (Rp) 开漏驱动 / 推挽驱动 采样时序 (Tsu / Thd / Tr) 数据链路层核心 SDR 模式 (12.5 MHz) HDR 模式 (25 MHz+) Start + 地址 + RnW + ACK + 数据字节 + CRC + Stop CRC 校验 (数据完整性) 物理层特性直接影响 CRC 校验的采样可靠性与时序裕量

这张图把物理层和数据链路层串起来了。你可以看到,电源、上拉、时序这些物理参数,最终都会集中影响到 CRC 校验时的信号质量。我在项目里经常拿着这张图跟硬件工程师吵架——“你的上升时间太慢了,CRC 能过才怪!”

一句话总结: 物理层是 CRC 校验的根基。信号不干净,算法再牛也没用。