SMBus, PMBus, and I2C protocols are communication protocols used for inter-device communication in embedded systems. While these protocols are similar in many ways, including their physical layer, there are also multiple differences in how they operate and where they are used.
Because the SMBus standard is based on the I2C protocol, and PMBus is an extension of SMBus, you might be wondering more about the relationship between the three. In this article, we’ll provide a high-level overview of SMBus, PMBus, and I2C, and how they relate and differ.
The I2C protocol is a commonly used communication protocol in embedded systems. I2C communication requires two wires, including the Serial Data Line (SDA) and Serial Clock Line (SCL). This configuration reduces the cost and complexity of the circuit as additional devices are added to the system. Because only two wires are used, I2C incorporates device addressing and acknowledgments that allow the master and slave devices to effectively communicate. Each slave device is assigned a 7-bit address. By using this address, the master device can select which device to talk and can determine whether or not the slave device received the message.
Due to I2C’s benefits, including its simplistic two-wire interface and relatively low cost to implement, multiple other communication protocols are built using its foundation. For instance, SMBus, or System Management Bus, is a derivative of I2C and includes multiple similarities.
SMBus is a two-wire interface often used for low-speed communication between devices within a system, including Smart Batteries and other system and power management components. SMBus was created as a means for expanding the functionality of chipsets and in-system batteries within hand-held and portable systems while also reducing the number of pins required for effective communication.
SMBus is based on the I2C protocol. SMBus utilizes the physical layer of I2C and uses its core operations, including the two-wire interface, device addressing, collision detection and correction, and start and stop conditions. However, SMBus modifies timing, protocol, and certain electrical characteristics in order to satisfy specific battery requirements.
SMBus is a favorable communication protocol for system and power management components because of how data is sent over the bus and its need for a limited number of wires and pins. SMBus can often be used for PC motherboards, and Smart Battery Systems, or SBS, which is often implemented in portable devices such as laptop computers, mobile devices, and cameras. For SMBus communication, a host, master, and slave device are used. The host, which can sometimes be excluded in certain instances, is a specialized master that acts as an interface to the system’s CPU. Similar to I2C, the master initiates and terminates communication over the SMBDAT data wire, and also drives the clock over the SMBCLK clock wire. SMBus also includes an optional interrupt wire, SMBALERT#, so slave devices can initiate communication to the host. Each device also has a 7-bit unique address used to acknowledge commands from the master device.
Specific to SMBus, this protocol has functions or protocols used to transfer messages and more information on these can be found here. Additionally, unlike I2C, SMBus supports packet error checking, or PEC, to improve communication reliability and does this by adding a packet error code at the end of each message. SMBus can reach a maximum clock speed of 100 kHz and has built-in timeouts at 35 ms.
In terms on compatibility, I2C and SMBus can generally be implemented within the same system, but there are some differences in terms of speed and electrical characteristics that are important to note, as summarized here.
While SMBus is built on I2C, PMBus is another communication protocol often used for inter-device communication, and is based on SMBus. So, what is PMBus and how does it differ from SMBus?
PMBus is an extension of SMBus, and is a low-cost protocol used for communication between power-management devices. PMBus was created as power supply and semiconductor companies sought to redefine power management within embedded systems, including creating a more efficient way to communicate with their power systems. Additionally, they wanted a way to configure the power supply for a specific task and monitor the status/overall health of the power system. Thus, PMBus was created and defines a set of commands and data structures required by power control and management components.
Similar to SMBus, PMBus communicates bidirectionally over a two-wire interface, and includes a data signal, clock signal, and an optional alert signal. In addition, PMBus also specifies a control line for turning the slave device on and off. PMBus dictates a maximum bus speed of 400 kHz and has built-in timeouts important for critical systems.
A PMBus system includes a system host/bus master and slave device, or PMBus device. A host device can be a PC or microcontroller and a PMBus device can include an integrated circuit, power converter, or power supply. Like SMBus, a system can have multiple masters, as well as multiple slaves. A master directs communication to a single slave at a time by using a unique 7-bit address, similar to the slave addressing scheme in I2C and SMBus. For a more robust communication, PMBus also supports alert-based monitoring and PEC (packet error checking).
While PMBus uses some of the SMBus protocols, it adds multiple new functions. PMBus features support for configuration and control, monitoring, and fault management functions. The PMBus command layer provides a set of 256 commands that the host microcontroller can use to instruct slave PMBus devices.
Total Phase offers numerous tools for debugging and developing I2C-based systems, including the Aardvark I2C/SPI Host Adapter, the Promira Serial Platform, and the Beagle I2C/SPI Protocol Analyzer.
The Aardvark I2C/SPI Host Adapter and Promira Serial Platform are both host adapter tools that allow users to emulate both I2C master and slave devices to help test their I2C developments in a variety of ways. Additionally, because SMBus and PMBus are based on the I2C protocol, these tools are also compatible with SMBus and PMBus protocols.
This means users can use these tools to interface with their SMBus and PMBus systems, including creating and reading messages and validating system responses. For SMBus systems, users can emulate a master SMBus device or communicate with a SMBus slave device. SMBus commands can also be sent over the bus and validated. For PMBus systems, users can also emulate a master or slave PMBus device, but PMBus commands will need to be implemented by the user.
Additionally, users can parse and decode SMBus data using the Beagle I2C/SPI Protocol Analyzer. 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. While PMBus decoding is not currently supported by this analyzer, users can monitor the I2C portion of PMBus by connecting the lines directly to the Beagle I2C/SPI analyzer and parse/decode them using the Beagle Software API. The other two lines CONTROL, SMBALERT# cannot be monitored.
For more information on how our I2C host adapters and protocol analyzers can help debug and develop your own I2C, SMBus, or PMBus system or device, please contact us at sales@totalphase.com.