问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

嵌入式I2C信号线为何加上拉电阻

创作时间:
作者:
@小白创作中心

嵌入式I2C信号线为何加上拉电阻

引用
CSDN
1.
https://m.blog.csdn.net/lyyybz/article/details/143424590

在嵌入式系统设计中,I2C(Inter-Integrated Circuit)总线是一种常用的串行通信协议。在设计I2C信号电路时,我们经常会看到在SCL(时钟线)和SDA(数据线)上加一个上拉电阻。那么,为什么需要加这个上拉电阻呢?本文将为您详细解答这个问题。

IIC是一个两线串行通信总线,包含一个SCL信号和SDA信号,SCL是从主设备发出的时钟信号,SDA是一个双向的数据信号,设备发送数据和接收数据都是通过SDA信号。

在设计IIC信号电路的时候,我们会在SCL和SDA上加一个上拉电阻。

为什么需要上拉电阻?

主要原因就是IIC芯片的SDA和SCL的引脚是开漏输出,就是只有一个NMOS管,不像推挽输出有两个MOS管。

当芯片SDA和SCL的引脚输出MOS管导通,IIC信号线电平为低电平。

当芯片SDA和SCL的引脚输出MOS管关闭,如果没有上拉电阻,IIC信号线是处于一个高阻状态,电平是未知的,开漏输出是没有高电平的输出能力的。

所以加上上拉电阻后,当芯片SDA和SCL的引脚输出MOS管关闭,IIC信号线上的电平就是一个确切的高电平。

当多个IIC设备通过IIC总线接在一起,这就要求IIC设备间可以实现线与,而芯片的IIC引脚是开漏输出的话就能很好的实现这个线与。只要有一个IIC设备的引脚电平是低电平,那么相应的SCL或SDA总线也会成为一个低电平。如果IIC设备引脚为推挽输出,多个IIC设备接在一条总线上很容易烧坏芯片。

IIC上拉电阻的取值

IIC信号的上拉电阻阻值不能太大,因为IIC芯片SCL和SDA引脚都存在寄生电容,同时SDA和SCL信号的走线也会有寄生电容,整个IIC总线上相当于接了一个负载电容Cl

上拉电阻过大,IIC总线高电平的驱动能力差,总线电平从0到1变化时,等效为这个RC的充电电路,上拉电阻越大,波形上升沿会变缓,一定程度会影响IIC的时序,可能会出现误码。所以这个上拉电阻不能太大。

IIC SDA和SCL信号的上升时间和总线电容在不同的模式下有不同的要求,大家可以看下这个表。

IIC总线信号上升时间可以根据公式

Tr=0.8473RCl

Cl就是IIC总线的等效负载电容

IIC信号上拉电阻也不能太小,如果太小了,当IIC引脚输出低电平时,灌进芯片IIC引脚的电流会变大,可能会使IIC信号线的低电平变大,同时IO口电流过大还可能烧坏芯片。

我们一般要求,IIC引脚低电平时,流过芯片IIC引脚的电流小于3mA,所以如果是3.3V上拉的话,这个电阻就要

R>(3.3-VoL)l3KΩ=0.96KΩ

,其中VoL是IIC引脚为低电平时的最大电压,一般是0.4V。再加上前面的这个公式我们就可以确定这个上拉电阻的取值范围。

电源电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。

IIC信号上拉电阻取值常用的值就是4.7K,一般小于10K,大于1K,如果IIC总线比较长,从设备比较多,可以适当降低电阻。

多设备连接时上拉电阻的使用方法

如果IIC总线接了很多IIC设备,是不是每个IIC设备都要加上拉电阻?

答案是否定的,我们只要在SDA和SCL总线上合适的位置各加一个上拉电阻即可,如果每个设备都加上拉,相当于这些电阻是并联在一起了,减小了电阻值。至于上拉电阻的位置一般没有特别的要求。一般加在IIC的末端。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号