10位寻址可以和7位寻址兼容、合并。利用10位寻址时,在START条件或重复START条件之后,为第一个字节的前七个位使用保留的组合1111XXX。10位寻址并不影响7位寻址。7位寻址设备和10位寻址设备可以连接到同一个I2C总线上,并且都可以应用在F/S模式和高速模式系统中。
尽管对于保留的地址位1111XXX,有八种可能的组合,但是只有四种组合11110XX被用于10位寻址。剩下的四种11111XX保留作为未来I2C总线的提升。
12.1 前两个字节中位的定义
10位从机地址由启动条件(S)或重复的启动条件(Sr)后的前两个字节形成。
第一个字节的前七位11110XX中,XX是10位地址中两个最高有效位(MSBs),第一个字节的第八位是读写标志位,决定了信息传递的方向。0表示主机向选中的从机中写信息,1表示主机从从机读取信息。
如果R/W位是0,第二个字节包含10位地址中剩余的八位(XXXXXXXX),如果R/W位是1,则第二个字节包含从机向主机发送的信息。
12.2 10位地址格式
在包含10位寻址的传输中,读/写格式的各种组合都是可能的。可能的数据传输格式有:
1)主机发送端通过10位从机地址向从机接收端发送数据。
传输方向不变(图26)。START condition后若有10位地址,每个从机将10位地址中第一个字节的前七位数据(11110XX)和自己的地址比较,并看一下第八位(读写标志位)是否为0。有可能不止一个从机能够匹配上并生成确认位(A1)。所有匹配的从机将比较自己的地址和从机地址第二个字节中的八位数据(XXXXXXXX)是否匹配,这个过程中只有一个从机会匹配上并生成确认位(A2)。这样,这个从机地址将会被主机锁定,直到该从机接收到STOP condition(P)或者一个重复的START condition(Sr)伴随着另一个从机地址。
2)主机接收端通过10位从机地址读取从机发送端的数据
第二个读写位(R/W)后传输方向将改变。直到并包括确认位A2,该过程与针对主机发送端寻址从机接收端的过程相同。重复起始条件(Sr)后,正在匹配的从机remembers that之前已经被寻址,这个从机将查验Sr后的从机地址中,第一个字节的前七位是否和起始条件(S)后的一样,并检查第八位的读写位是否为1。如果一样,从机将考虑之前已经作为发送端被寻址,将生成确认位A3。从机发送端保持寻址,直到接收到停止条件(P)或者直到接收到另一个重复起始条件(Sr)带着一个不同的从机地址。重复起始条件(Sr)后,所有其他的从机设备将比较自己的地址和从机地址(11110XX)的第一个字节中的前七位是否一致,并查验第八位读写位。然而,没有从机将被寻址,因为读写标志位为1(对于10位设备),或者11110XX从机地址(对于7位设备)不匹配。
3)合并格式。一个主机发送数据给从机,并从该从机读取数据(图28)。所有时间都是相同的主机占据总线。在第二个读写位后传输方向将改变。
4)合并格式。一个主机发送数据给一个从机,然后再发送数据给其他的从机(图29)。所有时间都是相同的主机占据总线。
5)合并格式。在一条串行传输中合并10位和7位寻址(图30)。在每个起始条件(S)或重复起始条件(Sr)后,可以传输一个10位或7位地址。图30中显示了一个主机发送数据给一个7位地址的从机,然后再发送数据给一个10位地址的从机。所有时间都是相同的主机占据总线。
Note:
1)合并格式可以用来控制一个串行内存(serial memory)。第一个数据字节期间,内部存储器的位置必须被写入。重复启动条件和从机地址后,即可传输数据。
2)关于自动增加或减少先前访问的存储位置等的所有决定,均由设备设计者决定。
3)每个字节后跟一个确认位,如序列中的A或块所示。
4)I2C总线设备必须在收到START或重复的START条件后重置其总线逻辑,以使它们都预期发送从机地址。
12.3 通用呼叫寻址和带有10位寻址的起始字节:General call addressing and start byte with 10-bit addressing
对于I2C总线十位寻址过程来说,起始条件(S)后前两个字节往往决定了主机选择哪个从机。例外就是“general call”地址00000000(H‘00’)。十位寻址从机设备对于“general call”的反应将和对7位寻址的反应相同。
硬件主机可以在一个“general call”后发送他们的十位地址。在这种情况下,“general call”地址字节后面是两个连续的字节,其中包含主机发送端的10位地址。 格式如图10所示,其中第一个DATA字节包含主机地址的八个最低有效位。
起始字节00000001(H‘01’)可以以与7位寻址相同的方式在10位寻址之前。