What is SMBus?

SMBus, or System Management Bus, is two-wire interface often used for low-speed system management communication between devices on a motherboard. This bus was developed using the foundations of the I2C protocol, so SMBus and I2C hold many similarities and can even inter-operate on the same bus. In this article, we’ll cover more on the background of the SMBus, how SMBus operates, where it’s used, and ways to debug and develop SMBus systems.

Background of SMBus

SMBus was originally conceived by Intel in 1995 and was initially created as a communication protocol for Smart Batteries and other system and power management components. While developing hand-held and mobile devices, Intel determined there was a need to extend the functionality of their chipset and attach batteries to the system, while also limiting the number of the pins. Intel determined a low-speed serial bus such as I2C would meet this requirement. By utilizing I2C’s core operations, including device addressing, start and stop conditions, and collision detection and correction, and further modifying certain electrical characteristics to meet the battery requirements, SMBus was developed.

Eventually, ten promoter companies, including Intel and Duracell, formed the Smart Battery System Interface Forum (SBS-IF), later renamed to System Management Interface Forum (SMIF), to further maintain and oversee Smart Battery System (SBS) specifications and SMBus specifications. SMBus was also incorporated into the ACPI (Advanced Configuration and Power Interface) specifications as the bus to communicate with the Smart Battery System and other system components.

How SMBus Operates

SMBus is used as a means for system component chips, including simple and power-related chips, to communicate between each other within a system. More specifically, it allows for batteries to communicate with other system components, such as the CPU or other power-related components.

Because SMBus is based on the I2C protocol and uses I2C as a physical layer, it uses a two-wire interface and device addressing to communicate; each device has a unique address and may be addressed by any other device on the network. Unlike I2C, SMBus provides a control bus in its communication scheme instead of using individual control lines, helping to reduce pin count and system wires.

In SMBus communication, there are three types of devices used: a host, a master, and a slave device. The host device is a specialized master that acts as an interface to the system’s CPU, but it is not always required; some systems, such as a simple battery charging system, can be host-less. A master device initiates the communication, drives the clock, and terminates the transfer. A device may be designated to be only a master or it may be a master-slave, in which it can act either as a master or slave device. There also may be more than one master on an SMBus, but only one may master the bus at any given time. In the instance that two devices master the bus simultaneously, SMBus provides an arbitration mechanism that relies on the wired-AND connection of all SMBus device interfaces to the SMBus. Slave devices respond to its address and commands, and can send and receive data to and from a master device. A device can be designated exclusively as a slave, or it’s possible for the slave to act as a master in certain instances.

Like I2C, each slave on the SMBus is assigned a unique 7-bit slave address. A read/write bit is also appended to the slave address to define whether the device is reading or writing the message being sent over the bus. Devices are required to acknowledge their own address, so when a device recognizes its address, it will respond to the command. In the case of SMBus slave address conflicts, SMBus supports Address Resolution Protocol, or ARP. When the host detects two devices with the same slave address, the ARP process will dynamically assign a new unique address to the slaves. ARP allows the devices to be used immediately, without the need to restart the system.

SMBus uses two wires for communication: the SMBDAT wire, which transfers serial data, and the SMBCLK wire, which acts as the serial clock. The master drives the SMBCLK, which can range from 10 kHz to 100 kHz, but either line can drive the SMBDAT. Both of these lines are bidirectional. SMBus also provides the option to add an alert signal, called SMBALERT, which allows devices to request attention from the host.

Similar to I2C, the SMBus data packet includes a Start bit, 8 bits of data (containing a 7-bit address and Read/Write bit), an ACK/NACK bit, and a Stop bit. SMBus data transfer can use all or some of the various different SMBus functions or protocols when transferring messages. Some include Quick Command, Send Byte, Write Byte, Write Word, Read Byte, Read Word, Process Call, Block Read, Block Write, and Block Write-Block Read Process Call. SMBus also supports packet error checking, or PEC, to improve communication reliability. This is performed by adding a packet error code at the end of each message.

As for the electrical component, SMBus devices may be powered by the bus Vdd (1.8 to 5 volts, ±10%) or by another power source, such as VBUS, and can operate coincidingly provided they adhere to the SMBus electrical specifications for their class.

Where SMBus is Used

SMBus technology is used in Smart Battery Systems, or SBS, which is often implemented in portable devices such as laptop computers, mobile devices, and cameras for efficient battery management. Smart Battery Systems consist of a host, smart charger, and a smart battery and uses SMBus in order for these components to communicate with each other and the rest of the system.

laptop with charger plugged in

Smart Battery Systems are often beneficial to the battery life in portable devices. By using SBS, the battery can inform the charger about multiple aspects, including its capacity, ideal charging current, maximum charging time, and much more. Plus, because there is more precision with these variables, a Smart Battery doesn’t require recharging as frequently.

SMBus is also commonly used in motherboards of personal computers for system management mode and is used for communication devices, including switches, temperature sensors, and smart batteries.

Developing and Debugging SMBus and I2C Systems

When developing SMBus systems, using the right debugging and development tools is crucial to ensure the system is operating as expected. Total Phase offers multiple tools to debug and test SMBus communication between devices.

Because SMBus is based on the I2C protocol, Total Phase I2C tools, including the Aardvark I2C/SPI Host Adapter, the Promira Serial Platform, the Beagle I2C/SPI Protocol Analyzer, and the I2C/SPI Activity Board, are able to assist with the development of your SMBus product or system.

I2C Host Adapters

The Aardvark I2C/SPI Host Adapter and Promira Serial Platform are host adapters that support I2C master and slave configurations to test and develop I2C systems. Because SMBus is a derivate of I2C, these host adapters also support interfacing SMBus systems. Users can utilize these tools to emulate a master SMBus device or communicate with a SMBus slave device.

Promira Serial Platform

I2C Protocol Analyzers

By using the Beagle I2C/SPI Protocol Analyzer, users can passively tap onto the SMBus and display and decode the bus traffic occurring between the Aardvark I2C/SPI Host Adapter and device. SMBus decoding can be enabled for the whole bus or for individual device, and users can perform transaction-level and class-level parsing of SMBus data using this tool with the Data Center Software.

I2C Activity Boards

The I2C/SPI Activity Board is a helpful tool for testing I2C and I2C-based protocols. By providing known working slave devices, this tool allows users to differentiate between hardware and software bugs. With the I2C port expander, this board can be used to test and develop SMBus devices.

I2C/SPI Activity Board

For more information on how Total Phase tools can assist with your own I2C/SMBus project, please email us at sales@totalphase.com.