BQ25792EVM: Issue with ADC Registers in BQ25792EVM: Zero Values Except VBUS

Part Number: BQ25792EVM

Tool/software:

Hello,

After initializing the ADCs through the ADC_Control (REG2E) register, I perform the reading with a Python script of the registers that should provide voltage and current bus values, specifically:

  • REG3B_VBAT

  • REG33_IBAT

  • REG3D_VSYS

  • REG35_VBUS

  • REG31_IBUS

  • REG37_VAC1

  • REG39_VAC2

  • REG_TS

The strange behavior is that all of these registers return the value 0x00, except for VBUS, which provides the correct voltage value.

The configuration in ADC_Control is 0b10000000 or 0x80 to enable the ADCs. I also tried with other configurations, but the result is the same.

I’m attaching the code for more context. Thanks in advance.

https://drive.google.com/file/d/12kCFWaQhrlKhrKGRijZ-SSX7I3gXChDV/view?usp=sharing

  • Hi Franco,

    Did you also disable the watchdog timer or periodically write the to watchdog bit?  If the watchdog expires, the EN_ADC bit gets reset to 0.

    Regards,

    Jeff

  • Hi Jeff, thanks for your response.

    I am writing to the watchdog register to disable it.

  • HI Franco,

    Ok.  I can't access the google drive but even if I could, I do not have python programming experience.  The ADC registers are 2 bytes long and use BIG endianess format.  The current and die temp registers use 2 complement.  As long as VBUS > UVLO OR VBAT>UVLO, the I2C registers are readable. 

    Regards,

    Jeff 

  • Hi Jeff,
    Yes, I am taking into account the big endian format of the registers when writing to them, as well as their 2-byte length. However, the issue arises when reading: the ADC values stored in those registers return 0x00. This only happens with the ADC registers, except for the VBUS one.
    Also, I don’t quite understand what you mean by UVLO. In everything I reviewed in the BQ25 datasheet, I couldn’t find any reference to it.

    Sorry for the inconvenience, and thank you very much.
    Best regards,
    Franco.

  • Hi Franco,

    No inconvenience.  VBUS ADC is auto read at startup in order to set VINDPM register.  If the ADC is set to continuous, then the registers are updated after each I2C register read request.  If ADC is set to one shot, the registers are updated after the one shot bit written and then a register read is submitted. 

    UVLO values are below

    Regards,

    Jeff