IIC(I2C)通信协议的两根总线为什么配置为开漏而不是推挽输出?

1. 使用开漏输出不会短路

IIC协议中,所有从设备连接到同一根SDA和SCL 。

如果用推挽输出,当两个设备一个输出低电平一个输出高电平时,相当于电源直接和地连接,会发生短路。

而开漏输出只有NMOS管,只能输出低电平,不会短路;

需要外加上拉电阻输出高电平,因此默认状态下SDA和SCL都是高电平;

2. 使用开漏输出可以实现仲裁机制

在总线上连接多个主设备时,可以避免多个设备同时通信,从而导致通信混乱;

在尝试通信之前,主设备会先检测总线是否处于空闲状态,空闲状态的定义是:已经检测到产生了终止条件(SCL=1时,SDA由低到高),上一段通信已经结束,即SCL和SDA=1;

IIC仲裁机制:

空闲状态下,多个设备同时开启通信,向总线发送数据。这时候就要通过仲裁机制来决定到底由谁来进行这场通信,也就是谁赢。

主设备A发送1000...

主设备B发送1001...

发送到100时,总线上电平都一样,仲裁没有结束;

发送到第四位时,A发送0,SDA被拉低,B发送1,但是SDA会表现成0(毕竟接地嘛)

主设备发送数据之后都会检测一下电平是否为自己发送的,

  • 如果是(主设备A),赢得仲裁;
  • 不是自己发送的(例如主设备B),输掉仲裁;

那么主设备B就成为这次通信的主宰者,继续通信;

主设备B放弃本次通信;

http://t.csdnimg.cn/uZ3vr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值