I²C
I2C (Inter-Integrated Circuit; pronounced as “eye-squared-C” or “eye-two-C”), alternatively known as I2C or IIC, is a synchronous, multi-master/multi-slave (controller/target), single-ended, serial communication bus invented in 1982 by Philips Semiconductors. It is widely used for attaching lower-speed peripheral ICs to processors and microcontrollers in short-distance, intra-board communication.
Type | Serial communication bus | ||
---|---|---|---|
Production history | |||
Designer | NXP Semiconductors (then Philips Semiconductors) | ||
Designed | 1982 | ||
Data | |||
Data signal | Open-collector or open-drain | ||
Width | 1-bit (SDA) with separate clock (SCL) | ||
Bitrate | 0.1, 0.4, 1.0, 3.4 or 5.0 Mbit/s depending on mode | ||
Protocol | Serial, half-duplex |
Several competitors, such as Siemens, NEC, Texas Instruments, STMicroelectronics, Motorola, Nordic Semiconductor and Intersil, have introduced compatible I2C products to the market since the mid-1990s.
I2C bus can be found in a wide range of electronics applications where simplicity and low manufacturing cost are more important than speed. PC components and systems which involve I2C are serial presence detect (SPD) EEPROMs on dual in-line memory modules (DIMMs), Extended Display Identification Data (EDID) for monitors via VGA, DVI and HDMI connectors, accessing NVRAM chips, etc. Mostly known I2C applications on microcontroller are reading hardware monitors, sensors, real-time clocks, controlling actuators, accessing low-speed DACs and ADCs, controlling small (e.g. feature phone) LCD or OLED displays, changing backlight, contrast, hue, color balance settings etc in monitors (via Display Data Channel), changing sound volume in intelligent speakers, etc.
A particular strength of I2C is the capability of a microcontroller to control a network of device chips with just two general-purpose I/O pins and software. Many other bus technologies used in similar applications, such as Serial Peripheral Interface Bus (SPI), require more pins and signals to connect multiple devices.
System Management Bus (SMBus), defined by Intel in 1995, is a subset of I2C, defining a stricter usage. One purpose of SMBus is to promote robustness and interoperability. Accordingly, modern I2C systems incorporate some policies and rules from SMBus, sometimes supporting both I2C and SMBus, requiring only minimal reconfiguration either by commanding or output pin use. System management for PC systems uses SMBus whose pins are allocated in both conventional PCI and PCI Express connectors.