SLUSDQ4 April 2019 BQ79606A-Q1
To determine register changes, the BQ79606A-Q1 constantly runs a background check on the register contents by computing a CRC and comparing it to a stored value. CRC testing is done for both the customer and factory register space. Customer register changes fall into several categories; intentional (that is, a change written by the host), unintentional (due to an unexpected device or system fault), or the result of an automated operation (such as the status bits for ADC conversion or cell balancing completion). The Register Summary indicates which host programmable registers are included in the CRC. The CUST_CRC_RSLTH and CUST_CRC_RSLTL registers hold the currently computed CRC value. This value is compared against the customer programmed value in the CRC registers. When updating a register covered in the CRC, the customer must update the CRC register. This is done by calculating the CRC, and writing the value to the CUST_CRCH and CUST_CRCL registers. The CRC is updated in the NVM along with the other register updates. The CRC calculation is done in the same manner (including the bit stream ordering) and with the same polynomial as described in Calculating Frame CRC Value. The CRC check and comparison is done every tCRC_OTP and the DEV_STAT[CRC_DONE] bit is set after the check is complete. If the bit is already set, it remains set until cleared with a read.