SNVSBM4D March 2022 – October 2024 TPS389006-Q1 , TPS389R0-Q1
PRODMIX
TPS389C03-Q1 supports Packet Error Checking (PEC) as a way to implement Cyclic Redundancy Checking (CRC). PEC is a dynamic CRC that happens only during read or write transactions if enabled. With the initial value of CRC set to 0x00, the PEC uses a CRC-8 represented by the polynomial:
The polynomial is meant to catch any bit flips or noise in I2C communication which cause data and PEC byte to have a mismatch. The PEC calculation includes all bytes in the transmission, including address, command and data. The PEC calculation does not include ACK or NACK bits or START, STOP or REPEATED START conditions. If PEC is enabled, and the TPS389C03-Q1 is transmitting data, then the TPS389C03-Q1 is responsible for sending the PEC byte. If PEC is enabled, and the TPS389C03-Q1 is reveiving data from the MCU, then the MCU is responsible for sending the PEC byte. In case of faster communications needs like servicing the watchdog the required PEC feature can be effectively used to handle missing PEC information and to avoid triggering faults. Figure 7-8 and Figure 7-9 highlight the communication protocol flow when PEC is required and which device controls SDA line at various instances during active communication.
Table 7-3 summarises the registers associated with a PEC Write command and resulting device behavior. Table 7-4 summarises the registers associated with a PEC Read command and resulting device behavior.
EN_PEC | REQ_PEC | PEC_INT | Interrupt Status |
---|---|---|---|
0 | x | x | PEC byte is not required in write operation, NO NIRQ assertion. |
1 | 0 | x | A write command missing a PEC byte is treated as OK, the write command executes and result in a I2C ACK. A write command with an incorrect PEC is treated as an error, the write command does not execute and result in a I2C NACK. NO NIRQ assertion. |
1 | 1 | 0 | A missing PEC is treated as an error, a write command only executes if the correct PEC byte is provided. I2C communication still responds with an ACK although write command did not execute. A write command with an incorrect PEC is treated as an error, the write command does not execute and result in a I2C NACK. NO NIRQ assertion. |
1 | 1 | 1 | A missing PEC is treated as an error, a write command only executes if the correct PEC byte is provided. I2C communication still responds with an ACK although write command did not execute. A write command with an incorrect PEC is treated as an error, the write command does not execute and results in a I2C NACK. NIRQ is asserted when a write command with a incorrect or missing PEC byte is attempted. |
EN_PEC | REQ_PEC | PEC_INT | Interrupt Status |
---|---|---|---|
0 | x | x | I2C read operation reponds with data stored in register, I2C read command does not respond with registers corresponding PEC byte. |
1 | x | x | I2C read operation reponds with data stored in register and corresponding PEC byte. |