AllExperts > Encyclopedia 
Search      
Find out about volunteering to AllExperts

I²C: Encyclopedia BETA


Free Encyclopedia
 Home · Index · Browse A-Z  · Questions and Answers ·
Encyclopedia

Browse A-Z
ABCDEFGHIJKLMNOPQRSTUVWXYZNum


License
Disclaimer

 
 
 
 
Free Online Courses
12 Weeks to Weight Loss
Take Charge of Stress
Learn How to Bake
Budgeting 101
Deeper Faith
DIY Fashion Makeover

       MORE E-COURSES
 
   

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  Misc

I²C

I²C is a serial computer bus invented by Philips that is used to attach low-speed peripherals to a motherboard, embedded system, or cellphone. The name is an abbreviation for Inter-Integrated Circuit and is pronounced I-squared-C.

Design

I²C uses only two bidirectional open-collector lines, serial data (SDA) and serial clock (SCL), pulled up with resistors. The maximum voltage is +5 V, although +3.3 V systems are common and other voltages are permitted.

The I²C reference design has a 7-bit address space with 16 reserved addresses, so a maximum of 112 nodes can communicate on the same bus. The most common I²C bus modes are the 100 kbit/s standard mode and the 10 kbit/s low-speed mode, but clock frequencies down to zero are also allowed. Recent revisions of I²C can host more nodes and run faster (400 kbit/s Fast mode and 3.4 Mbit/s High Speed mode) .

Revisions

The original I²C system was created in the early 1980s as a simple internal bus system for building control electronics with various Philips chips.

In 1992 the first standardized version was released, which added a new fast mode at 400 kbit/s and a 10-bit addressing mode to increase capacity to 1008 nodes. Version 2.0 from 1998 added high-speed mode at 3.4 Mbit/s with reduced voltage and current requirements that saved power. Version 2.1 from 2001 is a minor cleanup of version 2.0 and is the latest standard.

Applications

I²C is appropriate for peripherals where simplicity and low manufacturing cost are more important than speed. Common applications of the I²C bus are:
* Accessing NVRAM chips that keep user settings.
* Accessing low speed DACs.
* Accessing low speed ADCs.
* Changing contrast, hue, and color balance settings in monitors.
* Changing sound volume in intelligent speakers.
* Controlling LED displays, like in a cellphone.
* Reading hardware monitors and diagnostic sensors, like a CPU thermostat and fan speed.
* Reading real time clocks.
* Turning on and turning off the power supply of system components.

A particular strength of I²C is that a microcontroller can control a network of device chips with just two general-purpose I/O pins and software.

Peripherals can also be added to or removed from the I²C bus while the system is running, which makes it ideal for applications that require hot swappable components.

Buses like I²C became popular when computer engineers realized that much of the manufacturing cost of an integrated circuit design results from its package size and pin count. A smaller package also usually weighs less and consumes less power, which is especially important in cellphones and portable computing.

Operating System Support

In Linux, I²C is handled with a specific kernel module for the specific device. Details on how to write I²C client can be found in the kernel-related documentation and in the /usr/include/linux/i2c.h header file. OpenBSD has recently added an I²C framework, with support for a number of common master controllers and sensors.

In Sinclair QDOS and Minerva (QDOS reimplementation) QL operating systems I²C is supported via a set of extensions provided by TF Services.

In AmigaOS the shared library i2c.library of Wilhelm Noeker allows I²C access.

eCos supports I²C for several hardware architectures.

Derivative Technologies

I²C is the basis for the ACCESS.bus, the VESA Display Data Channel (DDC) interface, the System Management Bus (SMBus), and the Intelligent Platform Management Bus (IPMB, one of the protocols of IPMI). These implementations have differences in voltage and clock frequency ranges, and may have interrupt lines.

See also

* I²S
* 1-Wire Bus
* Serial Peripheral Interface Bus
* SMBus

External links

* Philips I2C specifications
* Detailed introduction, Primer
* Introduction to I2C
* I2C Bus / Access Bus
* Using the I2C Bus with Linux
* OpenBSD iic(4) manual page
* Linux package lm-sensors support I2C bus among others.
* massmind i2c page Source code, samples and technical information for using i2c with PC, PIC and SX microcontrollers.
* I2C bus
* Serial buses information page
* I2C Bus Technical Overview and Frequently Asked Questions
* The I2C Faq Version 2.0
* The Bus Buffer Resource. For 2-wire buses such as I2C, SMBus, PMBus, IPMB & IPMI



  Rate this Article
   Was this article helpful?
Not at allDefinitely              
   12345  

Email this page
About Us | Advertise on This Site | User Agreement | Privacy Policy | Kids' Privacy Policy | Help
About and About.com are registered trademarks of About, Inc. The About logo is a trademark of About, Inc. All rights reserved.
This is the "GNU Free Documentation License" reference article from the English Wikipedia. All text is available under the terms of the GNU Free Documentation License. See also our Disclaimer.