I2C bus is a two wire multimaster bus invented by Philips which is used to communicate with peripherals in embedded devices, motherboards etc. The name I2C is derived from IIC (Inter Integrated Circuit). The main objective behind the invention of I2C bus is to establish a simple low pin count bus that can connect different ICs on a circuit board of Television or Radio. Later I2C grew beyond the limits of TV and Radio and now it can be found in almost every computer motherboards and other embedded devices. I2C can also be used for communication between multiple circuit boards in equipments with or without using a shielded cable depending on the distance and speed of data transfer.
The advantages and limitations of I2C bus are as follows.
Advantages
- Only two bus lines are required to establish full-fledged bus.
- Each slave device connected is uniquely addressable using slave addresses
- Can choose a short 7 bit addressing or 10 bit addressing (which can accommodate large number of devices on the same bus, but less popular).
- No strict baud rate specified since the clock is driven directly by the master.
- True multimaster support with up to 8 masters in a single bus system.
- Very simple protocol which can be emulated by microcontrollers without integrated I2C peripheral device.
- Inexpensive
- Supports up to 3.4 Mbits/sec transfer speeds.
Limitations
- 7 bit addressing supports only a very small number of devices.
- Different devices from different manufacturers come with hard coded slave address or address will be configurable in a small range only. This can lead to address clashes sometimes.
- No automatic bus configuration or plug and play
Many other bus specifications are emerged from I2C bus such as SMBUS (System Management BUS) and PMBUS (Power Management Bus). I2C specification can be downloaded here.


