I2C使用上拉电阻详解

本文详细解释了SDA和SCL线上使用上拉电阻的原因。通过开漏电路和真值表,说明了如何通过控制三极管实现双向传输。在SDA线上,上拉电阻使得在没有器件驱动时能保持高电平,允许数据在主设备和从设备间双向流动。而在SCL线上,上拉电阻确保了时钟信号的同步,并允许设备在需要时延时处理数据。上拉电阻的关键作用在于实现IIC总线的有效通信和冲突避免。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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总线了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值