Why I²C Remains One of the Most Important Buses in Embedded Systems

Kevin zhang·2026년 5월 29일

When people talk about communication interfaces in modern electronics, the conversation usually revolves around high-speed technologies. Engineers discuss PCIe lanes, Gigabit Ethernet, MIPI DSI, USB 3.0, and increasingly complex serial protocols designed to move large amounts of data.

Yet if you open almost any embedded device today, from an industrial HMI panel to a medical monitor or a smart thermostat, there is a good chance that one of the most heavily used communication buses inside is still I²C.

This is somewhat surprising because I²C was introduced decades ago. Compared to modern interfaces, it is slow, simple, and limited in bandwidth. Nevertheless, it continues to appear in new product designs every year.

The reason is straightforward: most Embedded System need reliability and simplicity far more often than they need maximum throughput.

This article explores how I²C works, why it remains relevant, common implementation practices, and lessons learned from real-world hardware and Linux-based development projects.


The Original Goal of I²C

I²C, short for Inter-Integrated Circuit, was developed as a simple way for integrated circuits on the same PCB to communicate with each other.

Rather than allocating multiple control lines for every peripheral, designers could connect many devices using only two shared signals:

SignalFunction
SDASerial Data
SCLSerial Clock

This immediately reduced board complexity.

Instead of dedicating separate chip-select lines to every peripheral, devices could share the same bus and be identified through addresses.

Even today, this remains one of the strongest advantages of the protocol.


Why Engineers Still Choose I²C

From a purely technical standpoint, SPI is often faster.

Modern processors may also support advanced interfaces that provide dramatically higher bandwidth.

However, many embedded peripherals do not actually require high-speed communication.

Consider the following components:

Device TypeTypical Data Rate Requirement
RTCExtremely Low
EEPROMLow
Temperature SensorVery Low
PMICLow
Capacitive Touch ControllerLow
GPIO ExpanderLow
Ambient Light SensorVery Low

For these devices, a communication speed of a few hundred kilobits per second is more than sufficient.

Using a complex interface would add hardware cost without providing meaningful benefits.

This is why I²C remains attractive.


Typical Devices Connected Through I²C

A modern embedded Linux board often contains numerous I²C peripherals.

A typical industrial controller may include:

DevicePurpose
RTCTimekeeping
PMICPower Management
Touch ControllerTouchscreen Interface
EEPROMConfiguration Storage
Temperature SensorThermal Monitoring
Audio Codec Control InterfaceAudio Configuration
GPIO ExpanderAdditional I/O
Fan ControllerThermal Management

Many engineers are surprised when they realize that a seemingly simple embedded product may contain ten or more I²C devices.


Addressing Makes Expansion Easy

One reason I²C scales well is address-based communication.

Every device on the bus has a predefined address.

For example:

DeviceAddress Example
EEPROM0x50
RTC0x68
Temperature Sensor0x48
PMIC0x1B

The master device initiates communication and specifies which slave should respond.

This architecture allows many peripherals to coexist using only two signal lines.

Compared with interfaces requiring individual chip-select signals, PCB routing becomes significantly simpler.


Pull-Up Resistors Matter More Than Many Engineers Expect

One of the most common I²C problems encountered during hardware bring-up is incorrect pull-up resistor selection.

Because I²C uses an open-drain architecture, neither SDA nor SCL actively drives the signal high.

External pull-up resistors are required.

Typical values include:

VoltageCommon Pull-Up Value
1.8V2.2kΩ – 4.7kΩ
3.3V4.7kΩ
5V4.7kΩ – 10kΩ

Selecting values that are too large can slow signal transitions.

Selecting values that are too small increases current consumption and may stress devices unnecessarily.

In many projects, communication instability can be traced back to incorrect pull-up sizing rather than software defects.


I²C Speed Is Usually Not the Limiting Factor

Engineers occasionally become concerned about I²C bandwidth.

In practice, most embedded systems never come close to saturating the bus.

Common speed modes include:

ModeClock Frequency
Standard Mode100 kHz
Fast Mode400 kHz
Fast Mode Plus1 MHz
High Speed Mode3.4 MHz

Most industrial products operate successfully at either 100 kHz or 400 kHz.

Higher clock rates may look attractive on paper, but they reduce timing margins and increase susceptibility to signal integrity problems.

For products requiring long-term reliability, conservative settings are often preferred.


Working with I²C in Linux

Linux provides excellent support for I²C development and debugging.

One of the most useful tools is:

i2cdetect -y 1

This command scans the bus and displays detected device addresses.

Typical output may reveal:

50
68
1b

which immediately confirms that communication is functioning.

Other frequently used commands include:

i2cget
i2cset
i2cdump

These tools often allow engineers to diagnose hardware issues without writing any application code.


Common Bring-Up Problems

Displaying a device in the schematic does not guarantee that it will communicate successfully.

Several issues appear repeatedly during development.

Incorrect Device Address

Some devices support configurable address pins.

If these pins are tied differently than expected, the software may search for the wrong address.

Missing Pull-Ups

Without proper pull-up resistors, the bus may appear completely dead.

Power Sequencing Issues

A device may not respond if its power rail is not stable when communication begins.

Reset Timing Problems

Many peripherals require a reset sequence before becoming accessible.

Bus Contention

If multiple devices attempt to control the bus improperly, communication failures may occur.

These problems are far more common than driver bugs.


Touchscreen Controllers and I²C

Many modern touchscreens rely on I²C.

Examples include:

  • GT911
  • GT9271
  • FT5x06
  • Goodix families
  • Ilitek controllers

Even when the display itself uses MIPI DSI, LVDS, or RGB interfaces, touch communication is often performed through I²C.

This means that successful display operation does not automatically guarantee that touch functionality will work.

The display and touch subsystems are frequently independent.


PMIC Communication in ARM Systems

Power management ICs represent another major use case.

Many ARM-based processors communicate with PMIC devices through I²C during early boot stages.

Examples include:

  • Rockchip platforms
  • NXP platforms
  • Allwinner platforms
  • TI processors

The PMIC may control:

  • Core voltage
  • Memory voltage
  • Power sequencing
  • Battery charging
  • Thermal protection

If PMIC communication fails, the entire system may fail to boot.

For this reason, PMIC-related I²C issues often appear as board startup failures rather than communication errors.


Layout Considerations

I²C is forgiving compared with many modern interfaces, but PCB design still matters.

Recommended practices include:

  • Keep traces reasonably short
  • Avoid routing near noisy switching regulators
  • Maintain solid ground references
  • Avoid excessive bus capacitance
  • Select appropriate pull-up values

Many engineers underestimate the impact of capacitive loading.

As the number of devices increases, bus capacitance also increases, which can slow signal transitions significantly.


Long Cable Challenges

I²C was originally intended for communication between ICs located on the same PCB.

Using it across long cables often creates problems.

Common symptoms include:

  • Intermittent communication
  • Random NACK responses
  • Bus lockups
  • Sensitivity to EMI

Industrial products sometimes place displays several meters away from the main controller.

In those situations, alternative solutions such as RS-485, CAN, or Ethernet may be more appropriate.


Comparing I²C and SPI

Many engineers must choose between I²C and SPI.

The decision depends heavily on the application.

CharacteristicI²CSPI
Wiring ComplexityLowMedium
SpeedModerateHigh
Device ExpansionEasyMore Complex
Pin CountLowHigher
Software ComplexityLowLow
Long-Term MaintainabilityExcellentExcellent

For sensors, PMICs, EEPROMs, and control interfaces, I²C is usually sufficient.

For displays, high-speed ADCs, and flash memory, SPI often provides better performance.


Reliability in Industrial Products

Industrial equipment frequently remains in service for ten years or more.

In these environments, reliability is more important than benchmark numbers.

I²C offers several advantages:

  • Mature ecosystem
  • Extensive vendor support
  • Predictable behavior
  • Low implementation cost
  • Easy diagnostics

These characteristics explain why manufacturers continue using it despite the availability of newer technologies.

Many successful industrial products today still rely on communication concepts developed decades ago.


Lessons Learned from Real Projects

One observation from real-world development is that I²C problems are often blamed on software first.

In reality, hardware is frequently responsible.

Examples include:

  • Wrong resistor values
  • Power instability
  • Missing reset signals
  • Incorrect voltage translation
  • Layout issues

Before modifying drivers, engineers should always verify electrical fundamentals.

An oscilloscope often provides answers much faster than source code analysis.


Future Outlook

Will I²C eventually disappear?

Probably not.

Its role may continue evolving, but the underlying need remains unchanged.

Embedded systems will always require a simple, inexpensive method for connecting low-bandwidth peripherals.

Even as processors become more powerful and display interfaces become faster, sensors, RTCs, PMICs, and configuration devices still need a communication channel.

For these applications, I²C remains an efficient solution.

The protocol's longevity is not an accident. It survives because it solves a practical engineering problem with minimal complexity.


Conclusion

I²C may not be the fastest interface in an embedded system, but it is often one of the most important.

Its ability to connect multiple devices using only two signal lines has made it a cornerstone of embedded hardware design for decades.

From industrial controllers and medical devices to smart home products and Linux SBC platforms, I²C continues to provide a reliable and cost-effective communication method.

For engineers working with embedded systems, understanding I²C is not merely about learning another protocol. It is about understanding one of the fundamental building blocks that quietly enables countless products to function every day.

profile
Embedded & Linux Develop

0개의 댓글