IIC 通信协议

IIC 通信协议一、IIC通信协议介绍IC(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。IIC数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps),另外一些变种

一、IIC 通信协议介绍

IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。

如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。IIC数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)和快速+模式(1 Mbps)。

下图是一个嵌入式系统中处理器仅通过2根线的IIC总线控制多个IIC外设的典型应用图

img

与UART通信一样,I2C仅使用两根信号线在设备之间传输数据:一根是双向的数据线 SDA ,另一根是时钟线 SCL 。

SDA(Serial Data,串行数据)–主设备和从设备发送和接收数据的信号线。

SCL(Serial Clock,串行时钟)–传送时钟信号的信号线。

其时钟信号是由主控器件产生。所有接到 IIC 总线设备上的串行数据 SDA 都接到总线的 SDA 上,各设备的时钟线 SCL 接到总线的 SCL 上。对于并联在一条总线上的每个 IIC 都有唯一的地址。

img

I2C是串行通信协议,因此数据沿着单根信号线(SDA线)一比特一比特地传输。与SPI一样,I2C是同步的,因此比特位输出通过主设备和从设备之间共享的时钟信号同步到比特位采样。时钟信号始终由主设备控制。

IIC 总线在传输数据的过程中一共有三种类型信号,分别为:开始信号结束信号应答信号。这些信号中,起始信号是必需的,结束信号和应答信号,都可以不需要。同时还有空闲状态、数据的有效性、数据传输。

空闲状态

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

应答信号

发送器每发送一个字节( 8个bit ),就在时钟脉冲 9 期间释放数据线,由接收器反馈一个应答信号。

  • 应答信号为低电平时,规定为有效应答位( ACK ,简称应答位),表示接收器已经成功地接收了该字节;
  • 应答信号为高电平时,规定为非应答位( NACK ),一般表示接收器接收该字节没有成功。

二、I2C 工作原理

使用I2C通信协议,数据是以消息的形式传输。消息被分解为数据帧。每条消息都有一个包含从设备的二进制地址的地址帧,以及一个或多个包含正在发送的数据的数据帧。该消息还包括每个数据帧之间的开始和停止条件,读/写位和ACK / NACK位

image.png

地址帧:每个从设备唯一的7位或10位序列,用于在主设备要与之通信时标识该从设备。

读/写位:1比特,指定主机是向从机发送数据(低电压电平)还是从从机请求数据(高电压电平)。

ACK / NACK位:消息中的每个帧后都有一个确认/否确认位。如果成功接收到地址帧或数据帧,则会从接收设备向发送方返回一个ACK位。

编址

I2C没有像SPI那样的从设备选择信号线,因此它需要另一种方式来使从设备知道主设备正在向其发送数据,而不是另一个从设备。它通过寻址来实现。地址帧始终是新消息中起始位之后的第一帧。

主设备将要与之通信的从设备的地址发送给与其连接的每个从设备。然后,每个从设备将从主设备发送的地址与其自己的地址进行比较。如果地址匹配,它将向主机发送一个低电压ACK位。如果地址不匹配,则从设备不执行任何操作,并且SDA线保持高电平。

读/写位

地址帧的末尾包含一个位,该位通知从设备,主设备是否要向其写入数据或从中接收数据。如果主设备要向从设备发送数据,则读/写位为低电压电平。如果主设备正在向从设备请求数据,则该位为高电压电平。

数据帧

主设备检测到从设备的ACK位后,就可以发送第一个数据帧了。

数据帧长度始终为8比特,并以最高有效位优先发送。每个数据帧后紧跟一个ACK / NACK位,以验证是否已成功接收到该帧。在发送下一个数据帧之前,主设备或从设备必须接收ACK位(取决于谁发送数据)。

发送完所有数据帧后,主设备可以向从设备发送停止条件以停止传输。停止条件是SDA信号线完成电平由低至高的转换后,SCL信号线紧接着完成电平由低到高的转换,而SCL信号线保持高电平。

三、I2C数据传输步骤

​ A.所有联入I2C中的器件均需具有开漏或集电极开路输出

​ B.通信标准:开始信号——从机地址发送—— 数据传输——停止信号

​ C.每个器件有唯一的识别地址,每个器件都可以发送/接收

​ D.SCL拉低时才可改变数据,每个数据字节8位,第9位是应答位,是接收器件在第9个时钟周期拉底SDA所得,完整的数据传输需要9个时钟脉冲。

​ E.若从器件未在第9位应答,则SDA保持高,解释为传输失败;若第9位应答,则解释为传输完成。分别产生重复START信号或STOP信号释放总线。

1.在将SCL信号线从高电平切换到低电平之前,设备通过将SDA信号线从高电平切换到低电平来每个连接的设备发送启动条件

image.png

启动(START)条件与停止(STOP)条件的时序图如下:

起始信号:当时钟线SCL为高期间,数据线SDA由高到低的跳变。

停止信号:当时钟线SCL为高期间,数据线SDA由低到高的跳变。

在这里插入图片描述

2.主设备向每个从设备发送要与之通信的从设备的7位或10位地址,以及读/写位:

image.png

3.每个从设备将主设备发来的地址与其自己的地址进行比较。如果地址匹配,则从设备通过将SDA信号线拉低一位来返回ACK位。如果主设备的地址与从设备的地址不匹配,则从设备将SDA线拉高。

image.png

4.主设备发送或接收数据帧:

image.png

5.传输完每个数据帧后,接收设备将另一个ACK位返回给发送方,以确认已成功接收到该帧:

image.png

I2C的优缺点

与其他协议相比,I2C很可能听起来有些复杂,但是有一些充分的理由让您愿意或拒绝使用I2C连接到特定设备:

优点

  • 仅使用两根信号线
  • 支持多个主设备和多个从设备
  • ACK / NACK位用于确认每个帧都已成功传输
  • 硬件不如使用UART复杂

缺点

  • 数据传输速率比SPI慢
  • 数据帧的大小限制为8位
  • 比SPI更复杂的硬件实现

参考:https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol

http://blog.eetop.cn/blog-1561828-6945166.html

https://www.cnblogs.com/liujinggang/p/9656358.html

今天的文章IIC 通信协议分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5402.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注