2. I3C 物理层与电气特性:总线拓扑、信号电平、上拉电阻归纳总结
聊 I3C 的验证,绕不开物理层。
很多人都先去看协议栈上层,觉得地址分配、CCC 命令才是重点。但我个人习惯,拿到一个 I3C 模块,第一件事先看电气参数。为什么?因为物理层不对,上层跑得再欢也是白搭——我曾经被这个坑过。
2.1 总线拓扑:到底谁在线上?
I3C 总线是典型的多主多从架构。说白了,一条总线上可以挂多个 Master 和多个 Slave,但同一时间只有一个 Master 做总线控制。
- Master:负责发起交易、产生时钟、分配地址。通常主控芯片扮演这个角色。
- Slave:响应 Master 的请求,被动通信。传感器、EEPROM 等都是 Slave。
- Secondary Master:一种特殊的「备份」角色,平时当 Slave,需要时能接管总线。我遇到过的一个项目里,MCU 和一个协处理器就用的这种模式搞定双控。
总线结构很简单——一条 SCL(时钟线)+ 一条 SDA(数据线),再加上所有设备共地的 GND。没有片选线,没有额外的中断线(虽然 I3C 引入了带内中断,但属于协议层,这里不扯远)。
2.2 信号电平:不再是 5V 的天下了
I3C 的信号电平比经典 I²C 低得多。看看这张表:
| 参数 | I²C(标准模式) | I3C(SDR 模式) | I3C(HDR 模式) |
|---|---|---|---|
| VIH(输入高电平) | 0.7×VDD | 0.85×VDD | 0.85×VDD |
| VIL(输入低电平) | 0.3×VDD | 0.3×VDD | 0.3×VDD |
| VOL(输出低电平) | 0.4V @ 3mA | 0.4V @ 4mA | 0.4V @ 6mA |
| VOH(输出高电平) | 开漏 + 上拉 | 推挽(SDR)/ 开漏(HDR) | 推挽 |
| 电压范围 | 1.8V ~ 5.5V | 1.0V ~ 3.6V | 1.0V ~ 3.6V |
你想想看,I²C 的 VIH 才 0.7×VDD,I3C 要求 0.85×VDD。这意味着什么?噪声容限变小了。我遇到过一块板子,走线有点长,I²C 跑得好好的,换 I3C 就不行了——就是电平阈值卡得太紧,稍微振铃就误判。
2.3 上拉电阻:不是越大越好
I3C 和 I²C 一样,SDA / SCL 线上需要上拉电阻。但 I3C 有推挽模式,所以上拉电阻的选型要更讲究。
推挽模式下,Master 会主动驱动高电平,此时上拉电阻几乎不影响上升沿——真正的影响在开漏阶段(比如总线空闲、从机应答、HDR 退出等场景)。
计算公式:
R_pullup(min) = (V_DD - V_OL) / I_OL
R_pullup(max) = t_r / (C_bus × 0.8473)
其中:
- VOL 是输出低电平(0.4V 典型)
- IOL 是灌电流(4mA~6mA)
- tr 是上升时间(I3C SDR 要求 ≤ 120ns)
- Cbus 是总线上总电容(包括器件引脚电容 + 走线电容)
2.4 总线电容与信号完整性
I3C 标准规定 SDR 模式最大总线电容为 50pF(包括所有器件引脚电容)。HDR 模式更苛刻,一般建议不超过 30pF。
嗯,这里要注意:每个 I3C 设备引脚电容通常在 3~6pF。如果挂 10 个从机,光器件电容就 30~60pF 了——很容易超标。所以布局时尽量短走线,减少过孔。我以前测试过一块板子,为了迁就结构走线绕了 15cm,结果 SDA 上全是振铃,最后只能降速跑。
2.5 I3C 物理层知识体系
我把上面这些整理成一张图。你看一眼就明白了各要素之间的关系。
你看,四个分支:拓扑、电平、上拉电阻、总线电容。它们之间有耦合——比如上拉电阻的选择受总线电容影响,而电容又受拓扑(设备数量)制约。做验证时一定要把它们串起来看。
2.6 实战验证清单(物理层)
- 用示波器测量 SCL/SDA 高电平:确认 ≥ 0.85×VDD。
- 测量低电平:VOL 不应超过 0.4V。
- 测上升时间 tr:SDR 模式下 ≤ 120ns,HDR 模式下 ≤ 60ns。
- 计算总线电容:可以用公式 tr = 0.8473 × Rp × Cbus 反推。
- 检查推挽/开漏切换时序:从 SDR 被拉到 Low 的瞬间,推挽驱动器必须关闭。
好,I3C 物理层就聊到这儿。这些基础参数是后面所有验证步骤的基石。你拿着这份清单去测板子,物理层出不了大毛病。