What Is the I2C Protocol?
I2C is a serial communication protocol that only requires two signal lines. It was designed for communication between chips on a printed circuit board (PCB). I2C was originally designed for 100 Kbps communication. However, faster data transmission modes have been developed over the years to achieve speeds of up to 3.4 Mbit. The key feature of I2C is the ability to have many components on a single communication bus with only two wires, which makes I2C perfect for simple applications. The I2C protocol has been established as an official standard, allowing for backward compatibility among I2C implementations.
I2C Signals
The I2C protocol uses two bi-directional signal lines to communicate with the devices on the communication bus. The two signals used are:
Serial Data Line (SDL)Serial Data Clock (SDC)
The reason that I2C can use only two signals to communicate with several peripherals is in how communication along the bus is handled. Each I2C communication starts with a 7-bit (or 10-bit) address that calls out the address of the peripheral. This allows multiple devices on the I2C bus to play the role of the primary device as the needs of the system dictate. To prevent communication collisions, the I2C protocol includes arbitration and collision detection capabilities, which allow smooth communication along the bus.
Benefits of I2C
As a communication protocol, I2C has the following advantages:
Flexible data transmission rates. Longer distance communication than SPI. Each device on the bus is independently addressable. Devices have a simple primary/secondary relationship. It only requires two signal lines. It is capable of handling multiple primary communications by providing arbitration and communication collision detection.
Limitations of I2C
With all of these advantages, I2C also has a few limitations that may need to be designed around. The most important I2C limitations include:
Since only 7-bits (or 10-bits) are available for device addressing, devices on the same bus can share the same address. Some devices can configure the last few bits of the address, but this imposes a limitation of devices on the same bus.Only a few limited communication speeds are available, and many devices do not support the transmission at higher speeds. Partial support for each speed on the bus is required to prevent slower devices from catching partial transmissions that may result in operational glitches.The shared nature of the I2C bus can result in the entire bus hanging when a single device on the bus stops operating. Cycling the power to the bus can restore proper operation.Since devices set their own communication speed, slower operational devices can delay the operation of faster devices.I2C draws more power than other serial communication busses due to the open-drain topology of the communication lines.The limitations of the I2C bus typically limit the number of devices on a bus to around a dozen.
I2C Applications
I2C is a great option for applications that require low cost and simple implementation rather than high speed. For example, common uses of the I2C communication protocol include:
Reading certain memory ICs.Accessing DACs and ADCs.Transmitting and controlling user-directed actions.Reading hardware sensors.Communicating with multiple micro-controller.