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
热门推荐
亲人离世,这些暖心话让你不再孤单
打卡希拉牧人蒙古部落,感受正宗蒙古酒文化
鄂尔多斯酒文化:敬酒礼节与现代传承
《失忆进行曲》背后的蒙古族饮酒文化
春节去宝鸡看《封神第二部》,免费游西岐!
春节必看!《封神第二部》:非遗元素加持的神话史诗
春节烟花新规大揭秘:你准备好了吗?
禁放烟花能否改善空气质量?数据告诉你答案
震新社区:寒假禁放烟花安全教育
最大限度地利用您的比索:墨西哥廉价旅行提示
西藏心灵之旅:从布达拉宫到珠穆朗玛
春节烟花限放,你怎么看?
失恋后的治愈之旅:阿坝秋日仙境推荐
徒步爬山,治愈你的失恋情伤
失恋了?来云南治愈吧!
春节前夕,郴州出台禁放烟花爆竹政策引发热议
春节烟花禁放政策有变!东莞、长沙最新消息
锅塌豆腐,味道鲜美
这些食物搭配会有毒,90%的人不知道!
祝酒词大全:从商务到家庭,实用指南助你应对各种场合
苏炳添教你吹气球瘦肚子
职场敬酒词攻略:如何用一杯酒增进职场友谊
年会敬酒词助你职场高升!
苏炳添的“神操作”:吹气球如何提升运动表现?
苏炳添的“秘密武器”:吹气球如何提升运动表现?
苏炳添教你用吹气球提升跑步成绩
情感淡化的现象与反思
东方明珠幼儿园教你用方言给外婆拜年
春节拜年六大禁忌:这些"雷区"千万别踩!
春节拜年大比拼:京沪川三地谁最有趣?