I3C总线物理层:电气特性、电平标准、上拉电阻
讲动态地址分配之前,咱们得先把物理层搞清楚。物理层搞不明白,后面协议分析得再透彻,板子调不通也是白搭。我早年做I2C设备时,就吃过上拉电阻的亏,所以这部分我会多讲点实战经验。
1. 总线物理构成
I3C总线跟I2C很像,也是两根线:SCL(时钟)和SDA(数据)。但别被表象骗了,它俩的电气特性差别很大。
- SCL:时钟线,由主设备驱动
- SDA:数据线,双向半双工
- VDD:总线供电电压,1.0V~3.6V
- GND:公共地
我个人的习惯:设计PCB时,SCL和SDA的走线长度尽量一致。哪怕只差几毫米,在I3C的12.5MHz高频下,都可能产生信号反射。我在一个24通道的传感器阵列项目中就遇到过这问题——调了三天,最后发现是走线长度差了1.2cm。
2. 电气特性详解
I3C的电气特性比I2C宽松得多,这也是它能跑高频的原因之一。
2.1 电压域
I3C支持多种电压域,但核心要求是:所有设备必须工作在同一VDD下。
| 参数 | 最小值 | 典型值 | 最大值 | 单位 |
|---|---|---|---|---|
| 总线电压 (VDD) | 1.0 | 1.8 / 3.3 | 3.6 | V |
| 高电平输入 (VIH) | 0.7 × VDD | - | VDD + 0.3 | V |
| 低电平输入 (VIL) | -0.3 | - | 0.3 × VDD | V |
| 高电平输出 (VOH) | 0.9 × VDD | - | - | V |
| 低电平输出 (VOL) | - | - | 0.1 × VDD | V |
你看这个表,I3C的VIH下限是0.7×VDD,比I2C的0.7×VDD其实一样。但关键是I3C用了开漏加推挽的混合驱动模式,这个我后面会讲。
2.2 逻辑电平标准
说白了,I3C的逻辑电平只有两种状态:0和1。但它跟传统I2C有个本质区别——I3C允许推挽驱动。
- 逻辑0:VOL ≤ 0.1×VDD,驱动能力要求4mA@1.8V
- 逻辑1:VOH ≥ 0.9×VDD,由设备内部上拉或外置上拉电阻实现
- 总线空闲:SCL和SDA均为高电平,由上拉电阻拉到VDD
我曾经在一个原型板上犯过错误:用了I2C的器件当从设备,结果I3C主设备发出来的推挽时钟直接把从设备的I2C输入引脚干烧了。为什么?I2C从设备输入耐压只到VDD+0.3V,而I3C推挽输出能到VDD。切记,混用I2C和I3C设备时,必须确认电平兼容性。
3. 上拉电阻选择
上拉电阻是PCB设计中最容易踩坑的地方。你想想看,电阻选大了,上升沿太慢,时序不过;选小了,功耗大,而且可能拉不下去。
3.1 上拉电阻计算公式
I3C规范给出了上拉电阻的上下限公式:
// Rp_min = (VDD - VOL_max) / IOL_max
// 其中 IOL_max 是设备最大灌电流,I3C要求 ≥ 4mA
// Rp_max = Trise / (Cbus × ln(2))
// Trise 为上升时间,I3C标准模式下为45ns(12.5MHz)
// Cbus 为总线总电容,含IC引脚和走线电容
3.2 实战推荐值
| 总线电压 | 总线电容 | 推荐Rp值 | 适用场景 |
|---|---|---|---|
| 1.8V | < 50 pF | 2.2 kΩ | 单板内通信,器件数≤5 |
| 1.8V | 50~100 pF | 1.5 kΩ | 多器件,距离短 |
| 3.3V | < 50 pF | 4.7 kΩ | 低功耗场景 |
| 3.3V | 50~150 pF | 2.2 kΩ | 通用设计 |
| 3.3V | 150~250 pF | 1.0 kΩ | 长距离或器件多 |
我一般在调试阶段会先用2.2kΩ(1.8V系统)或4.7kΩ(3.3V系统),然后用示波器看上升沿。如果上升沿太缓(≥40ns),就逐步减小电阻。千万别上来就用几百欧的,那是给自己挖坑。
3.3 动态上拉技术
I3C有一个很聪明的设计:动态上拉。在高速模式(HDR)下,主设备会临时把上拉电阻切掉,用推挽驱动来拉高电平,这样上升时间可以做到小于10ns。
- 开漏阶段:用于总线仲裁和低速通信
- 推挽阶段:用于高速数据传输
- 总线上拉:仅在总线空闲时起作用
你可能会问:那外部的上拉电阻还接不接?答案是必须接。因为总线启动、仲裁、以及地址匹配这些场景,都需要外置上拉来保证高电平。
4. 时序参数速览
实际项目中,你关注的时序参数其实就这几个:
| 参数 | 符号 | 标准模式 | 高速模式 | 单位 |
|---|---|---|---|---|
| SCL频率 | fSCL | 12.5 | 12.5 | MHz |
| 数据建立时间 | tSU;DAT | ≥ 3 | ≥ 1.5 | ns |
| 数据保持时间 | tHD;DAT | ≥ 0 | ≥ 0.5 | ns |
| 上升时间 | tR | ≤ 45 | ≤ 20 | ns |
| 下降时间 | tF | ≤ 45 | ≤ 20 | ns |
嗯,这里有个坑。很多芯片手册标的tR和tF是最大值,但你实际量测时最好留30%的裕量。比如标准模式要求≤45ns,你设计时按≤30ns来打样,这样温度变化时也不会翻车。
核心原则总结:I3C物理层设计的三个关键点是电压域一致性、上拉电阻匹配动态切换、以及时序裕量。只要这三点把握好,I3C的物理层问题基本不会找上门。
这张图把物理层三大块串起来了。总线构成是基础,电气特性是约束条件,上拉电阻是设计落地。三者缺一不可。