7位宽的地址空间理论上允许128个I2C地址,然而,一些地址被保留用于特殊目的。因此,在7位地址方案中,只有112个地址可用。为了消除这种情况,定义了一种使用10位地址的特殊方法。
10 bit adresses, binary noted, MSB is left Purpose
0000000 0 General Call
0000000 1 Start Byte
0000001 X CBUS Addresses
0000010 X Reserved for Different Bus Formats
0000011 X Reserved for future purposes
00001XX X High-Speed Master Code
11110XX X 10-bit Slave Addressing
11111XX X Reserved for future purposes
Start Byte
并不是每个连接到I2C总线的微控制器都有集成的I2C控制器。这些微控制器必须永久观察I2C线路,以检测I2C传输。这将消耗(主要由轮询完成)大量的CPU时间。为了减少这种CPU功率的浪费,可以用较慢的仲裁方法建立I2C传输。
为此,主机发送启动条件,然后是 start byte (’ 00000001 '),一个虚拟的应答脉冲和一个重复的启动条件。观察微控制器只能检测SDA上的七个零中的一个来检测I2C传输。这可以通过一个相对缓慢的轮询率来实现。一旦控制器检测到SDA是低的,它就可以切换到一个更高的轮询速率,以便等待重复的启动条件和接下来的I2C传输。
传输结束后,它可以切换回节省cpu功耗的慢轮询速率,以便检测下一次传输。
本文转自:http://www.ffsqw.com/learn/84.html