I2C协议研读(五):7位地址构成详解

8. 7位地址

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

8.1 第一个字节中每个位的定义

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

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

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

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

           

Note:

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

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

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

8.1.1 通用调用地址:GENERAL CALL ADDRESS

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

考虑以下两个问题:

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

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

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

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

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

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

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

在某些系统中,硬件主机发送器在系统复位后可以被选择设置为从机接收器,这样,一个配置为主机的系统可以告知硬件主机发送器(当前为从机接收器模式)必须发送哪个地址数据。这些编程程序后,硬件主机维持在主机发送器模式。

8.1.2 START 字节

微控制器接入I2C总线有两种方式,一个带有片上I2C总线硬件接口的微控制器可以被编程为只被来自总线的请求中断。如果设备没有这样的接口,它必须通过软件不断监控总线。很明显,微控制器监控或者轮询总线时间越长,消耗在执行功能的时间就越短。

因此,快速硬件设备和相对较慢的微控制器之间速度是不一样的,后者依赖于软件轮询。

这样,数据发送器可以先执行比正常情况长得多的启动过程,启动流程包括:

在START condition S被主机通过总线发送后,发送START byte(00000001)。另一个微控制器可以以低采样速率在SDA线上采样,直到START byte中7个0中的一个被检测到。被检测到后,微控制器可以转换到高采样速率模式来寻找重复的START condition Sr,用来同步。

硬件接收器在收到重复的START condition Sr时复位,因此将忽略START byte。

START byte之后会产生一个与确认有关的时钟脉冲。这仅仅是用来符合总线上使用的字节处理格式。不允许任何设备确认START byte。

8.1.3 CBUS 兼容性

CBUS接收器可以连接到标准模式的I2C总线。然而,必须同时连接到第三条总线DLEN并忽略确认位。正常情况下,I2C为8位字节序列传输,CBUS使用的设备有不同的格式。

在混合总线结构中,I2C总线设备禁止响应CBUS信息。由于这个原因,保留一个特殊的CBUS地址(00000001X),这个地址I2C总线设备不会响应。CBUS地址传输后,激活DLEN线并发送CBUS格式的传输,如图19。STOP条件后,所有设备再次准备好接收数据。

主机发送器可以在发送CBUS地址后发送CBUS格式,发送以STOP条件结束,所有设备都可以识别。

NOTE:如果CBUS配置已知,预计不会与CBUS兼容设备进行扩展。设计人员可以根据所使用设备的特定要求调整保持时间。

猜你喜欢

转载自blog.csdn.net/yinuoheqian123/article/details/105602831