I2C协议研读(五)

8. 7位地址

对于I2C总线的寻址,在START条件后的第一个比特往往决定了哪个从机被主机选中。“general call”地址是例外,它可以寻址所有设备。当用这个地址时,理论上所有的设备都要有确认回应。然而,可以设置让设备忽略这个地址。general call地址的第二个比特定义了接下来的动作。

(1)第一个字节中每个位的定义

第一个字节的前七位组成从机地址。第八位是LSB(least significant bit)最低有效位。他决定了信息的方向。第一个字节的最低有效位置为“零”表示主机将信息写入所选的从机。 在这个位置上的“ 1”表示主机将从从机读取信息。

当发送一个地址,系统里的每个设备比较START条件后面的前七位地址,如果匹配,根据R / W位的不同,设备会将其自身视作主机的从机接收器或从机发送器。

I2C协议研读(五)

从机地址可以由固定部分和可编程部分组成。由于系统中可能会存在多个相同的设备,因此从地址的可编程部分使I2C总线可以连接的设备数量尽可能多。 器件的可编程地址位的数量取决于可用引脚的数量。 例如,如果一个设备具有4个固定地址和3个可编程地址位,则总共8个相同的设备可以连接到同一条总线。

I2C总线委员会负责协调I2C地址的分配。 可以从封底上列出的飞利浦代表处获得更多信息。 保留两组八个地址(0000XXX和1111XXX)以用于表2中所示的目的。从站地址的位组合11110XX保留用于10位寻址(请参见第14节)。

           I2C协议研读(五)

Note:

1)接收到START字节后,不允许任何设备进行确认。

2)保留了CBUS地址,以使CBUS兼容设备和I2C总线兼容设备可以在同一系统中相互混合。 不允许I2C总线兼容的设备在收到该地址后作出响应。

3)包括为不同总线格式保留的地址,以使I2C和其他协议能够混合使用。 仅允许使用此类格式和协议的I2C总线兼容设备才能响应该地址。

(1.1)通用调用地址:GENERAL CALL ADDRESS

通用调用地址用于寻址连接到I2C总线的每个设备,但是,如果设备不需要通用调用结构中提供的任何数据,则可以通过不发出确认来忽略该地址。如果设备确实需要来自通用调用地址的数据,它将确认该地址并作为从机接收器。第二个和随后的字节将由每个能够处理此数据的从机接收器确认。不能处理这些字节之一的从站必须通过不应答来忽略它。通用调用地址的含义总是在第二个字节中指定(见图15)。

I2C协议研读(五)

考虑以下两个问题:

当最低有效位(LSB)B是一个0,第二个字节有以下定义:

00000110(H‘06’).通过硬件复位和写入从机地址的可编程部分。
接收到这个2字节的序列后,所有旨在响应通用呼叫地址的设备都将复位并接受其地址的可编程部分。
必须采取预防措施,以确保设备在施加电源电压后不会拉低SDA或SCL线,因为这些低电平会阻塞总线。

00000100(H‘04’).通过硬件写入从机地址的可编程部分。
所有通过硬件定义其地址的可编程部分(并响应通用呼叫地址)的设备都将在接收到这两个字节序列时锁存该可编程部分。
设备不会重置。

00000000(H‘00’).禁止作为第二个字节使用

编程步骤的序列发布在相应的器件数据手册中。
其余代码尚未修复,设备必须忽略它们。

当最低有效位(LSB)B是一个1,2字节序列是一个“硬件general call”。这意味着该序列是由硬件主设备传输的,例如键盘扫描器,无法将其编程来发送所需的从机地址。由于硬件主机事先不知道消息必须传输到哪个设备,因此它只能生成此硬件的general call以及向系统标识自己的地址(请参见图16)。

第二个字节中剩余的七个位包含硬件主机的地址,该地址由连接到总线的智能设备(例如微控制器)识别,该智能设备随后将指示来自硬件主机的信息。如果硬件主机也可以充当从机,则从机地址与主机地址相同。

I2C协议研读(五)