I2C通信时序介绍

I2C (Inter-Integrated Circuit) 总线是一种两线式串行通信协议,主要用于短距离内的集成电路间通信。I2C总线由两条线组成:一条是串行数据线SDA (Serial Data Line),另一条是串行时钟线SCL (Serial Clock Line)。以下是I2C通信时序的关键部分及其详细说明:

1. 起始信号(Start Condition)

起始信号标志着一次I2C事务的开始。当SCL线处于高电平时,SDA线从高电平转变为低电平,即SDA线出现一个下降沿。这是唯一允许的条件来启动一次I2C事务。

2. 停止信号(Stop Condition)

停止信号标志着一次I2C事务的结束。当SCL线处于高电平时,SDA线从低电平转变为高电平,即SDA线出现一个上升沿。这是唯一允许的条件来结束一次I2C事务。

3. 数据传输

在每次数据传输期间,数据位在SCL线处于低电平时被改变,在SCL线处于高电平时被采样。每个数据位的传输遵循以下步骤:

  • 当SCL为低电平时,SDA线上的数据可以改变。
  • 当SCL为高电平时,SDA线上的数据必须保持稳定,以便接收设备能够正确采样数据。

4. 应答(Acknowledge, ACK)

每传输完8位数据后,发送设备会释放SDA线,此时接收设备必须将其拉低至少一个SCL脉冲的时间长度来确认数据已被正确接收,这就是ACK信号。如果没有接收到ACK信号,发送设备会认为数据未被正确接收,并可能尝试重新发送。

5. 空闲状态

当I2C总线既没有处于起始条件也没有处于停止条件时,总线处于空闲状态。在这种状态下,SDA和SCL线都应该保持高电平。这是因为I2C总线是开放漏极或开路集电极配置,需要上拉电阻将线拉到高电平。

6. 总线仲裁

在多主机环境中,如果两个或更多的设备试图同时控制总线,将会发生总线竞争。I2C总线设计时考虑到了这种可能性,并且通过数据线SDA上的电平比较来进行仲裁。如果两个设备在同一时间发送,其中一个发送高电平而另一个发送低电平,那么发送低电平的设备将赢得仲裁。输掉仲裁的设备会自动转换为从机模式。

7. 从机发送与主发送

  • 从机发送(Slave Transmitter):从设备作为发送者,主设备作为接收者。
  • 主发送(Master Transmitter):主设备作为发送者,从设备作为接收者。

实际操作流程

一次典型的I2C事务包括以下几个步骤:

  • 主设备发送起始信号。
  • 主设备发送从设备地址和读/写方向标志位。
  • 从设备发送ACK信号。
  • 主设备发送数据或请求数据。
  • 每次传输完8位数据后,从设备发送ACK信号(最后一个字节可能发送非ACK信号)。
  • 主设备发送停止信号。

以上就是I2C通信的基本时序概述。理解这些时序对于成功实现I2C通信非常重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值