ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
pmbus.h File Reference

PMBus 1.3 power-management command set over SMBus. More...

#include "protocore_config.h"

Go to the source code of this file.

Detailed Description

PMBus 1.3 power-management command set over SMBus.

PMBus is SMBus with the command codes fixed and the numbers given an encoding, so a digital point-of-load converter, a hot-swap controller or a power supply reports its input voltage, output current, temperature and faults through one set of commands instead of a register map per part.

Three encodings carry the numbers, and all three are decoded here rather than in a driver:

  • LINEAR11 for most telemetry: one word holding a 5-bit signed exponent in bits 15:11 and an 11-bit signed mantissa in bits 10:0. The value is mantissa * 2^exponent.
  • LINEAR16 for output voltage: the word is a 16-bit unsigned mantissa and the exponent comes from the part's VOUT_MODE register, so it is read once and applied to every reading.
  • DIRECT where a part uses it: the value is (word / 10^R - b) / m, with m, b and R coming from the part's datasheet.

Values are returned in micro-units (microvolts, microamps, microwatts) and temperatures in milli-degrees Celsius, which is what the other sensor drivers here report in. No float is involved: the exponent is a shift.

The encodings are pure and host-tested. The commands ride the SMBus shapes, so a build with no bus seam refuses them.

Author
Douglas Quigg (dstroy0)
Date
2026

Definition in file pmbus.h.