What is I2C? The full technical description overwhelms you with detail. This section attempts to gloss over the details and provide you with an brief programmer’s overview.
There are many other sources of information available on the Internet [4] and elsewhere. The following does not try to replace these sources.
I2C is a bus, a means of communication. Just as memory sitting on the processor bus talks to your processor by exchanging control and data signals, so I2C bus carries control and data signals between cooperating pieces of hardware. The main difference: I2C is a serial bus not parallel and therefore much slower! I2C bus typically clocks at a rate of 100 kiloHertz, very slow in comparison with contemporary microprocessors (2005).
Figure 1.1 depicts I2CLIB and its deployment in a typical computer system. Diagram shows I2CLIB running on a PC, any personal or embedded computer with serial port connection to an I2C host adaptor. The iPort/AITM appears in the diagram as an example, as does its RS-232 host computer interface.
I2CLIB primary goals include expressing I2C concepts in ordinary software engineering terminology. In object-oriented programming terms therefore, I2C bus is a logical interface object. It acts as an interface in two ways. First, interfacing between hardware is its one and only function. Second, the abstract protocols and mechanisms themselves represent a software interface. I2C represents a hardware and software interface. Actual implementation of the Interface in software and hardware varies from machine to machine. Figure 1.2 illustrates the i2c::Bus concept using Unified Modelling Language [3].