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 Specification I2C SMBus 2.0 SMBus 3.0 Bus Time-out Period Not required 35 ms 35 ms Maximum SCL Frequency 3.4 MHz 100 kHz 1 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 Specification I2C SMBus 2.0 SMBus 3.0 Voltage: VIH 0.7 * VDD 2.1V 1.35V VIL 0.3 * VDD 0.8V 0.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). 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-3. SMBus 3.0 Minimum Sink Current and Pull-Up Values Specification I2C SMBus 3.0 100 kHz 400 kHz 1 MHz Low Power High Power 100 kHz 400 kHz 1 MHz Minimum sink current: 3 mA 3 mA 20 mA 100 µA 4 mA 6 mA 20 mA Minimum pull-up value: VDD = 3.0V, VOL(MAX) = 0.4V 866 Ω 866 Ω 130 Ω 26 kΩ 650 Ω 433 Ω 130 Ω VDD = 5.0V, VOL(MAX) = 0.4V 1.53 kΩ 1.53 kΩ 230 Ω 46 kΩ 1.15 kΩ 766 Ω 230 Ω Table 1-4. SMBus 2.0 Minimum Sink Current and Pull-Up Values Specification I2C (100 kHz) SMBus 2.0 Low-Power High-Power Minimum sink current: 3 mA 100 µA 4 mA Minimum pull-up value: VDD = 3.0V, VOL(MAX) = 0.4V 866 Ω 26 kΩ 650 Ω VDD = 5.0V, VOL(MAX) = 0.4V 1.53 kΩ 46 kΩ 1.15 kΩ