大哥 I2C中 为什么SDA =1是释放总线?为什么不是SDA=0?

 我来答
32021724
推荐于2018-09-03 · TA获得超过839个赞
知道小有建树答主
回答量:307
采纳率:80%
帮助的人:118万
展开全部
要解释‘释放’这个词,就得搞清I2C的IO配置模式,I2C的IO是开漏或者开集电极模式,即I2C对应的IO口只能输出:

①“低电平(逻辑0,IO被接在GND上,只能是低电平)”
②“高阻态(逻辑1,IO可以被拉高或者拉低)”两种状态,而所谓的“高电平”其实是在输出逻辑1、IO为高阻态时,IO被外部或者内部上拉电阻拉高的。

SDA=0时,SDA脚在IC内部被直接接在GND上,它只能是低电平,外部器件也无法把SDA脚拉高,这叫拉低。
SDA=1时,SDA脚为高阻态,(相当于在万用板上焊了一根IO,这个IO谁都不接,这就是高阻了),这时SDA可以被别的器件拉低或者拉高,即,这时SDA脚的控制权是“释放状态”,如果谁都不去管这个高阻态的脚,这个脚会被上拉电阻拉高以保证不会被空气里的电磁波干扰而高高低低乱跳。

所以,要真正理解释放这个词,先要搞清IO口内部的构造,了解推挽输出和开漏输出的本质
yshliu001
推荐于2018-03-07 · TA获得超过295个赞
知道答主
回答量:48
采纳率:0%
帮助的人:34万
展开全部
I2C的数据和时钟线上都有一个上拉电阻,电阻的另一端接一个高电平。
当I2C工作时,SDA上的电平取决于SDA上的数据。
当I2C不工作时,因为集成电路的输入端为高阻状态,SDA上的电压就取决于电阻另一端的高电平了,因此I2C在释放总线后,SDA就等于1了。这主要取决于I2C的结构和I2C总线的规范。
不知道能明白不?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sfesdm
2011-05-29
知道答主
回答量:42
采纳率:0%
帮助的人:26.5万
展开全部
这是在I2C模拟协议中规定好的,总线空闲的时候,SDA和SCL均为高电平,释放总线就是让总线空闲的意思咯。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cangkai47
2011-05-27 · TA获得超过101个赞
知道答主
回答量:239
采纳率:0%
帮助的人:0
展开全部
口通讯双方都可为输出,如果一方输出低,另一方则如果输出高也不能使SDA为中第一个SCL=0:表示让对方输入数据;( I2C总线是SCL=0时从设备输出数据
追问
是不是乐意这么理解:主从都有SDA信号,只有一方 SDA=1时,当另一方 SDA变化时 传输的数据才会变化?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式