在电子电路设计中,I2C(Inter - Integrated Circuit)总线是一种广泛应用的串行通信接口,用于连接微控制器和各种外围设备。在使用 I2C 总线时,我们常常会遇到这样一个问题:为什么 I2C 总线需要加上拉电阻呢?下面我们将深入探讨这个问题。
I2C 总线在使用时,如果芯片内部不集成上拉电阻,就需要在外部加 2 个上拉电阻。这是因为 I2C 总线一般采用 OD(Open Drain,开漏)结构,其中 Drain 指的是 MOS 管的漏极。

图 1 I2C 总线结构图
从图中可以看到,红色标注的部分就是上拉电阻和内部的 MOS 管。这种结构决定了 I2C 总线的一些特性和工作方式。
为了更好地理解 I2C 总线加上拉电阻的原因,我们先来看一个典型的用 2 个 MOS 管搭建的 OD 门电路。

图 2 典型的 OD 门电路
其工作原理如下:
当 INPUT = 0 时,Q1 关闭,Q2 导通,相当于开关闭合,此时 OUTPUT = 0V;当 INPUT = 1 时,Q1 导通,Q2 关闭,相当于开关断开,OUTPUT 呈现高阻态。由此可见,上述 OD 门电路本身是无法输出高电平的。因此,为了使电路能够输出高电平,就需要加上拉电阻。
- 实现高电平输出:由于 OD 门电路无法直接输出高电平,加上拉电阻后,当 OD 门处于高阻态时,通过上拉电阻将总线拉高到电源电压,从而实现高电平的输出。
- 支持线与逻辑:I2C 总线可以采用一主多从(1 个 master,多个 slave)的通信模式。OD 门输出的高阻态特性使得多个 OD 门可以连接在一起,形成 “线与逻辑”。也就是说,只要有一个 OD 门输出低电平,总线就会被拉低;只有当所有 OD 门都处于高阻态时,总线才会通过上拉电阻被拉高。这是 I2C 总线能够实现一主多从通信的重要原因。

图 3 I2C 总线的线与逻辑
在实际应用中,上拉电阻的选择也非常重要。上拉电阻的阻值会影响总线的上升时间、功耗和噪声容限等性能指标。一般来说,上拉电阻的阻值越小,总线的上升时间越短,信号的传输速度越快,但同时功耗也会增加;反之,上拉电阻的阻值越大,功耗越小,但总线的上升时间会变长,可能会影响信号的传输质量。因此,需要根据具体的应用场景和要求,合理选择上拉电阻的阻值。