I2C 总线接上拉电阻的原因

时间:2026-07-27
  在电子设计领域,I2C 总线是一种常用的通信总线,而在 I2C 总线上接上拉电阻是一个常见的操作。那么,I2C 为什么要接上拉电阻呢?这主要是因为它采用的是开漏输出方式。
  I2C 协议支持多个主设备与多个从设备在一条总线上进行通信。如果不采用开漏输出,而是使用推挽输出,就会出现主设备之间短路的情况。所以,为了保证总线的正常运行,一般会使用开漏输出。这里可以拓展了解一下推挽、开漏、OC、OD 的特点与应用,这有助于我们更深入地理解 I2C 总线的工作原理。
  接上拉电阻的关键原因在于 I2C 通信需要具备输出高电平的能力。通常情况下,开漏输出本身无法输出高电平,但如果在漏极接上拉电阻,就能够实现电平转换。I2C 总线由两条总线 SDA 和 SCL 组成,连接到总线的器件的输出级必须是漏极开路,并且都通过上拉电阻连接到电源,这样才能够实现 “线与” 功能。当总线处于空闲状态时,这两条线路都呈现高电平。

 

  接下来我们探讨一下上拉电阻阻值的确定方法。一般 IO 端口的驱动能力在 2mA~4mA 量级。从功耗方面考虑,阻值不能过小。如果上拉阻值过小,VDD 灌入端口的电流将较大,功耗会显著增加,而且会导致端口输出的低电平值增大(I2C 协议规定,端口输出低电平的允许值为 0.4V)。所以,通常上拉电阻应选取不低于 1K 的电阻(当 VDD=3V 时,灌入电流不超过 3mA)。从速度方面考虑,阻值不能过大。这是因为它取决于上拉电阻和线上电容形成的 RC 延时,RC 延时越大,波形就越偏离方波趋向于正弦波,数据读写正确的概率就会降低。此外,I2C 总线上的负载电容不能超过 400pF。当 I2C 总线上器件逐渐增多时,总线负载电容也会相应增加。当总的负载电容大于 400pF 时,I2C 总线就不能可靠地工作,这也体现了 I2C 的局限性。综合考虑,建议上拉电阻可选用 1.5K,2.2K,4.7K。
  ,我们来了解一下 I2C 总线的基本操作。根据 I2C 总线规范,总线空闲时两根线都必须为高。假设主设备 A 需要启动 I2C,它需要在 SCL 高电平时,将 SDA 由高电平转换为低电平作为启动信号。主设备 A 在把 SDA 拉高后,需要再检查一下 SDA 的电平。这是因为 “线与” 的特性,如果主设备 A 拉高 SDA 时,已经有其他主设备将 SDA 拉低了,由于 1 & 0 = 0 ,那么主设备 A 在检查 SDA 电平时,会发现不是高电平,而是低电平。这说明其他主设备抢占总线的时间比它早,主设备 A 只能放弃占用总线。如果 SDA 是高电平,说明主设备 A 可以占用总线,然后主设备 A 将 SDA 拉低,开始通信。因此,在模拟 I2C 时,一定要将 GPIO 端口设置为开漏输出并加上拉电阻。
上一篇:深入解析 EMC 防护里的滤波电容奥秘
下一篇:ABS工作原理详解

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料