Overview and Benefits of the I2C Bus

A communication protocol for low-cost applications

Developed by Philips in the 1980s, I2C (alternatively spelled I2C) has become one of the most commonly used serial communication protocols in electronics. I2C facilitates communication between electronic components or integrated circuits whether the components are on the same PCB or connected via a cable.

Diagram of phase two of the I2C Protocol
Mwnuk / Wikimedia Commons / CC BY 2.0

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, but 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 a vast number of 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 all of 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 a number of 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 master 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 master/slave relationship.
  • It only requires two signal lines.
  • It is capable of handling multiple master 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 are capable of configuring the last few bits of the address, but this still 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 will 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