[3] Device addressing

So how does the MASTER communicate with the SLAVEs. Every component hooked up to the bus has its own unique address whether it is an MCU, LCD driver, memory, or complex function chip.

 

Manufacturers pay Philips to get a device address. This means only one manufacturer can use the device address. So an EEPROM memory will not have the same device address as a digital temperature IC. This is a good thing when programming because you can specify which device the MASTER wants to communicate with. On the other hand this has a severe drawback, you can not directly put two devices of the same type on the I2C bus without some extra hardware. Some devices provide a simple way of changing its device address which allows up to 8 of the same devices to be connected to the I2C bus.

 

All I2C device addresses are either 7-bit or 10-bit. The use of 10-bit is still rare and will not discussed here.

 

Even if the device address is only 7-bits, data transmitted on the I2C bus is 8-bit. The first 7-bits define the device address. The 8th bit defines the R/W (read/write) mode. For write operations this bit is 0, and 1 for read operations. So the read/write bit just makes the device address an odd or even address. Data is transmitted on the I2C bus MSB first.