This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS549D22: Could you help to let us know why TPS549D22's PEC failed

Part Number: TPS549D22

Hi Team,

Our customer used TPS549D22 and they found 0x19=0xD0 and 0x7E=0x82.

From 0x7E register value, PEC(packet error check) failed. However, from 0x19 register, PEC function is supported.

Could you let me know how to further check why PEC failed? Did you meet this kind of issue before? It is host side's issue?





    Packet Error Check (PEC) is an additional byte of data sent by the PMBus controller to the TPS549D22 as part of a write transaction.  This byte of data is calculated using a Cyclical Redundancy Check (CRC) on the entire transaction packet including Target Device Address, Write Bit, Command Code, and the Data byte(s) sent.

    The PEC bit in STATUS_CML is set when the TPS549D22 receives a write transaction with the additional byte of data for a PEC, but it's calculation of the PEC byte does not match the PEC byte received.  Reasons you may receive a PEC error:

    1) The PMBus Controller calculated or sent the wrong PEC byte

    2) There was a bit-flip error in the transaction resulting in a PEC mismatch

    3) There was a bit-flip error in the transaction resulting in a Word transaction being received as a Byte transaction type command, so that the high byte of the word is treated as a PEC byte

    Is the PMBus controller source expected to be sending PEC bytes?

    Where is the PEC calculation coming from?

    Is every PMBus transaction with PEC failing or just some?

  • PEC bytes are expected to be sent by PMBUS controller, NXP MCU.

    PEC calculation should be calculated by MCU.

    For PEC, all PEC bytes are incorrect. However, all data are correct. Only PEC bytes are wrong.

    Is there any suggestion to further debug it?





    First, I would recommend decoding one of the transactions into its bytes to verify that the PEC being sent is incorrect.

    If the PEC byte being sent is not correct, then I would recommend checking the NXP MCU's PEC calculation.

    Per the SMBus Specification, the PEC CRC-8 uses C(x) = X^8 + x^2 + x^1 + 1, calculated on all bits in the order transmitted / received.