I2C使用上拉电阻详解

SDA使用上拉电阻?

设备的SDA中有一个三极管,使用开极/开漏电路(三极管是开极,CMOS管是开漏,作用一样),如下图:

 

真值表如下:

 

从真值表和电路图我们可以知道:

  • 当某一个芯片不想影响SDA线时,那就不驱动这个三极管

  • 想让SDA输出高电平,双方都不驱动三极管(SDA通过上拉电阻变为高电平)

  • 想让SDA输出低电平,就驱动三极管

从下面的例子可以看看数据是怎么传的(实现双向传输)。 举例:主设备发送(8bit)给从设备

  • 前8个clk

    • 从设备不要影响SDA,从设备不驱动三极管

    • 主设备决定数据,主设备要发送1时不驱动三极管,要发送0时驱动三极管

  • 第9个clk,由从设备决定数据

    • 主设备不驱动三极管

    • 从设备决定数据,要发出回应信号的话,就驱动三极管让SDA变为0

    • 从这里也可以知道ACK信号是低电平(从设备回应主设备)

从上面的例子,就可以知道怎样在一条线上实现双向传输,这就是SDA上要使用上拉电阻的原因。

SCL使用上拉电阻?

在第9个时钟之后,如果有某一方需要更多的时间来处理数据,它可以一直驱动三极管把SCL拉低。假设IIC主设备发送一串数据给从设备,从设备接收到一段数据后处理不过来,这时就可以拉低SCL告诉主设备不要再发数据过来,从设备处理完毕后再把SCL拉成高电平,主设备继续发送数据给从设备。

当SCL为低电平时候,大家都不应该使用IIC总线,只有当SCL从低电平变为高电平的时候,IIC总线才能被使用。 当它就绪后,就可以不再驱动三极管,这是上拉电阻把SCL变为高电平,其他设备就可以继续使用I2C总线了。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值