嵌入式I2C 信号线为何加上拉电阻(图文并茂)

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

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

今天就来分享下,为什么要在 IIC 信号线上加上拉电阻。

主要原因就是 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.8473*R*Cl 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 的末端。

相关推荐
微信1532379424312 小时前
离线语音识别 ( 小语种国家都支持)可定制词组
嵌入式硬件
weixin_5088216513 小时前
1ms软延时,不用定时器,stm32
stm32·单片机·嵌入式硬件
月阳羊14 小时前
【无人机】无人机PX4飞控系统高级软件架构
嵌入式硬件·架构·系统架构·无人机
weixin_5088216514 小时前
stm32 主频216MHz,写个ms延时函数,us延时函数
stm32·单片机·嵌入式硬件
华清远见IT开放实验室15 小时前
【新书上市】《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》,高校教学推荐,STM32入门必读书籍!
stm32·单片机·嵌入式硬件·虚拟仿真·必读书籍·高校教学
智木芯语15 小时前
【58】编程技巧:单片机编程命名规范
单片机·嵌入式硬件·嵌入式·#stm32·#stc8
捷配datasheet15 小时前
OP2177运算放大器:高性能模拟信号处理的关键元件
嵌入式硬件·信号处理
逼子格17 小时前
五种音频器件综合对比——《器件手册--音频器件》
嵌入式硬件·音视频·硬件工程师·硬件测试·电子器件·硬件笔试真题·音频器件
niuTaylor19 小时前
STM32平衡车开发实战教程:从零基础到项目精通
stm32·单片机·嵌入式硬件