50229|9

6366

帖子

4914

TA的资源

版主

楼主
 

I2C器件一定要加上拉电阻吗? [复制链接]

最近看一些关于AT24C02的电路图,发现有些在SDA,SCL这两个脚上接了4.4K或者10K的上拉电阻。有些没有加上拉电阻。
根据AT24C02的数据手册来看,是建议在实际使用中加上拉电阻的。
但一般情况下,在51单片机系统中,不加上拉电阻也是可以用的,也能够正确读写数据。

据我个人经验,我曾经有一次在板子上没有给24C02加上拉电阻,发现会出现数据读写不正确的情况,尤其是对新的芯片第一次读写的时候,可能会出现问题。当时一直很奇怪,不过由于懒惰,没有仔细检查到底是什么原因引起的。也不知道到底是不是因为没加上拉电阻的问题。

以51单片机为例,除了P0口,另外3个口内部都有弱上拉。所以似乎外部不用再加上拉电阻也可以。但是毕竟单片机内部上拉电阻能力有限,只能微弱上拉。


另外对于很多单片机,其内部有上拉电阻,但是无一例外,其上拉电阻的组织是比较大的,也就是说其上拉能力有限。


所以这里请大家讨论一下,I2C器件必须要加上拉电阻吗?
如果不加,会有什么影响?
此帖出自单片机论坛

最新回复

建议用示波器看下波形。  详情 回复 发表于 2018-9-27 20:59
点赞 关注
 

回复
举报

1781

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
这个就要看你使用的单片机是否有标准的IIC标准接口了,如果你使用了标准的IIC接口,这个接口在使能的时候,引脚进入漏极开路模式,不过有一些单片机内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,我用过AVR的,就是使能的内部的上拉电阻。但是如果是使用单片机的引脚模拟IIC协议的话,这个就得另说了,得看你的单片机引脚是否支持漏极开路模式或者上拉模式,不过一般推拉模式的输出引脚用在IIC里可能会有问题具体也没用过。
此帖出自单片机论坛
 
个人签名只有求知欲,没有求偶欲的人是植物,只有求偶欲,没有求知欲的人叫动物,既没求知欲,又没求偶欲的人是矿物。
 

回复

6366

帖子

4914

TA的资源

版主

板凳
 
1、根据I2C总线规范,总线空闲时两根线都必须为高;



这是规定,动不了的,不然什么叫标准呢?其实所谓的这个神圣的标准也并不是多么邪乎,你想啊,只有是高的才能拉成低的,难道谁可以把低的拉成高的吗?所以这是之所以规定空闲时必须为高的一个原因,要是保持“低”的话,那是不可能成为“多主”总线的。



这是首先应该理解的。



2、上拉电阻的问题;



其实各个I2C接口工作时只检测高、低电平,管你有没有什么上拉电阻呢!



但问题是,你要是直接接电源的来实现高的话,一旦其他器件拉低时岂不危险?



所以,这个上拉电阻有保护作用。如果你确信直接接电源没问题(比如有短路保护等,呵呵),也可以试一试,问题的关键是主器件要能正确的拉低或置高,从器件要能明确地区分高、低就可以了,这是问题的关键,当然,还有时序问题,不能混乱!



但你设计产品时不能这样,玩玩可以的,哈!



3、电阻大小的问题;



最直接的,牵涉到两方面的问题,首先是功耗的问题,其次是速度的问题,二者是矛盾的!如果你想尽量提高速度,那么就牵涉到总线电容的问题,其实很容易理解,上拉电阻与总线的电容形成了RC,高速时将直接影响通讯!因为总线拉高时有个充电时间以及高电平的阀值,如果还没有充电到足以保证从器件可以识别的高电平的阀值时主器件就以为完成了一个总线动作的话,那么通讯肯定是不能进行的!



如果你想尽可能降低功耗,那么就要尽可能增大电阻以最大可能的减小电路各部分的消耗电流从而实现整体降低功耗!但不可能无限大,否则充电时间你会受不了的!
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
路过,说的很好
此帖出自单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

5
 
原帖由 tiankai001 于 2010-2-1 11:55 发表
如果你确信直接接电源没问题(比如有短路保护等,呵呵),也可以试一试,问题的关键是主器件要能正确的拉低或置高,从器件要能明确地区分高、低就可以了,这是问题的关键,当然,还有时序问题,不能混乱! [/quote]
 这好像不能试吧,记忆中发送方在SDA传完一帧数据后置“高”,并在此期间等待接收方把SDA拉低作为确认,如果发送方用推挽方式强行置高的话岂不是要坏事?


[quote]原帖由 tiankai001 于 2010-2-1 11:55 发表
如果你想尽可能降低功耗,那么就要尽可能增大电阻以最大可能的减小电路各部分的消耗电流从而实现整体降低功耗!但不可能无限大,否则充电时间你会受不了的!

 恐怕不只是时间是否受得了的问题,上拉阻值决定了信号由低向高跃变的斜率,上拉电阻允许的最大值跟上拉电压、电流、分布电容都有关系,是在I2C总线规范中被规定了的,要想做到能拍胸脯说你的设计绝对满足I2C标准那么就得遵守那些规定。 当然实际上,具体器件的可用范围往往比规程宽松得多。
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

6
 
说的真好,顶一个。。。
此帖出自单片机论坛
 
 
 

回复

348

帖子

0

TA的资源

纯净的硅(初级)

7
 
这要看看你是否需要低功耗的要求!!!
此帖出自单片机论坛
 
个人签名为了方便大家交流,建了两个QQ群:QQ群3号:198387118  【1000人群】QQ群5号: 239316959【2000人群】群内已有成员3000余人!
更多内容关注微信公众号:单片机精讲吴鉴鹰
 
 

回复

13

帖子

1

TA的资源

一粒金砂(初级)

8
 
嗯,看了大家讨论这个问题好像理解了!!
此帖出自单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

9
 
仙猫 发表于 2010-4-23 09:18
 这好像不能试吧,记忆中发送方在SDA传完一帧数据后置“高”,并在此期间等待接收方把SDA拉低作为确认, ...

我现在遇到一个问题HDC1080 SDA引脚与STM32F031F6 PA7相连,频率从1k到100K,上拉电阻为1K和10K时,STM32F031F6检测的数据都是满偏AD值,在SDA总线上加一个100PF到底就可以正常工作。如果不接电容,需要接一个100K上拉电阻也可以正常工作,请问一下,大神,这是什么原因呢???????@tiankai001  @wangjiafu1985
  @仙猫
此帖出自单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

10
 
建议用示波器看下波形。
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表