- 符合 I2C 总线开漏输出结构要求:I2C 是一种开放漏极(open - drain)或开集电极(open - collector)的通信协议,其 SCL 和 SDA 都是开漏输出结构。这意味着驱动器(主设备或从设备)只能将线拉低到低电平(逻辑 0),但不能主动将线拉高到高电平(逻辑 1)。上拉电阻的存在可以将信号线拉升至电源电压,在设备不驱动时使线路保持高电平,以满足 I2C 总线在空闲时信号线为高电平状态的要求。
- 防止信号线浮空:没有上拉电阻时,SCL 和 SDA 线在设备不驱动时可能处于不确定的浮空状态,这会导致信号电平不稳定,影响通信的可靠性。上拉电阻可以防止这种浮空状态,确保信号线有明确的电平,使电路能正常工作。
- 适应多设备通信:I2C 总线允许多个设备连接在同一条总线上,任何一个设备都可以驱动总线。上拉电阻使得每个设备在不工作时能保持总线的高电平,当多个设备同时连接到总线上时,不会因为某个设备处于高阻态而影响总线的电平状态,确保了通信的可靠性。
- 实现总线仲裁:I2C 支持多主多从,当多个主设备同时抢占总线时需要仲裁机制。I2C 总线是通过线与机制来实现总线仲裁的,在 I2C 协议中定义 SDA 为高电平时,说明总线空闲主设备可以占用总线,占用后将其拉低开始传输数据。SDA 为低电平期间,标志总线已经被一个主设备占用其余主设备将退出。由于有上拉电阻,默认状态下 SDA 是高电平表示总线空闲,当总线上的一个设备将 SDA 拉低后,由于线与逻辑,SDA 整条线都为低,其余设备就无法抢占总线了,从而达到了仲裁的效果。
- 简化电路设计:使用开放漏极或开集电极的驱动方式,设备只需要一个下拉开关来控制信号线的电平(拉低到地),而不需要额外的电路来推动信号线到高电平,电路更加简单,也减少了功耗。
关于SCL和SDA为什么都要拉高至电源电压
最新推荐文章于 2025-04-03 19:18:44 发布