JAJSS72 November 2023 BQ76907
PRODUCTION DATA
The I2C serial communications interface in the BQ76907 acts as a target device and supports rates up to 400 kHz with an optional CRC check. The BQ76907 will initially power up by default in a mode determined by the OTP settings factory programmed by TI. The host can change the CRC mode setting while in CONFIG_UPDATE mode, then the new setting will take effect upon exit of CONFIG_UPDATE mode.
The I2C device address (as an 8-bit value including target address and R/W bit) is set by default as 0x10 (write), 0x11 (read), which can also be changed by the configuration setting.
The communications interface includes programmable timeout capability, with the internal I2C bus logic reset when an enabled timeout occurs. This is described in detail in the BQ76907 Technical Reference Manual.
An I2C write transaction is shown in Figure 7-1. Block writes are allowed by sending additional data bytes before the Stop. The I2C logic will auto-increment the register address after each data byte. The shaded regions show when the device may be clock stretching.
The CRC check is enabled by setting a data memory bit. When enabled, the CRC is calculated as follows:
The CRC polynomial is x8 + x2 + x + 1, and the initial value is 0.
When the target detects an invalid CRC, the I2C target will NACK the CRC, which causes the I2C target to go to an idle state.
Figure 7-2 shows a read transaction using a Repeated Start. The shaded regions show when the device may be clock stretching.
Figure 7-3 shows a read transaction where a Repeated Start is not used, for example if not available in hardware. For a block read, the controller ACK’s each data byte except the last and continues to clock the interface. The I2C block will auto-increment the register address after each data byte. The shaded regions show when the device may be clock stretching.
When enabled, the CRC for a read transaction is calculated as follows:
The CRC polynomial is x8 + x2 + x + 1, and the initial value is 0.
When the controller detects an invalid CRC, the I2C controller will NACK the CRC, which causes the I2C target to go to an idle state.
For more information, see the BQ76907 Technical Reference Manual.