Skip to content

File syn_pmbus.h

FileList > proto > syn_pmbus.h

Go to the source code of this file

PMBus (Power Management Bus 1.2 / 1.3) Protocol Engine & Linear Format Converters. More...

  • #include "../common/syn_defs.h"
  • #include "syn_smbus.h"
  • #include <stdbool.h>
  • #include <stdint.h>

Public Functions

Type Name
void syn_pmbus_encode_read_cmd (SYN_SMBUS_Packet * pkt, uint8_t slave_addr, uint8_t cmd, bool use_pec)
Encode a PMBus telemetry read request into an SMBus packet.
uint16_t syn_pmbus_float_to_linear11 (float val)
Convert floating-point value to PMBus 16-bit Linear11 format.
uint16_t syn_pmbus_float_to_linear16 (float val, uint8_t vout_mode)
Convert floating-point output voltage to PMBus 16-bit Linear16 format.
float syn_pmbus_linear11_to_float (uint16_t raw)
Convert PMBus 16-bit Linear11 format (5-bit exponent + 11-bit mantissa) to float.
float syn_pmbus_linear16_to_float (uint16_t raw, uint8_t vout_mode)
Convert PMBus 16-bit Linear16 format (unsigned 16-bit mantissa + VOUT_MODE exponent) to float.

Macros

Type Name
define SYN_PMBUS_CMD_CAPABILITY 0x19
define SYN_PMBUS_CMD_CLEAR_FAULTS 0x03
define SYN_PMBUS_CMD_ON_OFF_CONFIG 0x02
define SYN_PMBUS_CMD_OPERATION 0x01
define SYN_PMBUS_CMD_PAGE 0x00
define SYN_PMBUS_CMD_PHASE 0x04
define SYN_PMBUS_CMD_PMBUS_REVISION 0x98
define SYN_PMBUS_CMD_READ_DUTY_CYCLE 0x94
define SYN_PMBUS_CMD_READ_FAN_SPEED_1 0x90
define SYN_PMBUS_CMD_READ_FREQUENCY 0x95
define SYN_PMBUS_CMD_READ_IIN 0x89
define SYN_PMBUS_CMD_READ_IOUT 0x8C
define SYN_PMBUS_CMD_READ_PIN 0x97
define SYN_PMBUS_CMD_READ_POUT 0x96
define SYN_PMBUS_CMD_READ_TEMPERATURE_1 0x8D
define SYN_PMBUS_CMD_READ_TEMPERATURE_2 0x8E
define SYN_PMBUS_CMD_READ_VIN 0x88
define SYN_PMBUS_CMD_READ_VOUT 0x8B
define SYN_PMBUS_CMD_RESTORE_DEFAULT_ALL 0x12
define SYN_PMBUS_CMD_STATUS_BYTE 0x78
define SYN_PMBUS_CMD_STATUS_CBUFFER 0x7E
define SYN_PMBUS_CMD_STATUS_FANS_1_2 0x81
define SYN_PMBUS_CMD_STATUS_INPUT 0x7C
define SYN_PMBUS_CMD_STATUS_IOUT 0x7B
define SYN_PMBUS_CMD_STATUS_MFR_SPECIFIC 0x80
define SYN_PMBUS_CMD_STATUS_OTHER 0x7F
define SYN_PMBUS_CMD_STATUS_TEMPERATURE 0x7D
define SYN_PMBUS_CMD_STATUS_VOUT 0x7A
define SYN_PMBUS_CMD_STATUS_WORD 0x79
define SYN_PMBUS_CMD_STORE_DEFAULT_ALL 0x11
define SYN_PMBUS_CMD_VOUT_COMMAND 0x21
define SYN_PMBUS_CMD_VOUT_DROOP 0x28
define SYN_PMBUS_CMD_VOUT_MARGIN_HIGH 0x25
define SYN_PMBUS_CMD_VOUT_MARGIN_LOW 0x26
define SYN_PMBUS_CMD_VOUT_MAX 0x24
define SYN_PMBUS_CMD_VOUT_MODE 0x20
define SYN_PMBUS_CMD_VOUT_TRANSITION_RATE 0x27
define SYN_PMBUS_CMD_WRITE_PROTECT 0x10
define SYN_PMBUS_STATUS_BYTE_BUSY (1u &lt;&lt; 7)
define SYN_PMBUS_STATUS_BYTE_CBUF_FAULT (1u &lt;&lt; 1)
define SYN_PMBUS_STATUS_BYTE_IOUT_OC (1u &lt;&lt; 4)
define SYN_PMBUS_STATUS_BYTE_NONE_OF_ABOVE (1u &lt;&lt; 0)
define SYN_PMBUS_STATUS_BYTE_OFF (1u &lt;&lt; 6)
define SYN_PMBUS_STATUS_BYTE_TEMP_FAULT (1u &lt;&lt; 2)
define SYN_PMBUS_STATUS_BYTE_VIN_UV (1u &lt;&lt; 3)
define SYN_PMBUS_STATUS_BYTE_VOUT_OV (1u &lt;&lt; 5)

Detailed Description

Provides PMBus standard command definitions, telemetry status decoding, and Linear11 / Linear16 numeric data converters.

Public Functions Documentation

function syn_pmbus_encode_read_cmd

Encode a PMBus telemetry read request into an SMBus packet.

void syn_pmbus_encode_read_cmd (
    SYN_SMBUS_Packet * pkt,
    uint8_t slave_addr,
    uint8_t cmd,
    bool use_pec
) 

Parameters:

  • pkt Output SMBus packet.
  • slave_addr 7-bit PMBus slave address.
  • cmd PMBus command code (e.g., SYN_PMBUS_CMD_READ_VIN).
  • use_pec Enable Packet Error Checking (PEC).

function syn_pmbus_float_to_linear11

Convert floating-point value to PMBus 16-bit Linear11 format.

uint16_t syn_pmbus_float_to_linear11 (
    float val
) 

Parameters:

  • val Floating-point value.

Returns:

Encoded 16-bit Linear11 word.


function syn_pmbus_float_to_linear16

Convert floating-point output voltage to PMBus 16-bit Linear16 format.

uint16_t syn_pmbus_float_to_linear16 (
    float val,
    uint8_t vout_mode
) 

Parameters:

  • val Floating-point voltage value.
  • vout_mode VOUT_MODE byte (or raw 5-bit signed exponent N).

Returns:

Encoded 16-bit Linear16 raw mantissa word.


function syn_pmbus_linear11_to_float

Convert PMBus 16-bit Linear11 format (5-bit exponent + 11-bit mantissa) to float.

float syn_pmbus_linear11_to_float (
    uint16_t raw
) 

Parameters:

  • raw 16-bit raw Linear11 word.

Returns:

Decoded floating-point value.


function syn_pmbus_linear16_to_float

Convert PMBus 16-bit Linear16 format (unsigned 16-bit mantissa + VOUT_MODE exponent) to float.

float syn_pmbus_linear16_to_float (
    uint16_t raw,
    uint8_t vout_mode
) 

Parameters:

  • raw 16-bit raw mantissa word.
  • vout_mode VOUT_MODE byte (or raw 5-bit signed exponent N).

Returns:

Decoded floating-point output voltage.


Macro Definition Documentation

define SYN_PMBUS_CMD_CAPABILITY

#define SYN_PMBUS_CMD_CAPABILITY `0x19`

Bus speed and alert capabilities


define SYN_PMBUS_CMD_CLEAR_FAULTS

#define SYN_PMBUS_CMD_CLEAR_FAULTS `0x03`

Clear fault flags


define SYN_PMBUS_CMD_ON_OFF_CONFIG

#define SYN_PMBUS_CMD_ON_OFF_CONFIG `0x02`

On/off switch configuration


define SYN_PMBUS_CMD_OPERATION

#define SYN_PMBUS_CMD_OPERATION `0x01`

On/off and margin control


define SYN_PMBUS_CMD_PAGE

#define SYN_PMBUS_CMD_PAGE `0x00`

Select page/channel


define SYN_PMBUS_CMD_PHASE

#define SYN_PMBUS_CMD_PHASE `0x04`

Phase selection


define SYN_PMBUS_CMD_PMBUS_REVISION

#define SYN_PMBUS_CMD_PMBUS_REVISION `0x98`

PMBus spec version


define SYN_PMBUS_CMD_READ_DUTY_CYCLE

#define SYN_PMBUS_CMD_READ_DUTY_CYCLE `0x94`

Read PWM duty cycle


define SYN_PMBUS_CMD_READ_FAN_SPEED_1

#define SYN_PMBUS_CMD_READ_FAN_SPEED_1 `0x90`

Read fan speed 1 (RPM)


define SYN_PMBUS_CMD_READ_FREQUENCY

#define SYN_PMBUS_CMD_READ_FREQUENCY `0x95`

Read switching frequency


define SYN_PMBUS_CMD_READ_IIN

#define SYN_PMBUS_CMD_READ_IIN `0x89`

Read input current


define SYN_PMBUS_CMD_READ_IOUT

#define SYN_PMBUS_CMD_READ_IOUT `0x8C`

Read output current


define SYN_PMBUS_CMD_READ_PIN

#define SYN_PMBUS_CMD_READ_PIN `0x97`

Read input power


define SYN_PMBUS_CMD_READ_POUT

#define SYN_PMBUS_CMD_READ_POUT `0x96`

Read output power


define SYN_PMBUS_CMD_READ_TEMPERATURE_1

#define SYN_PMBUS_CMD_READ_TEMPERATURE_1 `0x8D`

Read primary temperature


define SYN_PMBUS_CMD_READ_TEMPERATURE_2

#define SYN_PMBUS_CMD_READ_TEMPERATURE_2 `0x8E`

Read secondary temperature


define SYN_PMBUS_CMD_READ_VIN

#define SYN_PMBUS_CMD_READ_VIN `0x88`

Read input voltage


define SYN_PMBUS_CMD_READ_VOUT

#define SYN_PMBUS_CMD_READ_VOUT `0x8B`

Read output voltage


define SYN_PMBUS_CMD_RESTORE_DEFAULT_ALL

#define SYN_PMBUS_CMD_RESTORE_DEFAULT_ALL `0x12`

Restore default settings from NVM


define SYN_PMBUS_CMD_STATUS_BYTE

#define SYN_PMBUS_CMD_STATUS_BYTE `0x78`

Summary status byte


define SYN_PMBUS_CMD_STATUS_CBUFFER

#define SYN_PMBUS_CMD_STATUS_CBUFFER `0x7E`

Communication/logic status


define SYN_PMBUS_CMD_STATUS_FANS_1_2

#define SYN_PMBUS_CMD_STATUS_FANS_1_2 `0x81`

Fan 1 & 2 status flags


define SYN_PMBUS_CMD_STATUS_INPUT

#define SYN_PMBUS_CMD_STATUS_INPUT `0x7C`

Input status flags


define SYN_PMBUS_CMD_STATUS_IOUT

#define SYN_PMBUS_CMD_STATUS_IOUT `0x7B`

Output current status flags


define SYN_PMBUS_CMD_STATUS_MFR_SPECIFIC

#define SYN_PMBUS_CMD_STATUS_MFR_SPECIFIC `0x80`

Manufacturer status flags


define SYN_PMBUS_CMD_STATUS_OTHER

#define SYN_PMBUS_CMD_STATUS_OTHER `0x7F`

Other status flags


define SYN_PMBUS_CMD_STATUS_TEMPERATURE

#define SYN_PMBUS_CMD_STATUS_TEMPERATURE `0x7D`

Temperature status flags


define SYN_PMBUS_CMD_STATUS_VOUT

#define SYN_PMBUS_CMD_STATUS_VOUT `0x7A`

Output voltage status flags


define SYN_PMBUS_CMD_STATUS_WORD

#define SYN_PMBUS_CMD_STATUS_WORD `0x79`

Summary status word


define SYN_PMBUS_CMD_STORE_DEFAULT_ALL

#define SYN_PMBUS_CMD_STORE_DEFAULT_ALL `0x11`

Store default settings to NVM


define SYN_PMBUS_CMD_VOUT_COMMAND

#define SYN_PMBUS_CMD_VOUT_COMMAND `0x21`

Output voltage setpoint


define SYN_PMBUS_CMD_VOUT_DROOP

#define SYN_PMBUS_CMD_VOUT_DROOP `0x28`

Voltage droop rate


define SYN_PMBUS_CMD_VOUT_MARGIN_HIGH

#define SYN_PMBUS_CMD_VOUT_MARGIN_HIGH `0x25`

High margin voltage setting


define SYN_PMBUS_CMD_VOUT_MARGIN_LOW

#define SYN_PMBUS_CMD_VOUT_MARGIN_LOW `0x26`

Low margin voltage setting


define SYN_PMBUS_CMD_VOUT_MAX

#define SYN_PMBUS_CMD_VOUT_MAX `0x24`

Maximum output voltage limit


define SYN_PMBUS_CMD_VOUT_MODE

#define SYN_PMBUS_CMD_VOUT_MODE `0x20`

Output voltage mode & exponent


define SYN_PMBUS_CMD_VOUT_TRANSITION_RATE

#define SYN_PMBUS_CMD_VOUT_TRANSITION_RATE `0x27`

Voltage slew rate


define SYN_PMBUS_CMD_WRITE_PROTECT

#define SYN_PMBUS_CMD_WRITE_PROTECT `0x10`

Write protect configuration


define SYN_PMBUS_STATUS_BYTE_BUSY

#define SYN_PMBUS_STATUS_BYTE_BUSY `(1u << 7)`

define SYN_PMBUS_STATUS_BYTE_CBUF_FAULT

#define SYN_PMBUS_STATUS_BYTE_CBUF_FAULT `(1u << 1)`

define SYN_PMBUS_STATUS_BYTE_IOUT_OC

#define SYN_PMBUS_STATUS_BYTE_IOUT_OC `(1u << 4)`

define SYN_PMBUS_STATUS_BYTE_NONE_OF_ABOVE

#define SYN_PMBUS_STATUS_BYTE_NONE_OF_ABOVE `(1u << 0)`

define SYN_PMBUS_STATUS_BYTE_OFF

#define SYN_PMBUS_STATUS_BYTE_OFF `(1u << 6)`

define SYN_PMBUS_STATUS_BYTE_TEMP_FAULT

#define SYN_PMBUS_STATUS_BYTE_TEMP_FAULT `(1u << 2)`

define SYN_PMBUS_STATUS_BYTE_VIN_UV

#define SYN_PMBUS_STATUS_BYTE_VIN_UV `(1u << 3)`

define SYN_PMBUS_STATUS_BYTE_VOUT_OV

#define SYN_PMBUS_STATUS_BYTE_VOUT_OV `(1u << 5)`


The documentation for this class was generated from the following file src/syntropic/proto/syn_pmbus.h