AN168 - Implementing Fast Telemetry with Power System Management Controllers

AN168 - Implementing Fast Telemetry with Power System Management Controllers


For More Information, Download the Complete Application Note "AN168 - Implementing Fast Telemetry with Power System Management Controllers"


The second-generation Power System Management (PSM) Controllers, such as the LTC®3887, introduce new features for fast telemetry1. Fast telemetry allows firmware to focus on a single measurement, or a fixed set of common voltage/ current measurements to improve telemetry bandwidth up to 16 times. Two new commands allow control of the telemetry multiplexer (MFR_ADC_CONTROL) and time alignment (MFR_ADC_TELEMETRY_STATUS). The multiplexer can be set to a single or smaller set of measurements, and the status enables polling for a “measurement complete”. When combined, not only is the throughput improved, but there are no duplicate measurements: all obtained values are unique ADC measurements.


The LTC38XX family prior to the LTC3887 (LTC3880 and LTC3883) uses a multiplexer and a round-robin approach to measurements. Measurements are always made in the same order, with a total loop time of approximately 100ms. From a firmware perspective, any given measurement is updated once each 100ms, and there is no way to know how “fresh” the current returned value is. Any given measurement could be up to 100ms old, and sampling faster than every 100ms just returns the same data.


The LTC3887 and newer devices upgraded the round‑robin approach with behavioral choices. The MFR_ADC_CONTROL command selects 1 of 10 telemetry modes, or selections as shown in Table 1.

 Table 1. Telemetry Modes

0x0E – 0xFF Reserved
0x0D  ADC Short Round-Robin
0x0C  Channel 1 External Temperature
0x0B  Reserved
0x0A Channel 1 IOUT
0x09 Channel 1 VOUT
0x08 Channel 0 External Temperature
0x07 Reserved
0x06 Channel 0 IOUT
0x05 Channel 0 VOUT
0x04 Internal IC Temperature
0x03 Reserved
0x02  Reserved
0x01 VIN
0x00  Standard ADC Round-Robin Telemetry

Value 0x00 behaves exactly the same as first-generation devices. The value 0x0D enables a round-robin function that includes four measurements (VOUT0, IOUT0, VOUT1, IOUT1). The remaining values enable a single measurement.

The MFR_ADC_CONTROL is not stored in EEPROM, so firmware must send the selection to the device to enable a mode other than the default of round-robin (0x00). It is recommended that controllers run in round-robin ADC mode most of the time to assure that ADC-enabled faults such as temperature and VIN_OV are operational.

The second-generation devices also add measurement status capability that enables polling for a change in measurement value. Table 2 shows that there are status bits for the four critical measurements using command MFR_ADC_TELEMETRY_STATUS. Each bit transitions from 0 to 1 immediately after the corresponding measurement is performed. Writing a one to a bit clears it.

 Table 2. Telemetry Status

7 Reserved Returns 0
6 Reserved Returns 0
5 Reserved Returns 0
4 Reserved Returns 0
3 Channel 1 IOUT Readback (IOUT1)
2 Channel 1 VOUT Readback (VOUT1)
3 Channel 0 IOUT Readback (IOUT0)

Channel 0 VOUT Readback (VOUT0)


When switching from 0x0D, short telemetry loop, to another mode, the firmware must first switch to 0x00, round-robin, for at least 120ms, before switching to the new mode, to ensure well behaved status. Switching between all other modes does not require switching to 0x00 first.


First-generation devices rely on the multiplexer and ADC for three non-telemetry functions: temperature supervision, VIN overvoltage supervision and voltage servo.

Temperature changes slowly in a system: typical latency in a PSM controller ADC is sufficiently small that temperature supervision is easily managed with the ADC. VIN also moves slowly in most PSM applications allowing the ADC to adequately supervise the input voltage.

All PSM controllers rely on the ADC to achieve 0.5% total DC accuracy. The second-generation devices can only provide this feature for multiplexer selection 0x00.

In both cases, the only way to ensure that all temperature and VIN supervision and all VOUT accuracies are achieved is to use multiplexer selection 0x00, or to design firmware to ensure that selection 0x00 is periodically enabled for long enough time to allow the ADC to make the measurements required. This means selecting 0x00 for at least 120ms to allow a full round-robin telemetry loop. The time between selections that interfere with these measurements will determine the response time of the feature.


Second-generation application firmware can be evaluated using Linduino® PSM and a demo board.

The Linduino PSM API contains an SMBus and PMBus interface to the LTC38XX, LTM46XX and LTC29XX families.

The best place to start is to look at code for selection 0x0D, the short loop. We will use LTC3887 for the following discussion.



If the new commands are not used, the secondgeneration devices behave like the first-generation devices and no firmware changes are required.