聊聊I2C总线上拉电阻

描述

I2C总线上的上拉电阻的解析

首先我们来聊聊,为啥I2C总线的SCL,SDA需要接上拉电阻?这个电阻有啥作用?选多大的电阻合适?

SCL

1)上拉电阻的作用

我们看I2C的内部框架可以知道,I2C是开漏输出的,I2C总线协议支持多主多从,若不是开漏输出的话,可能会出现别的问题,比如若使用推挽输出,会出现主设备之间短路的情况,所以一般总线会用开漏输出。开漏输出的话,若想实现输出高电平,就必须接上拉电阻来实现,通过上拉电阻接到电源,可实现"线与"功能,且总线空闲时,SCL,SDA这两条线可以高电平。电路大概如下:

2)阻值的选择

我们都知道一般IO口的驱动能力一般在2mA~4mA左右,若阻值太小,电源VCC灌入端口的电流较大,功耗会较大,导致端口输出的低电平值增大;而实际I2C协议规定,端口输出的低电平不能大于0.4V。若VCC=3.3V,灌入电流约3mA左右时,上拉电阻要选择≥1KΩ的电阻。但是阻值不能选太大,若电阻过大,可能导致RC延时增大,波形会偏离方波,甚至会偏向正弦波,数据读写可能会不正确,且会影响读写的速度。一般上拉电阻选用1.5K~4.7K。

3)I2C总线负载电容

I2C总线协议规定负载电容不能超过400pF;当I2C总线上器件增多时,总线的负载电容也会越来越大,,当总线的负载电容超过400pf时,可能会出现工作异常。

I2C总线工作的基本原理:当总线空闲时两根线均为高电平,假设主设备B需要启动I2C,它需要在SCL为高电平时,将SDA由高转低时作为启动信号,主设备B拉高SDA后需要检查下SDA电平,因线与,可能有其他设备拉低SDA,说明有其他设备抢占总线比它早,主设备B只能放弃使用总线,若SDA为高电平,说明主设备B可以使用总线,可以将SDA拉低来进行通信。
 

 审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分