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.

BQ25756: How to Read VBAT and IBAT ADC Values?

Part Number: BQ25756
Other Parts Discussed in Thread: BQSTUDIO, EV2400, BQ25750

Tool/software:

Hi,

I would like clarification on the following points regarding reading the VBAT and IBAT ADC values from the BQ25756:

  1. Register Addresses and Names:

    • 0x2F: REG0x2F_IBAT_ADC (IBAT ADC)
    • 0x33: REG0x33_VBAT_ADC (VBAT ADC)
  2. Register Configuration: I have read both registers, but they return a value of 0. Are there any additional registers I need to configure, eg: before reading these IBAT ADC values? Specifically, should I be enabling the 6th bit of REG0x2C_ADC_Channel_Control and the 7th bit of REG0x2B_ADC_Control?

  3. Power Supply Voltage: What is the recommended voltage for the power supply (instead of a battery) to use when checking these ADC values,If it is advisable to use a power supply, what voltage limit should I adhere to?

Thank you for your assistance!

  • Hello Sankar,

    2. Yes, you will need to set ADC_EN=1 to enable the ADCs. You can refer to this FAQ page for more information on the ADC.

    3. I posted the datasheet in the below image

    VVAC_OK is 4.2V and VREGN_OK is 3.55V

    Best Regards,
    Ethan Galloway

  • . Yes, you will need to set ADC_EN=1 to enable the ADCs. You can refer to this FAQ page for more information on the ADC

    Hi Ethan,

    Thank you for your response. I followed your suggestion and set ADC_EN = 1 and ADC_RATE = 0. However, after doing so, I still read a value of 0 from the REG0x2F_IBAT_ADC register (Address: 0x2F).

    I have provided a power supply voltage of over 6V as per your advice. Could you please clarify why I'm still seeing 0 in the register? Is there any additional configuration I may have missed?

  • Hello Sankar,

    That's strange. Have you confirmed that those bits were written successfully?

    To help me debug this, can you read the register settings and send them to me after you have set the ADC values?

    Best Regards,
    Ethan Galloway

  • After configuring the REG0x2B (ADC Control Register) with ADC_EN = 1 and ADC_RATE = 0 (for continuous conversion), I read the register value to verify the settings. I've attached a snippet of the register value for reference.

    Once enabled, I proceeded to read the value from the REG0x2F (IBAT ADC Register), but the result returned was still zero.

    However, I was able to read a valid value from REG0x33 (VBAT ADC Register).


    Additionally, I checked the IBAT ADC value with both the IBAT_ADC_DIS field enabled and disabled in the REG0x2C (ADC Channel Control Register), but it did not make any difference.

  • Hello Sankar,

    Thanks for the new information. I have a few more questions.

    If you wait a few seconds, do the values update then?

    Can you read the VBAT ADC with just the one shot conversion?

    Best Regards,
    Ethan Galloway

  • Hi, 

    If you wait a few seconds, do the values update then?

    Yes I checked VBAT and IBAT values in loop but VBAT only changing it almost gives correct voltage value .Yes, I observed that the VBAT values update in a loop, and they change as expected. The VBAT readings are mostly accurate, but IBAT values seem not to change in the same manner.

    Can you read the VBAT ADC with just the one shot conversion?

    No, I am using continuous conversion. I have configured the ADC to continuous mode by setting the ADC_RATE field in REG0x2B to 0. Additionally, I have enabled the ADC by setting ADC_EN = 1.

    Thanks & regards.

  • Hello Sankar,

    That's a pretty strange error. Is it possible for you to hook up an EV2400 to the IC and use BQStudio to read the registers?

    Also, if possible, can you swap the IC and see if anything changes in the reported ADC values?

    Best Regards,
    Ethan Galloway

  • Is it possible for you to hook up an EV2400 to the IC and use BQStudio to read the registers?

    Hi Ethan,

    Thanks for your suggestion. However, I am working with a customized board, and using the EV2400 with this IC is not possible as we do not have access to that kit.

    Please let me know if there are any other troubleshooting methods or configuration settings I can try.

    Best regards,
    Sankar

  • Hello Sankar,

    I have a few suggestions:

    • Can you read the VAC ADC or TS ADC register?
    • Is the BQ25750 charging when you read the register? If the battery charge current is 1A, do you see IBAT_ADC change?
    • Can you read the I2C traffic to make sure the right commands are being sent?

    I'll let you know if I think of any other suggestions.

    Best Regards,
    Ethan Galloway

  • The input voltage readings (VAC ADC) are accurate (e.g., approximately 11.848V for a 12V input). However, for the TS_ADC, the raw values are very low (1 or 2), resulting in a 0% conversion.

    Is the BQ25750 charging when you read the register?

    Regarding your question about the BQ25750 charging when I read the register, I had only connected the power supply across the VBATT line at the time.

    Can you read the I2C traffic to make sure the right commands are being sent?

    As for the I2C traffic, I have verified that the correct commands are being sent to read the IBAT ADC, and there don't appear to be any issues with the communication.

  • Hello Sankar,

    If only VBAT is connected, that means that there is no current that should be flowing across the battery sense resistor. IBAT_ADC reading 0mA may be an accurate measurement. If you try to charge at 1A, does IBAT_ADC report a current then?

    Best Regards,
    Ethan Galloway