I2C Studio SMBUS Example

I2C Studio SMBUS Example

The System Management Bus (SMBus) is more or less a derivative of the I2C bus. The standard has been developed by Intel and is now maintained by the SBS Forum.The main application of the SMBus is to monitor critical parameters on PC motherboards and in embedded systems. For example there are a lot of supply voltage monitor ICs, temperature monitor ICs, and fan monitor/control ICs with an SMBus interface available.

There are some interesting differences between the I2C bus and the SMBus:

  • Packet Error Checking (PEC)
  • Address Resolution Protocol (ARP)
  • Timeout for transfers
  • Standardised transfer types
  • ALERT line
  • Power down/up
  • SUSPEND line

Tracii XL and Tracii XL 2.0 offer outstanding support for the SMBus.

Here is our Smart Battery Application Note.

Master

The I2C C++ and the I2C .NET APIs of the I2C Framework contain several classes to support the SMBus master mode:

  • Calculation and checking of the PEC (CRC-8)
  • High-level interface to generate the standardised transfer types
  • Supports “block read” and similiar non-I2C-compatible transfer types (not supported by most other similar products claiming to be SMBus-compatible)
  • 35 ms timeout support

Using the SMBus master API it is possible to generate even complex SMBus messages with very few lines of code.

Tracer

I2C Studio offers several interesting features to analyse an SMBus with Tracii XL/Tracii XL 2.0:

  • Tracing of the ALERT and the SUSPEND lines
  • Tracing of power down and power up events
  • Checking of the PEC (CRC-8)
  • Trace plug-ins for common SMBus ICs (high-level analysing)

Address Resolution Protocol

SMBus Advanced ARP

SMBus Advanced ARP

On an I2C bus a fix slave address is assigned to each I2C slave during the development of the PCB. Typically the I2C address of an I2C slave gets selected by pulling some external pins to high or low level.

SMBus devices support fix addresses, too. Additionally, the SMBus specification defines a different approach, where the slave addresses are assigned dynamically during the runtime. This process is called SMBus ARP. The SMBus master is responsible for assigning the addresses.

The SMBus ARP is supported by the I2C Framework and I2C Studio.