2
\$\begingroup\$

Can I communicate with a SMBus/PMBus device with I2C? I've been reading the specs and getting quite confused. It seems to me the only difference is the voltage levels and the need to have a restart condition. Am I correct or I'm missing something?

\$\endgroup\$
4
  • 1
    \$\begingroup\$ SMBUS is basically a superset of i2c. It has some extra features. If you don't need those extra features, then yes. \$\endgroup\$
    – Passerby
    Jan 13 '17 at 23:35
  • \$\begingroup\$ Do you mind clarifying those extra features for me? What exactly are they? \$\endgroup\$
    – flashburn
    Jan 13 '17 at 23:43
  • 1
    \$\begingroup\$ General: maximintegrated.com/en/app-notes/index.mvp/id/476 or ti.com/lit/an/sloa132/sloa132.pdf Specific: Look at your target device data sheet. \$\endgroup\$
    – Passerby
    Jan 13 '17 at 23:50
  • \$\begingroup\$ SMBus is not a superset of I2C, there are major differences in speed and bus length. SMBus was created from the I2C spec particularly to solve ACPI internal peripheral management problems in the PC space. \$\endgroup\$ Jan 14 '17 at 1:54
1
\$\begingroup\$

SMBUS is basically a superset of i2c. It has some extra features. If you don't need those extra features, then yes.

Some light reading on general differences:

https://www.maximintegrated.com/en/app-notes/index.mvp/id/476

http://www.ti.com/lit/an/sloa132/sloa132.pdf

Specifics on what the device does and how it works can be seen in the data sheet. It may not directly state what features are normal i2c commands, but as long as you understand how i2c works, you can tell them apart.

\$\endgroup\$
1
  • \$\begingroup\$ SMBUS is a restrictive superset of I²C. It has some features on top of I²C. However, when a host/device claims it is SMBUS compatible, it may or may not be possible to send arbitrary I²C data. You may be limited to SMBUS conforming I²C data. \$\endgroup\$
    – Janka
    Jan 14 '17 at 0:09
2
\$\begingroup\$

SMBus is a definite subset of the I2C standards.
See http://www.smbus.org/specs/index.html
For I2C specs (maintained by NXP) see this: http://cache.nxp.com/documents/user_manual/UM10204.pdf

The major differences for SMBus:

  1. SMBus only uses 7 bit addressing (this is defined in concert with the ACPI spec) although SMBus does define an extra register for 10 bit address it is not currently used on any ACPI PC's I know of.

  2. For ACPI (PC) usage SMBus use a minimum 10k bps and a maximum 100k bps data rate. There is a new standard (not yet ratified that increases the speed, but this is not yet introduced as part of ACPI). I2C specifies the bus clock to DC (stopped) and can run much faster, with the new standard up to 3.4 Mbps.

  3. SMBus supports a low power bus pullup specification of 350 uA and a high power mode of 3 mA, I2C species a 4 mA bus pulldown current capability. This results in much shorter line length and power capability for SMBus.

  4. SMBus slaves must implement an auto reset timeout of 35 mS. You don't find this on I2C chips so have to monitor timeouts in the whatever drives the master. This impacts clock extend times, since if the clock is held for more than 35 mS the SMBus will reset, whereas I2C can technically clock extend indefinitely (not a good thing of course).

To get better coverage of the differences read Appendix B in the SMBus spec and section 4 of the NXP U10204 spec.

You can mostly use I2C peripherals on an SMBus, but the reverse is not true. SMBus peripheral implementations may fail because of 'clock extend' problems (causing resets) or at low speeds < 10k bps.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.