I2C 的输入/输出切换原理是什么?

I2C 的输入输出切换(主机和从机如何控制 SDA/SCL)
一句话总结:
I2C 线上设备不会主动输出高电平,只会在需要时把线拉低,通过硬件开漏结构实现输入输出的自动切换。

  1. 原理
    ● I2C 的 SDA 和 SCL 都是开漏结构
    ● 所有设备只能输出低电平
    ● 高电平由外部上拉电阻拉上去
    ● 不需要发送时,设备把引脚变成高阻态(就像断开)
    ● 需要发送 0 时,把开漏 MOS 管导通,拉低 SDA
  2. 输入与输出的切换
    ● 输出模式:设备内部把开漏管打开 → 线被拉低 → 输出 0
    ● 输入模式:设备关闭 MOS 管 → 引脚悬空 → 线上电平由别人或上拉决定 → 自己读取 SDA
    ● 切换不需要软件频繁改模式,是 I2C 硬件控制器自动管理
    下面用图展示开漏结构:
    SDA线
    |
    |----[上拉电阻]----VCC
    |
    ±–±—+
    | |
    | 开漏MOS管
    | (只能拉低)
    |
    从机/主机IO口
    说明:
    ● MOS 管关断 → 线被上拉为高 → 设备处于输入
    ● MOS 管导通 → 线被拉低 → 设备输出 0
    ● 永远不直接输出高
  3. 举例
    ● 主机要发送数据:在对应的时钟周期,把 SDA 的 MOS 管打开或关闭来决定是否拉低
    ● 从机要回应 ACK:在 ACK 位拉低 SDA 一个周期
    ● 不通信时所有设备都松开 SDA → SDA 始终被上拉为高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值