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
热门推荐
关于地中海贫血,这些知识您需要了解
朱元璋庙号之谜:为何不是高祖?
朱元璋的权力游戏:从追封先祖到庙号确立
探访明孝陵:揭秘朱元璋庙号之谜
朱元璋庙号之谜:为何是太祖?
疫苗接种如何预防流感?
泰山孔子庙:一座见证文化交融的千年古迹
吃辣一时爽?肺结节患者可别轻易尝试!
蓝莓配菠菜,肺结节患者的饮食良方
吃出好肺:蓝莓、菠菜、绿茶帮你防肺结节
揭秘提丢斯波得定则:宇宙版“数字游戏”
天王星的发现与提丢斯-波德定则:一个跨越百年的天文之谜
联合国艾滋病规划署:心理因素严重影响艾滋预防,需加强心理健康服务
2025上海各大古镇春节活动大全(上海特色年味)
宝鸡市口腔医院助力世界艾滋病日宣传
人体维生素检测方法
2024年古风壁纸引领手机个性化潮流
凤凰古城:沈从文笔下的湘西梦境
去完河南所有古镇,最想带走的还是这6个地方的特产
掌握这些方法,轻松搞定组合图形面积计算!
小升初必考!组合图形面积易错点大揭秘
校园防艾正当时:宝鸡如何创新突破?
古典密码在军事历史中的作用是什么
古代社会的阶层划分:士农工商与皇族贵族
《哪吒2》的申公豹:仙界的“小镇做题家”,不向命运低头的真男人!
IM出海:如何高效处理用户反馈?
智能客服:从用户反馈看产品优化路径
网红镇墓兽带火连云港市博物馆,千年文物展魅力
猫咪视力的真相:真的只有人类的十分之一?
微信视频号取消关注指南:简单几步轻松管理你的关注列表