I2C Technology Guide

This topic describes the Inter Integrated Circuit (I2C) bus technology.

Introduction

The I2C is a serial bus technology invented by Philips. The I2C is a multi master serial interface used by the low power peripherals to exchange data. The I2C supports different modes of data transfer and three commonly used modes are:

  • Standard mode supports 100Kbps data transfer

  • Fast mode supports 400Kbps data transfer

  • High speed mode supports 3.4Mbps data transfer

Architecture

The I2C bus contains 2 bi-directional lines, a serial clock (SCL) and serial data (SDA) lines. In the I2C bus, more than one device could act as Master device. There can be only one master device active at a given time. The master device initiates the communication and slave responds to the master. The master and slave devices can be interchanged after a data STOP signal is sent from the master. The master device can address more than one slave at a time.

Figure: I2C Bus

The master device can read and write data to the slave device. The I2C bus uses 7 or 10 bit address.

Features

The features of the I2C bus are:

  • the master device can send and receive data from the slave device

  • the I2C bus uses 7 or 10 bit address

  • only uses 2 bi-directional lines for communication

  • multiple master device can be connected to the same bus

Communication

The first byte from the master is used to address the slave device. In the first byte the master sends the address and read/write signal to the slave. There are three types of messages:

  1. master just reads data from the slave

  2. master just writes data to the slave

  3. master reads and writes data

The communication is initiated with a start signal and completed with a stop bit. In the third type of message the master starts the communication with a start signal with a read or write bit to the slave. The process continues until the master has completed the read and write tasks. The communication is terminated with a stop signal.

Typical Uses

The typical uses of I2C bus are:

  • to read data from various flash devices like EEPROM and SDRAM

  • to control LCD

  • to read real time clock data

Related information