SLUSDQ4 April 2019 BQ79606A-Q1
The BQ79606A-Q1 uses a CRC (cyclic redundancy check) to protect data integrity during transmission. The CRC represents the remainder of a process analogous to polynomial long division, where the frame being checked is "divided" by the generator. The CRC appended to the frame is the "remainder". Because of this process, when the device receives a frame, the CRC calculated by the receiver across the entire frame including the transmitted CRC will be zero, indicating a correct transmission and reception. A non-zero result indicates a communication error. Specifically, the BQ79606A-Q1 uses the CRC-16-IBM polynomial (x16 + x15 + x2 + 1 ) with 0xFFFF initialization.
The CRC value is checked as the first step after receiving the communication frame. If the CRC is incorrect, the entire frame is discarded and not processed. Any additional frame errors are not checked and any errors are not indicated other than CRC error. The bytes are still transferred up/down the stack, thus every device that processed the frame will indicate a CRC error. This results in multiple devices indicating CRC faults on the same communication frame.