I2C getting started.
For a full description of the I2C basics and essentials, please consult the official Philips documentation "The I2C-bus and how to use it", Philips ordercode "9398 393 40011". Or visit one of their websites but first try: http://www.semiconductors.philips.com.
The signal lines.
Communication is carried out via three wires: SDA, SCL and GND. That's why it is mostly referred to as "the
two wire bus". Which of course is ridiculous, since you always need at least one reference line. The only true
two-wire bus is Dallas Semiconductor's "one-wire bus"! It seems essential for manufacturers to minimize the
leadcount needed to communicate.
The two signals SCL (Serial CLock) and SDA (Serial DAta) are open collector in/outputs, equipped with
(normally) a 4k7 pull-up resistor.
At rest, both SDA and SCL are HIGH (positive supply voltage, logic "1"). In normal conditions, SDA never,
ever, changes states when SCL is HIGH. SDA toggles, if necessary, when SCL is LOW.

Start condition (S).
To call the I2C bus to attention, a so called START- or S-condition is generated. This is done by keeping SCL
high and flipping SDA to a LOW:
An active I2C bus.
At this moment, the bus is active and the IC's are ready to accept data. Remember that the bus is specified at
100 kHz maximum, so keep at least 5 microseconds between two consequtive signal edges.
Now the I2C transactions can begin. First, an address is sent, followed by additional parameters. The address
is built up as follows:
| value of bit | 1 | 0 | 0 | 1 | 1 | 0 | 1 | R/w |
|---|---|---|---|---|---|---|---|---|
| position of bit in I2C address | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Stop condition (P).
At the end of transmission, a socalled STOP- (or P-) condition is issued. This in fact is a reverse S
condition:
SDA is made HIGH, when SCL is in the supposedly stable state.
An example: communicating with the PCF 8571 SRAM chip.
The pin numbers apply to a special connector I used to use a lot, many many moons ago. It was a DB25-to-RJ-11 converter. In the table below, I will explain how the pins were connected. The bullet numbers refer to the numbers of the RJ-11 phoneline connector:
An example: communicating with the PCF 8571 SRAM chip.
For writing data to a PCF 8571 SRAM chip, hardware connected to address 5 (101), the sequence is as follows:
Manual control of the bus with the 'I2C monitor'
In general, using the extremely lowlevel 0, 1, C and D commands, you can control the bus as follows in the next example:
| Reading from the bus | Writing to the bus |
|---|---|
|
8 x TAB keypress and read back
the bit in the BIT-field Press "0" to send an ACK |
Use "1" and "0" keys to enter
a byte of data Enable an ACK by pressing the "1" key. |
Alternative ways to control the bus:
Rounding up.
As mentioned before, this is NOT a full description of the I2C bus. It is only meant as either a fresh-up or an encouragement to get the correct application notes and databooks from either Philips, Dallas, Maxim or Microchip.
Page created June 2003,
Page equipped with FroogleBuster technology