top of page
Writer's picture2k20_EC_040 ANURAG KUMAR

What is I2C?

I2C, or Inter-Integrated Circuit, is a popular communication protocol that enables efficient and flexible data exchange between multiple devices in an embedded system. Designed by Philips in the 1980s, I2C has become a standard for connecting sensors, microcontrollers, and peripherals. In this blog, we’ll dive into the basics of I2C, its working, and its applications.


What is I2C?

I2C is a two-wire, serial communication protocol for short-distance communication between multiple devices. It operates on a master-slave architecture, where:

  • Master: Controls the communication, initiating data transfer and generating the clock signal.

  • Slave: Responds to the master’s requests.


I2C is widely used because of its simplicity, scalability, and ability to connect multiple devices with just two wires.


How Does I2C Work?


I2C Lines

I2C communication uses two lines:

1. SDA (Serial Data Line): Transfers data between devices.

2. SCL (Serial Clock Line): Carries the clock signal generated by the master.


Both lines are open-drain, meaning they require pull-up resistors to function correctly.


Master-Slave Communication

1. Addressing: Each slave device has a unique 7-bit or 10-bit address.

2. Data Transfer: The master initiates communication by sending the slave’s address, followed by read/write commands and data.

3. Acknowledgment: After each data byte, the receiving device sends an acknowledgment (ACK) to confirm successful reception.


Data Frame

I2C data transfer follows this frame structure:

1. Start Condition (S): Master pulls SDA low while SCL is high.

2. Address Byte: The master sends the slave's address.

3. Read/Write Bit: Indicates whether the master wants to read (1) or write (0) data.

4. Data Bytes: The actual data being transferred.

5. Stop Condition (P): Master releases SDA while SCL is high.


Features of I2C

1. Two-Wire Design: Simplifies circuit design and reduces wiring complexity.

2. Multi-Master Support: Allows multiple master devices in a single network.

3. Variable Data Rate:

  • Standard Mode: Up to 100 kbps

  • Fast Mode: Up to 400 kbps

  • High-Speed Mode: Up to 3.4 Mbps

4. Device Addressing: Supports 7-bit (up to 128 devices) or 10-bit (up to 1024 devices) addressing.

5. Error Detection: Built-in acknowledgment ensures reliable data transfer.


Advantages and Limitations of I2C

Advantages
  • Requires only two wires for multiple devices.

  • Built-in acknowledgment ensures data integrity.

  • Flexible architecture with multiple master/slave devices.


Limitations
  • Limited speed compared to SPI.

  • Pull-up resistors may cause slower rise times for longer connections.

  • Not suitable for long-distance communication due to signal degradation.


I2C vs. SPI vs. UART

Feature 

I2C 

SPI 

UART

Wires

2 (SDA, SCL)

4 (MOSI, MISO, SCLK, SS)

2 (TX, RX)

Speed

Up to 3.4 Mbps

Up to 10 Mbps or more

Limited by baud rate

Master-Slave

Multi-Master

Single-Master

Point-to-Point

Distance

Short-range

Short-range

Short to moderate

Complexity

Moderate

High

Low

Applications of I2C


1. Sensor Interfacing
  • Connecting sensors like temperature, humidity, or accelerometers to microcontrollers.


2. Display Modules
  • Driving OLED or LCDs using minimal wiring.


3. EEPROM and RTC Modules
  • Reading/writing data to EEPROM chips or real-time clocks.


4. Embedded Systems
  • Communication between microcontrollers and peripherals like ADCs, DACs, or GPIO expanders.


5. Consumer Electronics
  • Used in devices like smartphones, cameras, and smart TVs for inter-device communication.


I2C in Popular Microcontrollers

I2C is integrated into most microcontrollers, including:


1. Arduino
  • I2C pins: A4 (SDA) and A5 (SCL) on boards like Arduino Uno.

  • Example: Communicating with an MPU6050 accelerometer sensor.


2. Raspberry Pi
  • I2C pins: GPIO 2 (SDA) and GPIO 3 (SCL).

  • Ideal for connecting sensors and peripheral modules.


3. ESP32/ESP8266
  • Supports multiple I2C buses, making it great for IoT projects.


Fun Fact

Did you know I2C is so robust that it’s used in spacecraft for on-board sensor communication? Its simplicity and reliability make it a favorite even in extreme environments!


Conclusion

I2C is a powerful, versatile protocol for connecting multiple devices in embedded systems. Its two-wire design, scalability, and support for various devices make it ideal for modern electronics.


Whether you’re working on an IoT project, experimenting with sensors, or designing consumer electronics, mastering I2C will greatly enhance your ability to build efficient and innovative systems. Start exploring I2C today and elevate your project capabilities!


Looking to explore more electronic components? Check out our detailed guides on Microcontroller, USART and other components to deepen your understanding!

0 views0 comments

Related Posts

See All

Comments


bottom of page