IIC通信协议(简单易理解版)

IIC通信协议简介:

IIC(也记为I2C,读作I^2C,inter-integrated Circuit集成电路总线),最早是飞利浦在1982年开发设计并用于自己的芯片上,是一种半双工串行同步的通信协议。常用于一主多从的通信方式,由于只有两根线。,一根数据线SDA、一根时钟线SCL,因此抗干扰能力大不如CAN总线通信,常用于短距离通信。
IIC线路连接简图
I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。

通信协议详解:

上图可以看出,由两条信号线的上拉电阻把电平拉高,因此当IIC总线的数据线SDA和时钟线同时处于高电平时,规定为总线的空闲状态。此时各个器件输出级场效应管均处在截止状态,即释放总线。

以下是从主设备往从设备写数据的传输格式:
从主设备往从设备写数据的传输格式

时序的具体步骤:
1)、开始信号;
2)、发送 IIC 设备地址,每个 IIC 器件都有一个设备地址,通过发送具体的设备地址来决定访问哪个 IIC 器件。这是一个 8 位的数据,其中高 7 位是设备地址,最后 1 位是读写位,为1 的话表示这是一个读操作,为 0 的话表示这是一个写操作;
3)、 IIC 器件地址后面跟着一个读写位,为 0 表示写操作,为 1 表示读操作;
4)、从机发送的 ACK 应答信号;
5)、重新发送开始信号;
6)、发送要写写入数据的寄存器地址;
7)、从机发送的 ACK 应答信号;
8)、发送要写入寄存器的数据;
9)、从机发送的 ACK 应答信号;
10)、停止信号。

起始位:

起始位必须要在时钟线为高电平时,数据位下拉,有一个下降沿,这就是起始位。
起始位

地址、数据位:

在传输地址位、数据位时,IIC 总线在数据传输的时候要保证在 SCL 高电平期间, SDA 上的数据稳定,因此 SDA 上的数据变化只能在 SCL 低电平期间发生。
逻辑1如下:
逻辑1

逻辑0

停止位:

与起始位相反,停止位必须要在时钟线为高电平时,数据位上拉,保证在这个时钟期间有一个上升沿,这就是停止位。
在这里插入图片描述

从主设备往从设备读数据的传输格式:

从主设备往从设备读数据的传输格式

1)、主机发送起始信号;
2)、主机发送要读取的 IIC 从设备地址;
3)、读写控制位,因为是向 IIC 从设备发送数据,因此是写信号;
4)、从机发送的 ACK 应答信号;
5)、重新发送 START 信号;
6)、主机发送要读取的寄存器地址;
7)、从机发送的 ACK 应答信号;
8)、重新发送 START 信号;
9)、重新发送要读取的 IIC 从设备地址;
10)、读写控制位,这里是读信号,表示接下来是从 IIC 从设备里面读取数据;
11)、从机发送的 ACK 应答信号;
12)、从 IIC 器件里面读取到的数据;
13)、主机发出 NO ACK 信号,表示读取完成,不需要从机再发送 ACK 信号了;
14)、主机发出 STOP 信号,停止 IIC 通信。

多字节读写:

多字节读写时序和单字节的基本一致,只是在读写数据的时候可以连续发送多个自己的数据,其他的控制时序都是和单字节一样的。

多主机仲裁:

当多个主机同时写数据时,IIC总线会使用“线与机制”识别来自其他芯片的活动(抢答),一般不会在开漏三极管导通的时候检查仲裁,而是在开漏三极管截止的时候检查总线是否被其他芯片拉到低电平,如果检测到总线被其他芯片拉到低电平,就要立即退出通信并向软件报告“仲裁失利”,等待其他芯片传输完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值