一、原因
I2C 总线的 SDA(数据线)和 SCL(时钟线)均为开漏输出结构,自身无法输出高电平,仅能拉低电平。
当总线上的器件不驱动总线时,线路需保持高电平以维持空闲状态。上拉电阻可将总线默认拉至高电平,确保通信初始化和空闲时的电平稳定。
此外,多器件通信时,上拉电阻能避免总线电平冲突,保证数据传输的可靠性。
二、I2C 总线上拉电阻的选择与布局设计
上拉电阻选择的影响
-
信号完整性与通信速度
上拉电阻的阻值直接影响总线的上升时间。根据公式 tr=0.847×Rp×Cbus,电阻越大,上升时间越长。例如,标准模式(100kHz)下若总线电容为 400pF,4.7kΩ 电阻的上升时间约为 1.6μs,而 10kΩ 电阻则增至 3.4μs,可能超出协议规定的 1μs 上限。高速模式(400kHz)需更小阻值(如 2.2kΩ)以确保上升时间 < 300ns。 -
功耗与驱动能力
电阻过小将导致灌电流过大。例如,5V 系统中若使用 1kΩ 电阻,灌电流可达 (5V−0.4V)/1kΩ=4.6mA,可能超过器件的最大驱动能力(通常 3mA),导致低电平电压升高(>0.4V)或损坏端口。因此,最小电阻需满足 Rmin=(VDD−VOL)/IOL,其中 VOL≤0.4V,IOL 为器件最大拉电流。 -
总线电容与拓扑限制
总线电容 Cbus 由 PCB 走线、器件引脚等构成。例如,10cm 走线约引入 20pF 电容,每个从机引脚约 5-10pF。若 Cbus 超过 400pF(标准模式),即使使用 4.7kΩ 电阻,上升时间也会超标。此时需减少负载或改用更低阻值。
上拉电阻的布局策略
-
<