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.

BQ76942: Current Reading Doubled from AFE – Configuration Clarification

Part Number: BQ76942


Tool/software:

Hello TI Team,

We are observing an issue with the current readings from the AFE. When we measure a charging current of 2 Amps, the AFE reports approximately 4 Amps across all current-related registers: CC1 Current, CC3 Current, CC2 Counts, and CC3 Counts.

Our configuration details are as follows:

  • CC Gain: 0x40723055

  • Capacity Gain: 0x4989C71C

  • Sense Resistor: 2 mΩ

Could you please help us understand why the current is being reported as double the actual value?

Additionally, we are not using a host controller. Could you also clarify which of the current registers (CC1 Current, CC3 Current, CC2 Counts, CC3 Counts) the AFE uses for its internal current-related calculations?

The relevant configuration data is provided below for your reference.

// CC Gain Register

messagePayLoad[0] = CMD_DIR_SUBCMD_LOW;
messagePayLoad[1] = 0xA8;
messagePayLoad[2] = 0x91;
messagePayLoad[3] = 0x55;
messagePayLoad[4] = 0x30;
messagePayLoad[5] = 0x72;
messagePayLoad[6] = 0x40;
err = I2C_WriteReg (messagePayLoad, sizeof(messagePayLoad));
R_BSP_SoftwareDelay (2, BSP_DELAY_UNITS_MILLISECONDS);

checksumDataByte[0] = CMD_DIR_RESP_CHKSUM;
checksumDataByte[1] = Checksum (messagePayLoad, 7);
checksumDataByte[2] = 0x08;
err = I2C_WriteReg (checksumDataByte, sizeof(checksumDataByte));
R_BSP_SoftwareDelay (2, BSP_DELAY_UNITS_MILLISECONDS);

// Capacity Gain Register

messagePayLoad[0] = CMD_DIR_SUBCMD_LOW;
messagePayLoad[1] = 0xAC;
messagePayLoad[2] = 0x91;
messagePayLoad[3] = 0x1C;
messagePayLoad[4] = 0xC7;
messagePayLoad[5] = 0x89;
messagePayLoad[6] = 0x49;
err = I2C_WriteReg (messagePayLoad, sizeof(messagePayLoad));
R_BSP_SoftwareDelay (2, BSP_DELAY_UNITS_MILLISECONDS);

checksumDataByte[0] = CMD_DIR_RESP_CHKSUM;
checksumDataByte[1] = Checksum (messagePayLoad, 7);
checksumDataByte[2] = 0x08;
err = I2C_WriteReg (checksumDataByte, sizeof(checksumDataByte));
R_BSP_SoftwareDelay (2, BSP_DELAY_UNITS_MILLISECONDS);

Thank you for your support.

Best regards,
Vinay

  • Hello Vinay,

    Let me take a further look at the configuration data below, and I will get back to your first question.

    To answer your second question, CC1 is used for charge integration. It will integrate the current over a 250-ms window. CC2 provides fast current measurement that is outputted every 3ms in normal mode and every 1.5ms when Settings:Configuration:power Config[FASTADC] is set in the configurations. CC3 is the average of the programmable number of CC2 current samples, which may go up to 255. I hope this better answers your question, but please let me know if anything may be unclear.

    These are all detailed in Section 4.3 of the TRM.

    Regards,
    Rohin Nair