IIC通讯协议


 

I2C为什么要接上拉电阻?

因为它是开漏输出。

ceb2d11227a422c2eddd4278208cc922.png

为什么是开漏输出?

I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。所以总线一般会使用开漏输出。

关于推挽输出和开漏输出的理解_Ω snow的博客-CSDN博客_推挽输出和开漏输出原文链接:【1】 如何正确理解开漏输出和推挽输出(写的很棒,真的是很通俗易懂了~)【2】 什么是开漏电路(推挽电路)?开漏形式的电路由何特点?【3】 开漏、开集电路详解 下面是看完上面几篇文章的笔记 ~~~推挽电路&开漏电路1、推挽电路(Push-Pull)2、开漏电路(Open-Drain)1、推挽电路(Push-Pull)推挽电路的主要组成部分是三极管,所以先从三极管说起~(图均来自文章【1】)三极管(晶体管)有三个端口,分别是基极(Base)、集电极(Collector)https://blog.csdn.net/qq_43732429/article/details/112755804

为什么要接上拉电阻?

接上拉电阻是因为I2C通信需要输出高电平的能力。一般开漏输出无法输出高电平,如果在漏极接上拉电阻,则可以进行电平转换。

I2C由两条总线SDA和SCL组成。连接到总线的器件的输出级必须是漏极开路,都通过上拉电阻连接到电源,这样才能够实现“线与”功能。当总线空闲时,这两条线路都是高电平。

 我们知道了SDA需要开漏输出和上拉电阻的原因,那为什么连SCLK也要使用这种模式呢?

这是因为虽然大部分时间都是由主机来驱动SCLK的,但是从机也是有情况来驱动SCLK线的;比如:当从机需要处理自身的数据,暂时不能和主机通信,就需要驱动SCLK(拉低SCLK)

这种情况不使用开漏输出的话就容易短路。


IIC的协议层
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。

开始位“Start”和停止位“Stop”,只能由Master来发出。
应答信号接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

IIC 总线时序图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值