I2C中start后跟的第一个字节的定义

I2C中start后面跟的第一个字节的定义

首个字节的前七位代表的是器件的地址,第8位为读写控制位,其中,‘0’代表主机写数据到从机,‘1’代表主机从从机中读取数据。如下图所示:

                    I2C中start后跟的第一个字节的定义_第1张图片

其中从机的七位地址既可以是固定的,又可以是可以编程的,由于在一个系统中,会同时存在很多同一种类型的器件,可编程这一特性可以使得总线连接更多这种属于同一种类编程位,那么就可以连接8个这钟类型的器件。

在前七位地址位中,I2C协议保留了两种特殊情况,这两种特殊情况为0000XXX和1111XXX,下表对这十六种地址做了说明:

                    I2C中start后跟的第一个字节的定义_第2张图片

Notes

  1. 对于0000_0001,当接收到START byte这种情况,不允许任何 器件做出响应

  2. CBUS

  3. Reserved for different bus format

下面分别对每种情况进行说明

  • 0000_0000:一般有两种情况会调用这种格式,第一种:当需要对全体器件进行复位并且在此种状态下,每个器件的地址可以被重新定义,重新定义后保存定以后的地址也需要调用这种格式;第二种为当发送器不知道自己的数据是要发给谁的时候(如键盘),也需要进入这种模式。这种情况为寻址连接到I2C上的每一个器件,如果某一个从设备不需要在广播呼叫过程中得到任何数据,那么它可以选择不发送ACK位。如果一个Slave不能对这些字节中的任何一个做出响应,那么,它必须通过不产生ack位来忽略这次传播。通常广播呼叫的含义由跟在广播呼叫后面的第二位来决定,在这种情况下,发送的帧格式如下图所示

                  I2C中start后跟的第一个字节的定义_第3张图片

在这种情况下,有两种情形需要考虑:

  1. LSB为0
  2. LSB为1

当B为‘0’时,第二个字节有如下定义:

  • 0000_0110(H'06'):在这种情况下,所有连接的器件都将被复位,并且他们的地址将进入可编程模式。需要提前注意的是:要确保在这个过程中器件不会吧SCL与SDA线拉低,因为低电平会把总线锁死。
  • 0000_0010(H'04'):地址经过编程的slave或者相应广播呼叫的slave,在收到这两位后,会把他们的可编程位锁死。
  • 0000_0000(H'00'):第二个字节不允许出现这种情况

当B为‘1’,这种情况适用于一些不能指定地址的器件(如键盘扫描器),当作为发送器时,就需要进入广播呼叫模式,在这种情况下,第二个字节的内容为这个主机发送器的地址,这样该器件就能够被连接到I2C总线上的一些智能器件所识别,如(微控制器),之后就可以由微控制器指定该主机发送的消息所包含的信息。这种情况下格式如下图所示:

I2C中start后跟的第一个字节的定义_第4张图片

在有些系统中,可以通过配置这些主机发送器的地址,这样,通过一次配置,原来不能自动寻址的主机发送器就可以找到从设备的地址了。过程如下图所示,图a:配置地址;图b:配置地址后主机发送器发送数据到从设备的地址。

I2C中start后跟的第一个字节的定义_第5张图片

  • 0000_0001:START BYTE微控制器连接到I2Cbus上面的方式共有两种,一种是微控制器内部集成有I2C的接口;另一种是微控制器通过软件不停地监视总线的状态,显然微控制器花在监视上面的时间越长,他执行原本的I2C功能的时间就越短。

因此,对于第二种方式连接的微控制器,当它要与快速器件进行通信时,可以通过在数据传输前加一个比正常开始条件要长得多的字节,这个字节包含以下几部分:

  1. 开始条件S
  2. 开始字节0000_0001,在这段时间,处理器切换到低速模式对SDA进行采样直到开始字节中七个零中的一个被SDA采样,当SDA线上的低电平被采样结束后,再切换到高速采样模式对重复起始条件条件进行采样
  3. 一个应答时钟脉冲(ACK)一个与应答相关的高脉冲在开始字节后产生,这个高脉冲的作用是为了证明没有器件对start byte做出响应
  4. 重复起始条件(sr)在接收到重复起始条件后,硬件接收器将会复位,因此就自动忽略了start byte

组成部分如下图所示:

I2C中start后跟的第一个字节的定义_第6张图片

  • 0000_001X:CBUS compatibility由于CBUS接收器可以接到I2C总线上,但是I2C和CBUS器件具有不同的报文格式。在混合总线结构中,要保证I2C器件不会对CBUS信息作出响应。因此保留了CBUS地址(0000_001X),在完成CBUS的地址传输后,DLEN变为高电平,CBUS数据就开始传输了。结束条件后,所有器件都会被复位,格式如下图所示:

I2C中start后跟的第一个字节的定义_第7张图片

你可能感兴趣的:(I2C总线)