Design Article
Design calculations for robust I2C communications
Chris Parris and Jonathan Dillon, Microchip Technology Inc.
4/23/2012 3:44 PM EDT
For many systems that require reliable non-volatile storage, EEPROM is the memory technology of choice. EEPROM features a robust architecture, with multiple suppliers and many years of refinement. EEPROM devices are available in a variety of industry-standard serial buses, including I2C, SPI, Microwire, and the UNI/O bus. Due to its widespread hardware support in microcontrollers and other chipsets, and the fact that its easy signaling enables efficient implementation with minimal silicon, the I2C bus comprises approximately 70% of the non-volatile memory market. The I2C bus topology relies on correctly sized pull-up resistors for reliable, robust communications, however. Selecting the wrong resistor values can not only result in wasted power, but can also lead to erroneous bus conditions and transmission errors caused by noise or changes in temperature, operating voltages, and by manufacturing variations between devices.
I2C is a two-wire synchronous bus with the serial clock line (SCL) line used as a clock, produced by the bus master. The serial data line (SDA) is used for bi-directional data transfer. The data line is modified while the clock is in specific states, to indicate the start and stop of transmissions and avoid additional lines. The I2C bus is built around open-collector outputs, where a device can pull a line low through a transistor to ground (see figure 1). This allows easy arbitration over control of the bus, enabling the implementation of bi-directional communications on a single data line and multi-master support. As shown in Figure 1, each line has an external resistor to the supply voltage Vdd that pulls the line high when released or idle.
The three factors to consider when determining the pull-up resistor values (Rp) are:
Supply voltage (Vdd)
First, let's take a closer look at the effect of the supply voltage Vdd. The I2C specification defines a voltage below VIL, or 30% of the supply voltage, as a logical low and, likewise, above VIH, or 70% of the supply voltage, as a logical high (see figure 2). A voltage between these two levels leads to an undefined logic level. In reality, the pin will read either logical high or low in this range, but it may vary among devices with temperatures, voltages, noise sources, and other environmental factors influencing the logic levels.
The supply voltage limits the minimum Rp value for which the bus can be pulled low. A strong pull-up will prevent a device from being able to bring the line sufficiently low, to ensure a logical low is detected. This is caused by the potential divider formed between the pull-up resistor and the on-resistance of the transistor to ground (see figure 3). The on resistance of the transistor is not typically specified. Instead, a maximum sink current (IOL) is given for which the voltage drop across the transistor is below the output logical low-voltage level (VOL).
If we apply Ohm's law we obtain the minimum pull-up resistance, allowing the bus to be pulled low:
For commercially-available I2C EEPROM devices, the typical VOL specification is a maximum of 0.4 V at an IOL of 3 mA. For the case in which multiple devices are connected on the same bus, the minimum Rp is determined by the device with the lowest sink current.
I2C is a two-wire synchronous bus with the serial clock line (SCL) line used as a clock, produced by the bus master. The serial data line (SDA) is used for bi-directional data transfer. The data line is modified while the clock is in specific states, to indicate the start and stop of transmissions and avoid additional lines. The I2C bus is built around open-collector outputs, where a device can pull a line low through a transistor to ground (see figure 1). This allows easy arbitration over control of the bus, enabling the implementation of bi-directional communications on a single data line and multi-master support. As shown in Figure 1, each line has an external resistor to the supply voltage Vdd that pulls the line high when released or idle.
Figure 1: I2C bus topology
The three factors to consider when determining the pull-up resistor values (Rp) are:
- Supply voltage (Vdd)
- Total bus capacitance (CBUS)
- Total high-level input current (IIH)
- Supply voltage (Vdd) of 5 V
- Clock frequency of 400 kHz
- Bus capacitance of 100 pF
Supply voltage (Vdd)
First, let's take a closer look at the effect of the supply voltage Vdd. The I2C specification defines a voltage below VIL, or 30% of the supply voltage, as a logical low and, likewise, above VIH, or 70% of the supply voltage, as a logical high (see figure 2). A voltage between these two levels leads to an undefined logic level. In reality, the pin will read either logical high or low in this range, but it may vary among devices with temperatures, voltages, noise sources, and other environmental factors influencing the logic levels.
Figure 2: Specified voltage levels for logical high and low
The supply voltage limits the minimum Rp value for which the bus can be pulled low. A strong pull-up will prevent a device from being able to bring the line sufficiently low, to ensure a logical low is detected. This is caused by the potential divider formed between the pull-up resistor and the on-resistance of the transistor to ground (see figure 3). The on resistance of the transistor is not typically specified. Instead, a maximum sink current (IOL) is given for which the voltage drop across the transistor is below the output logical low-voltage level (VOL).
Figure 3: Open-collector topology and equivalent circuit
If we apply Ohm's law we obtain the minimum pull-up resistance, allowing the bus to be pulled low:
Navigate to related information


gayatrikumar_1
4/25/2012 3:04 PM EDT
This article has coverd a great detail...
Just a little addition, The pullup resistor value can not be reduced after a lmit which is decided by one of the two factors. 1) The least value of maximum allowed power dissipation among all the ICs on Bus which again depends on thermal limitations of the IC.
2) Least value of Maximum allowed current through the I2C terminals among all the ICs on bus.
Sign in to Reply