I3C 信号电气特性归纳总结
做 I3C 设计,要先把它的电气特性摸透。我一向认为,协议再复杂,基本功都在这些电压、时序和驱动能力上。这一章咱们就把它彻底理清楚。
1. 电压域与逻辑电平
I3C 总线不是固定电平的。它支持 1.2V、1.8V 以及 3.3V 等常见电压域。你想想看,板子上可能混着不同电平的器件,I3C 的设计就是让你不用额外做电平转换。
| 参数 | 最小值 | 典型值 | 最大值 | 单位 |
|---|---|---|---|---|
| VIL(输入低电平) | 0 | — | 0.3 × VDD | V |
| VIH(输入高电平) | 0.7 × VDD | — | VDD | V |
| VOL(输出低电平,IOL = 4 mA) | 0 | — | 0.4 | V |
| VOH(输出高电平,IOH = 4 mA) | VDD − 0.4 | — | VDD | V |
2. 开漏与推挽输出 - 两种模式
I3C 总线有一个聪明的设计:它混合使用开漏和推挽两种驱动方式。说白了,低速通讯时用开漏(像 I2C),高速或总线空闲时自动切换到推挽。
- 开漏模式:OD(Open-Drain)。仅拉低到地,高电平靠上拉电阻。好处是容易实现线与仲裁。坏处是上升沿慢,受 RC 时间常数限制。
- 推挽模式:PP(Push-Pull)。主动驱动高和低,上升沿陡峭,适合高频。但要注意,如果两个设备同时驱动,可能产生大电流短路。I3C 协议通过动态地址分配和仲裁机制完美规避了这个问题——这一点我在早期项目里观察过才放心。
核心记忆法:OD -> 仲裁 & 总线释放
PP -> 高速 & 陡沿
我曾经碰到过一个案例:某款传感器只支持开漏模式,而主控器默认在高速下用推挽。结果速率一超 12.5 MHz,上升沿严重变圆,时序直接翻车。后来我强制主控器在控制字节后降回开漏模式,问题才解决。
3. 时序参数 - 小心这些边界
I3C 的基本时序参数比 I2C 严格多了。特别是快速模式下,tSU 和 tHD 都只有几十纳秒。PCB 走线稍有失配,就可能踩坑。
| 时序参数 | 符号 | 标准模式 | 快速模式 (12.5 MHz) | 单位 |
|---|---|---|---|---|
| SCL 时钟周期 | tSCL | ≥ 1000 | ≥ 80 | ns |
| 数据建立时间 | tSU;DAT | ≥ 250 | ≥ 6 | ns |
| 数据保持时间 | tHD;DAT | ≥ 0 | ≥ 0 | ns |
| 上升时间 | tr | ≤ 1000 | ≤ 16 | ns |
| 下降时间 | tf | ≤ 300 | ≤ 6 | ns |
4. 上拉电阻选型 - 不是越大越好
I3C 的上拉电阻需要在静态功耗和信号速度之间平衡。我的习惯是:
- 先算出总线电容 Cbus(每路过孔约 0.5 pF,每 cm 走线约 0.8 pF,加上器件 IO 电容)。
- 然后用公式 Rpull-up < tr,max / (0.847 × Cbus) 算最大值。
- 再用 Rpull-up > (VDD − VOL) / IOL 算最小值。
上面公式里的 0.847 是 RC 充电到 63.2% 的常数,嗯,也就是一次时间常数。你选 0.9 也行,但更保守些。
快捷参考(1.8V 系统,4 个从设备,总线长度 ≤ 10 cm):
推荐范围:1.5 kΩ ~ 3.0 kΩ,典型选 2.2 kΩ
5. 信号完整性的核心影响链路
下面这张图我直接画出来,你看一眼就能明白 I3C 信号完整性到底跟哪些环节挂钩。
6. 噪声容限与串扰
I3C 的噪声容限在开漏模式下相对宽松(因为 RC 慢沿本身有滤波效应),但推挽高速时就紧张了。我建议:
- SCL 和 SDA 之间保持至少 3W(走线宽度)间距。
- 避免将 I3C 总线与高速时钟线(如 MIPI D-PHY clock)长距离平行。
- 在从设备附近加 100 pF 到 1 nF 的去耦电容,但别太大——太大会拖慢上升沿。
7. 驱动强度与总线电容估算
I3C 规范要求从设备在推挽模式下至少能提供 4 mA 的驱动电流(在 1.8V 时)。但实际上,很多传感器只给了 2 mA。你手动量一下从设备输出的 VOL 就知道了。
总线电容 Cbus 的估算我常用这个公式:
C_bus = C_trace + C_via + C_pad + C_io
C_trace ≈ 0.8 pF/cm × 走线长度
C_via ≈ 0.5 pF / 个
C_pad ≈ 0.2 pF / 个
C_io ≈ 3 pF ~ 6 pF / 器件
举个实际例子:板上有 1 个主控 + 3 个从设备,走线总长 12 cm,4 个过孔,每个 IO 按 4 pF 算:
C_bus = (0.8 × 12) + (4 × 0.5) + (4 × 0.2) + (4 × 4)
= 9.6 + 2.0 + 0.8 + 16
≈ 28.4 pF
28.4 pF 不算大,但如果走线延长到 20 cm,就直奔 36 pF 了。这时候你再用 2.2 kΩ 上拉,RC 时间常数 ≈ 79 ns,必然超标(快速模式要求 tr ≤ 16 ns)。
8. 小结
电气特性这东西,初期花 20 分钟算一遍,后面能省好几天调试时间。我自己总结的 checklist 就三条:① 确认电平域一致;② 根据总线电容选上拉;③ 检查信号上升沿是否在规范内。这三条过了,基本盘就稳了。