资讯详情

I2C为什么要用开漏输出和上拉电阻?

f5a0c5abea441ee5ade7d4bda0040196.png

I2C为什么要连接拉电阻?

因为它是泄漏输出。

I2C协议支持多个主设备和多个从设备在一条总线上。如果主设备之间的短路不需要泄漏输出和推拉输出。因此,泄漏输出通常用于总线。

因为I2C通信需要输出高电平的能力。一般来说,泄漏输出不能输出高电平。如果电阻连接到泄漏极,则可以进行电平转换。

I2C由两条总线SDA和SCL组成。连接到总线的设备的输出级必须是漏极开路,并通过上拉电阻连接到电源,以实现线与功能。当总线是空的时候,这两条线都是高电平的。

一般IO端口的驱动能力在2mA~4mA量级。

功耗问题。若上拉阻值过小,VDD注入端口的电流会更大,功耗会更大,导致端口输出的低电平值增加(I2C该协议规定,端口输出低电平的最高允许值为0.4V)。因此,上拉电阻应选择不少于1K的电阻(当VDD=3V当灌入电流不超过3时mA)。

速度问题。它取决于上拉电阻和在线电容形成RC延时,RC延迟越大,波形越偏离正弦波,数据读写正确的概率越低,所以上拉电阻不能太大。

I2C总线负载电容不得超过400pF。当I2C当总线上设备逐渐增多时,总线负载电容也相应增加。当总负载电容大于400时pF工作不可靠。I2C的局限性。

建议上拉电阻可选择1.5K,2.2K,4.7K。

根据I2C总线规范,总线空闲时两条线必须高。假设主设备A需要启动I2C,他需要在SCL平时高电,会SDA启动信号由高电平转换为低电平。

主设备A在把SDA拉高后,需要再次检查SDA的电平。为什么? 因为线与,如果主设备A拉高SDA其他主要设备已经出现了SDA因为 1 & 0 = 0 然后检查主设备ASDA电平时, 会发现不是高电平,而是低电平。说明其他主设备抢占总线比其早,主设备A只能放弃占用总线。如果SDA这是一个高电平,表明主设备A可以占用总线,然后主设备A将占用总线SDA降低,开始通信。

因此,模拟I2C一定要将GPIO端口设置为泄漏输出和拉电阻。

*本文为网络转载,版权归原作者所有。如有侵权,请联系删除

标签: 电阻可以不用加吗

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台