1 A Brief Review of the I2C and SMBus Specifications

The I2C specification was developed by Phillips Semiconductors (now NXP Semiconductors) to communicate between devices connected to a two-wire bus. Phillips recognized that there were many similarities between consumer electronics, industrial electronics, and telecommunications designs.

Since the various designs often contained similar components, such as Analog-to-Digital Converters (ADCs), LCDs, or EEPROMs, Phillips determined that they could simplify system design and maximize hardware efficiency by creating a communication bus that could be used to transfer data between any device connected to the bus. This allowed designers to use devices from multiple manufacturers, or use one device in several designs. The specification also solved interfacing problems by defining a standard protocol that is now held as an industry standard; meaning, any I2C device could communicate with any other I2C device without having to change the hardware or firmware of either device.

The I2C Specification defines the bus as a two-wire, bidirectional communications protocol. One line carries the Serial Data (SDA), and one line carries the Serial Clock (SCL). Each I2C device has its own unique address: either 7-bits or 10-bits in length. An I2C device may operate as a bus host, bus client, or both, depending on the device and application. The I2C Specification defines the data transfer rates as follows:

  • Standard mode – transfer rates up to 100 Kbits/s
  • Fast mode – transfer rates up to 400 Kbits/s
  • Fast mode Plus – transfer rates up to 1 Mbit/s
  • High-Speed mode – transfer rates up to 3.4 Mbits/s

The SMBus Specification is a derivative of the I2C Specification. Both buses are basically compatible with each other, but it is important to understand the subtle differences.

The important differences between bus configurations are:

  • Bus Time-out - A bus time-out event occurs when the SCL line is held low beyond a specified time limit. The I2C Specification does not specify a time-out period, meaning that a Client device can hold (stretch) the clock line low indefinitely. The SMBus Specification defines a time-out period of 35 ms, which means that if the SCL line is held low for longer than 35 ms, a bus time-out event will occur. In this case, the device hardware must reset its serial interface.
  • Bus Clock Speed - The SMBus 2.0 and 3.0 Specifications requires a minimum SCL speed of 10 kHz, allowing the clock line to be used for bus time-out measurements. The SMBus 2.0 Specification defines a maximum SCL speed of 100 kHz, while the SMBus 3.0 Specification defines a maximum speed of 1 MHz. The I2C Specification does not define a minimum SCL speed, although communication will not occur without a clock signal. The I2C Specification defines a maximum SCL speed of 3.4 MHz.
    Table 1-1. Bus Time-out and SCL Frequency Specifications
    SpecificationI2CSMBus 2.0SMBus 3.0
    Bus Time-out PeriodNot required35 ms35 ms
    Maximum SCL Frequency3.4 MHz100 kHz1 MHz
  • Input Voltage levels – The SMBus 2.0/3.0 Specification defines the input voltage levels as fixed values, while the I2C Specification's input voltage levels are dependent on VDD. The I2C Specification defines the input high voltage level as 70% of VDD, or 0.7*VDD, and the input low voltage level as 30% of VDD, or 0.3*VDD. The SMBus 2.0 Specification defines the input high voltage level as a fixed 2.1V, while the SMBus 3.0 Specification defines the input high voltage level as a fixed 1.35V. In both SMBus 2.0 and 3.0, the input low voltage level is defined as a fixed 0.8V.
    Table 1-2. Input Voltage Level Specifications
    SpecificationI2CSMBus 2.0SMBus 3.0
    Voltage:
    VIH0.7 * VDD2.1V1.35V
    VIL0.3 * VDD0.8V0.8V
  • Pull-up resistor values and current levels – Minimum pull-up resistor (RPMIN) values are determined by the minimum sink current allowable on the bus (IOL), and can be calculated using Equation 1-1. The I2C Specification defines the minimum sink current based on the three SCL speed modes: 100 kHz, 400 kHz and 1 MHz. The SMBus 3.0 Specification also uses the three SCL speed modes, but further defines IOL based on the application’s power usage. SMBus 3.0 Low-Power specification defines IOL based only on an SCL speed of 100 kHz, while the SMBus High-Power specification defines IOL for each of the three SCL speed modes (see table below).
    Table 1-3. SMBus 3.0 Minimum Sink Current and Pull-Up Values
    SpecificationI2CSMBus 3.0
    100 kHz400 kHz1 MHzLow PowerHigh Power
    100 kHz400 kHz1 MHz
    Minimum sink current:3 mA3 mA20 mA100 µA4 mA6 mA20 mA
    Minimum pull-up value:
    VDD = 3.0V, VOL(MAX) = 0.4V866 Ω866 Ω130 Ω26 kΩ650 Ω433 Ω130 Ω
    VDD = 5.0V, VOL(MAX) = 0.4V1.53 kΩ1.53 kΩ230 Ω46 kΩ1.15 kΩ766 Ω230 Ω
    The SMBus 2.0 IOL specification is based only on the 100 kHz SCL speed mode. The SMBus 2.0 Low-Power specification defines IOL as 100 µA, while the SMBus 2.0 High-Power specification defines IOL as 4 mA. The table below compares the SMBus 2.0 Specification values to the Standard Mode (100 kHz) I2C Specification values.
    Table 1-4. SMBus 2.0 Minimum Sink Current and Pull-Up Values
    SpecificationI2C (100 kHz)SMBus 2.0
    Low-PowerHigh-Power
    Minimum sink current:3 mA100 µA4 mA
    Minimum pull-up value:
    VDD = 3.0V, VOL(MAX) = 0.4V866 Ω26 kΩ650 Ω
    VDD = 5.0V, VOL(MAX) = 0.4V1.53 kΩ46 kΩ1.15 kΩ
Equation 1-1. Minimum Pull-Up Resistor Calculation
RP(MIN)=VDDVOL(MAX)IOLwhere:RP(min)=minimumpullupresistorvalueVDD  = supply voltageVOL(max)  =maximumoutputlowvoltageIOL  =minimumsinkcurrent