1号站资讯平台

I2C通讯协议(Inter-Integrated)引脚少,不需要USART、CAN等

科技新闻 2021-07-03 20:01142网络整理佚名

I2C 通信协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强。它不需要外部收发器设备,例如 USART 和 CAN 通信协议。现已广泛应用于系统(IC)通信中的多种集成电路中。

实现I2C需要两条信号线来完成信息交换,SCL时钟信号线,SDA数据输入/输出线。它属于同步通信。由于输入和输出数据都使用一根线,所以通信方向为半双工。

·I2C 至少需要两根线,类似于异步串口,但可以支持多个从设备。理论上,一个I2C最多可以挂载127个设备,但不包括保留地址,最多可以挂载112个设备。

·与SPI不同,I2C可以支持多主机系统,允许多个主机,每个主机可以和所有的从机通信(主机不能通过I2C通信,每个主机只能轮流使用I2C总线)。

·I2C的数据传输速率介于串口和SPI之间,大多数I2C设备支持100KHz和400KHz两种模式。

使用 I2C 传输数据会有一些额外的消耗:每发送 8bits 的数据通讯,需要额外的 1bit 元数据(ACK 或 NACK)。

·I2C 支持双向数据交换。由于只有一根数据线,所以通信是半双工的。硬件复杂度也位于串口和SPI之间,软件实现可以相当简单。

I2C 物理层

·它是支持设备的总线。 “总线”是指多台设备共用的一条信号线。在一个I2C通信总线中,可以连接多个I2C通信设备,支持多个通信主机和多个通信从机。

·I2C 总线仅使用两条总线线路,一条双向串行数据线 (SDA) 和一条串行时钟线 (SCL)。数据线用于表示数据,时钟线用于同步数据的发送和接收。

·连接到总线的每个设备都有一个独立的地址,主机可以使用这个地址在不同的设备之间进行访问。

·总线通过上拉电阻连接到电源。 I2C设备空闲时输出高阻态,当所有设备空闲时都输出高阻态时,总线被上拉电阻拉高。

·当多台主机同时使用总线时一号站平台,为了防止数据冲突,通过仲裁来确定哪个设备占用了总线。

通讯_樱通讯_国美通讯

·共有三种传输模式:标准模式传输速率为100kbit/s,快速模式为400kbit/s,高速模式可以达到3.4Mbit/s,但目前大多数I2C设备不支持高速模式。

I2C 协议层

以master向slave写数据为例,基本结构如图所示,依次为:

启动信号——从机地址——读写信号——数据位——响应位——…… ——停止位

启动信号(S):SCL线为高电平时,SDA线由高电平转为低电平;停止信号(P):当SCL为高电平时,SDA线由低电平变为低电平的高电平开关。

帧地址:I2C 总线上的每个设备都有自己独立的地址。当主机发起通信时,它通过SDA信号线发送设备地址(SLAVE_ADDRESS)来寻找从机。 I2C 协议规定设备地址可以是 7 位或 10 位。在实践中,7位地址被广泛使用。

I2C使用SDA信号线传输数据,SCL信号线进行数据同步。 SDA 数据线在 SCL 的每个时钟周期传输一位数据。在传输过程中,当SCL为高电平时,SDA所代表的数据有效,即此时SDA为高电平时,表示数据“1”,为低电平时,表示数据“0”。 SCL 为低电平时,SDA 的数据无效。一般SDA此时切换电平,为下一次显示数据做准备。

I2C 数据和地址传输伴随着响应。响应包括两种类型的信号:“确认(ACK)”和“非确认(NACK)”。

作为数据接收方,当设备(无论主从)接收到I2C传输的一个字节数据或地址时,如果想让对方继续发送数据,则需要发送一个“确认( ACK)”信号给对方。发送方会继续发送下一个数据;如果接收方想结束数据传输,它会向对方发送一个“NACK”信号。发送方收到信号后,会产生停止信号,结束信号传输。

发表评论
看不清?点击更换

注:网友评论仅供其表达个人看法,并不代表本站立场。

Copyright @ 2011-2018 1号站资讯平台 All Rights Reserved. 版权所有网站地图

站长统计代码放在此处 备案号:苏ICP12346678

联系QQ: 12345678 邮箱地址:12345678@qq.com