2. 总线电容来源:PCB走线、IC引脚、过孔与连接器的寄生电容分析
做I2C设计,最容易被忽略的就是总线电容。我见过不少工程师,原理图画得漂漂亮亮,一上示波器,波形惨不忍睹。说白了,就是没算清楚电容从哪来。
I2C总线上的电容,不是某个单一器件贡献的。它是PCB走线、IC引脚、过孔、连接器……所有寄生电容的总和。你想想看,一条总线上挂十几个设备,每个设备贡献一点,加起来就超标了。
核心公式:Cbus = Ctrace + Cpin + Cvia + Cconnector
标准模式下,总线电容上限是400pF。快速模式是200pF。高速模式只有100pF。
2.1 PCB走线寄生电容
PCB走线是总线电容的大头。我习惯用微带线模型来估算,就是走线在顶层,下面是参考平面。
估算公式很简单:
C_trace ≈ 0.085 × ε_r × (W / H) × L
其中:
- ε_r — 板材介电常数(FR4大约4.2-4.5)
- W — 走线宽度(mm)
- H — 走线到参考平面的距离(mm)
- L — 走线长度(mm)
举个例子。4层板,走线宽0.25mm,到内层地平面距离0.2mm,长度100mm。算下来:
C_trace ≈ 0.085 × 4.3 × (0.25 / 0.2) × 100 ≈ 45.7 pF
嗯,100mm走线就贡献了将近46pF。如果总线长度到300mm,光走线就140pF了。
我的经验:I2C走线尽量控制在200mm以内。超过这个长度,波形上升沿就开始变缓了。我曾经在一个项目里,走线拉了400mm,400kHz下SCL都快变成三角波了。
2.2 IC引脚寄生电容
每个I2C设备的数据手册里,都会标一个引脚电容。通常是:
| 器件类型 | 典型引脚电容 | 备注 |
|---|---|---|
| 普通I2C传感器 | 3-5 pF | 如温度、湿度传感器 |
| I2C EEPROM | 5-8 pF | 24C系列常见 |
| MCU I2C引脚 | 5-10 pF | 不同厂商差异较大 |
| I2C多路复用器 | 8-12 pF | 如PCA9548 |
总线上挂10个设备,每个5pF,光引脚电容就50pF了。再加上走线、过孔……很容易就突破200pF。
注意:有些国产器件的数据手册不写引脚电容。我建议你按10pF估算,或者直接拿示波器测一下实际波形。别信"兼容"两个字,我吃过亏。
2.3 过孔寄生电容
过孔也有电容。虽然单个过孔不大,但数量多了就不可忽视。
估算公式:
C_via ≈ 1.41 × ε_r × D1 × D2 / (D2 - D1)
其中:
- D1 — 过孔内径(mm)
- D2 — 过孔外径(mm)
- ε_r — 板材介电常数
典型值:内径0.3mm,外径0.6mm,FR4板材。算下来一个过孔大约0.5-0.8pF。
你可能觉得不大。但一条I2C走线换层3次,就是3个过孔。如果总线上有5个设备,每个设备都换层……15个过孔,10pF就没了。
我的习惯:I2C走线尽量不走过孔。实在要换层,就在过孔旁边加一个地过孔,形成回流路径。这个细节能减少10-15%的寄生电容。
2.4 连接器寄生电容
连接器是很多人容易漏算的。板对板连接器、排针、FPC座……都有寄生电容。
| 连接器类型 | 典型寄生电容 | 适用场景 |
|---|---|---|
| 2.54mm排针 | 1-2 pF/对 | 开发板、调试接口 |
| FPC/FFC连接器 | 2-3 pF/对 | 显示屏、摄像头模块 |
| 板对板连接器 | 1-3 pF/对 | 模块化设计 |
| USB Type-C(I2C引脚) | 3-5 pF | USB PD通信 |
连接器的电容跟引脚间距、绝缘材料、屏蔽结构都有关系。我一般按2pF估算,然后留20%余量。
避坑指南:我曾经在一个项目里,用FPC线连接两个板子,线长150mm。结果I2C怎么都调不通。一测,FPC线本身就有30pF的寄生电容,加上连接器,总线电容直接超了200pF。后来换成屏蔽FPC,电容降了一半。
2.5 总电容估算实战
我们拿一个实际案例来算算。假设总线上有:
- 1个MCU(引脚电容8pF)
- 4个传感器(每个5pF)
- 1个EEPROM(6pF)
- PCB走线总长150mm(约68pF)
- 6个过孔(约4pF)
- 1个排针连接器(2pF)
总电容:
C_bus = 8 + 4×5 + 6 + 68 + 4 + 2 = 108 pF
108pF,在快速模式(200pF上限)以内,但离高速模式(100pF)就差一点。如果我要跑400kHz以上,就得优化走线长度或者减少设备数量。
关键结论:总线电容不是算一次就完事的。布局布线后要重新估算,打样回来要实测。我见过太多"理论没问题,实际跑不起来"的案例了。
2.6 实测验证
理论算完了,还得实测。我常用的方法:
- 断开所有上拉电阻,让总线浮空
- 用LCR表测SCL和SDA对地电容,频率设1MHz
- 记录实测值,跟理论估算对比
- 如果实测值比估算大20%以上,检查布局布线有没有遗漏
小技巧:没有LCR表怎么办?用示波器看上升沿。上升时间t_r和电容C的关系是:t_r ≈ 0.847 × R_p × C_bus。知道上拉电阻R_p,反推C_bus。虽然精度不如LCR表,但够用了。