I2C协议解读

22 篇文章 19 订阅 ¥29.90 ¥99.00
本文详细介绍了I2C协议,包括START和STOP信号、数据帧、ACK/NACK机制、仲裁过程、设备地址和R/W位,以及不同模式下的时序和信号电平要求。I2C是一种两线制同步串行总线,广泛用于低速设备间的通信。
摘要由CSDN通过智能技术生成

一、说明

I2C(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。

I2C是一种同步串行总线,总共有两根线:SDA和SCL,其中数据SDA可以双向传输,时钟SCL只能从主到从(外带控制器的不算,这种架构不太常用,正文也不考虑)。常用的I2C总线都是OD开漏输出,因此需要电路上增加上拉电阻。

I2C支持两种寻址方式,分别是7bit地址和10bit的地址,其中7bit地址是常用且必须支持的,10bit地址一般不用,是一个可选的功能,具体看芯片规格书。

二、协议介绍

协议要求,数据传输时,数据SDA在时钟SCL高电平时务必保持电平稳定,不能有高低电平切换,切换只能发生在时钟SCL处于低电平非采样时进行。

1.START和STOP

所有事件必须以START(S)开始,以STOP(P)结束。其中START是在时钟SCL处于高电平状态时,数据SDA从高电平变成低电平;STOP是时钟SCL处于高电平状态时,数据SDA从低电平变成高电平。具体如下图:

START和STOP只能是Master产生,另外在STOP之前可以有多个START,除了第一个START外的开始均成 repeated START (Sr)。

2.数据帧

I2C的帧必须8bit长度,但每次传输的帧数量没有限制,每8bit数据后必须有一个Acknowledge bit(简称ACK)。数据传输时,高位先发,也就是第一位是最高位MSB,第8位是最低位LSB。

3.ACK和NACK

数据传输时,第9位是0就代表是ACK,本数据是接收数据的设备(可能是Master也可能是Slave)产生,含义是接收成功;如第9位是1就代表是NACK,含义是接收异常(接收器处于忙状态无法处理或者地址错误没有响应等),这时Master可以产生STOP结束通讯,也可以发送repeated START (Sr)以重新发送。

接收异常主要包括:

  • 接收器正在处理无法处理数据;

  • 地址错误导致无设备响应(没有从设备拉低SDA信号线);

  • 接收到的数据或命令不能被理解;

  • 接收器无法接收更多的数据等。

4.仲裁Arbitration

仲裁只有在多个Master的情况下才会遇到,即两个或多个Master在START的最小保持时间 (tHD;STA )内都控制SDA从高电平变成低电平。仲裁只支持标准模式、快速模式和快速plus模式,不支持高速和超快速模式。

仲裁是通过处理每个bit的方式进行,直到有Master控制SDA先变成高电平,则判另一个Master抢占总线成功,如下图,Master2最后仲裁成功:

5.设备地址和R/W位

7bit的设备地址是在START信号后发送,第8位就是读写位,其中1是读指令,0是写指令:

同样,地址发送也是从高位到地位:

需注意,当是读指令时,后边的DATA就是Slave产生,如是写指令,则继续是Master产生DATA。如下:

当然,数据通讯中想要切换读写或者更换寄存器地址操作等,也可以使用重新START信号,如下:

协议上对这部分写的不是很详细,大家对比看下其他人写的资料,注意两点,其一是读写切换可以中间用STOP也可以用RE-START信号,其二是读操作时,在STOP信号前Master发送的应答是NACK:

设备地址除了常用的7bit格式外,还有不常用的10bit格式,这里就简单介绍下,由于10bit地址用1个字节(8bit)传输不够,用2个字节就少了5bit(R/W占了1bit),协议规定发送10bit地址时前面补充11110,如下:

6.保留地址

0000 XXX and 1111 XXX的地址是特别预留的,有特定含义,具体如下,本文不再展开讲了:

7.超快Ultra Fast-mode I2C

支持更高速率的Ultra Fast-mode和普通I2C有一定区别:

  • SDA是单向传输,因此R/W信号只支持0(写),不支持1(读);

  • SDA和SCL是推挽输出,不再是开漏OD输出,因此不需要上拉电阻;

  • 没有ACK,只有NACK,也就是第9位SDA只能是高电平1;

8.高速模式Hs-mode

高速模式除了提供比较快的数据通讯速率外,还可以向下兼容。但是本模式不支持仲裁和时钟同步功能。

本模式传输时,必须首先发送高速模式控制码00001XXX,具体帧格式:START信号+高速模式控制码+NACK,如下图:

三、时序及信号电平要求

1.信号电平

无论何种模式,信号电平的VIL的范围是【-0.5V,0.3VDD】,VIH的范围是【0.7VDD,min(VDD+0.5V,5.5V)】。

2.普通模式时序要求

标准模式、快速模式和快速模式plus的时序参数要求如下:

时序图如下:

3.高速模式时序要求

高速模式的时序参数要求,注意在不同负载电容下速率不同:

时序图如下:

4.超快速模式时序要求

超快速模式的时序参数要求:

时序图如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qflook

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值