IIC(I2C)通信协议的两根总线为什么配置为开漏而不是推挽输出?
创作时间:
作者:
@小白创作中心
IIC(I2C)通信协议的两根总线为什么配置为开漏而不是推挽输出?
引用
CSDN
1.
https://blog.csdn.net/m0_47106200/article/details/141831051
IIC(I2C)通信协议是一种常用的串行通信协议,广泛应用于各种电子设备中。在IIC协议中,SDA(数据线)和SCL(时钟线)这两根总线的配置方式是开漏输出,而不是推挽输出。这种设计有其特定的原因。
1. 使用开漏输出不会短路
IIC协议中,所有从设备都连接到同一根SDA和SCL总线上。如果使用推挽输出,当两个设备一个输出低电平(0V)而另一个输出高电平时,相当于电源直接与地短接,会导致短路。
而开漏输出只有NMOS管,只能输出低电平,不会导致短路。需要通过外加上拉电阻来实现高电平输出,因此默认状态下SDA和SCL都是高电平。
2. 使用开漏输出可以实现仲裁机制
在总线上连接多个主设备时,使用开漏输出可以避免多个设备同时通信导致的混乱。在尝试通信之前,主设备会先检测总线是否处于空闲状态。空闲状态的定义是:已经检测到产生了终止条件(SCL为高电平时,SDA由低变高),上一次通信已经结束,此时SCL和SDA都为高电平。
IIC仲裁机制
空闲状态下,如果有多个设备同时开启通信并发送数据,就需要通过仲裁机制来决定由哪个设备进行通信。
假设主设备A发送数据序列1000...,主设备B发送数据序列1001...。当发送到第四位时,A发送0,SDA被拉低;B发送1,但由于SDA已经被拉低,所以实际表现仍为0。
主设备在发送数据后会检测电平是否与自己发送的一致:
- 如果一致(如主设备A),则赢得仲裁;
- 如果不一致(如主设备B),则输掉仲裁。
输掉仲裁的设备(如主设备B)将放弃本次通信,而赢得仲裁的设备(如主设备A)将继续进行通信。
这种仲裁机制确保了总线上只有一个主设备在进行通信,避免了数据冲突。
本文原文来自CSDN
热门推荐
维生素D滴剂功效与作用
痛症管理的八大方法
虎皮兰多长时间浇一次水?
虎皮兰的光照需求详解(喜欢阳光还是宁静阴暗的虎皮兰)
增强胃动力的四大食材:医生推荐的天然解决方案
小公司、中公司、大公司,看看到底哪款适合你?
科普|骨量告急,您开始补救了吗?
《见鬼》:从志怪小说中探寻古人的精神世界
13711违法代码:这些驾驶“小习惯”可能暗藏风险
换新手机必看!一招学会微信聊天记录快速转移,一字不差!
超混电驱奇骏冬季启动小妙招
灵芝对癌症有效吗?专业医生解读其科学真相
水瓶座主管如何应对职场挑战?
水瓶座跳槽指南:如何在新环境中获得赏识?
哪个好探索不同行业的优劣
火眼金睛辨地沟油,守护健康每一餐
地沟油变身航空燃料成为"香饽饽" 我国应用试点分为两阶段
纽约市餐馆须使用油脂分离拦截器,保障食品安全与环境保护
新疆阿克苏地区:林果产业欣欣向荣,乡村振兴熠熠生辉
重度高钙血症治疗原则是什么
降钙素的临床意义是什么
再谈博士研究生的科研训练
研究生一定要掌握的9种能力,要不然白读了
如何让手机运行更流畅——优化管理与操作窍门
颈侧的秘密:淋巴结肿大消除手册与自我关怀策略
脖子上有个小疙瘩疼是怎么回事
我的世界三叉戟附魔推荐:最强武器打造
二次世界大战中国战场的转折性战役:淞沪会战
中央热水系统安装后的维护保养
主龙类:远古巨兽的演化传奇