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.

BQ25792: I2C Configuration

Part Number: BQ25792

Tool/software:

Hi Team,

We are using BQ25792 in our current Project. We have tried to set the Battery Termination current control register to 200mA from 1A(which we had earlier set using PD customization tool) of the Battery charger IC using I2C command. But Unfortunately, we could not get the expected result and the Power was shutdown. As a result , the processor and the PMIC got damaged. We have a doubt with the command we have provided on the uboot. 

The command we gave: I2c mw 0x6B 0x09.2 0x05 1

Could you please suggest what might have caused with this command? Is there any possibility of writing to the 0xA register with the above command i.e changing the system voltage to be greater than 4.2V?

The log is attached below for your reference.

Best Regards,

Monisha M

.

=> i2c mm 0x6B 0x09 1
i2c - I2C sub-system

Usage:
i2c bus [muxtype:muxaddr:muxchannel] - show I2C bus info
i2c crc32 chip address[.0, .1, .2] count - compute CRC32 checksum
i2c dev [dev] - show or set current I2C bus
i2c loop chip address[.0, .1, .2] [# of objects] - looping read of device
i2c md chip address[.0, .1, .2] [# of objects] - read from I2C device
i2c mm chip address[.0, .1, .2] - write to I2C device (auto-incrementing)
i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill)
i2c nm chip address[.0, .1, .2] - write to I2C device (constant address)
i2c probe [address] - test for and show device(s) on the I2C bus
i2c read chip address[.0, .1, .2] length memaddress - read to memory
i2c write memaddress chip address[.0, .1, .2] length [-s] - write memory
          to I2C; the -s option selects bulk write in a single transaction
i2c flags chip [flags] - set or get chip flags
i2c olen chip [offset_length] - set or get chip offset length
i2c reset - re-init the I2C Controller
i2c speed [speed] - show or set I2C bus speed
=> i2c md 0x6B 0x09 1
0009: 19    .
=> i2c mm 0x6B 0x09 05 1
i2c - I2C sub-system

Usage:
i2c bus [muxtype:muxaddr:muxchannel] - show I2C bus info
i2c crc32 chip address[.0, .1, .2] count - compute CRC32 checksum
i2c dev [dev] - show or set current I2C bus
i2c loop chip address[.0, .1, .2] [# of objects] - looping read of device
i2c md chip address[.0, .1, .2] [# of objects] - read from I2C device
i2c mm chip address[.0, .1, .2] - write to I2C device (auto-incrementing)
i2c mw chip address[.0, .1, .2] value [count] - write to I2C device (fill)
i2c nm chip address[.0, .1, .2] - write to I2C device (constant address)
i2c probe [address] - test for and show device(s) on the I2C bus
i2c read chip address[.0, .1, .2] length memaddress - read to memory
i2c write memaddress chip address[.0, .1, .2] length [-s] - write memory
          to I2C; the -s option selects bulk write in a single transaction
i2c flags chip [flags] - set or get chip flags
i2c olen chip [offset_length] - set or get chip offset length
i2c reset - re-init the I2C Controller
i2c speed [speed] - show or set I2C bus speed
=> i2c md 0x6B 0x09 1
0009: 19    .
=> i2c md 0x6B 0x09 0x05 1
0009: 19 23 00 ea 17    .#...
=> i2c mw 0x6B 0x09.2 0x05 1
=> i2c md 0x6B 0x09 1
0009: 09    .
=> i2c md 0x6B 0x09 10
0009: 09 01 a4 01 f4 8e 01 2c 01 19 23 00 ea 17 3d a2    .......,..#...=.
=>
0019: 19 01 a4 01 f4 8e 01 2c 01 19 23 00 ea 17 3d a2    .......,..#...=.
=>
i2c: Error check busy bus: 0x8
Error reading the chip: -102
=>
Error reading the chip: 5
=>
0029: 29 01 a4 01 f4 2c 00 0a 01 19 23 00 ea 17 3d 82    )....,....#...=.
=> i2c probe
Valid chip addresses: 20 50 6B 7F
=>
i2c probe
Valid chip addresses: 20 50 6B 7F
=> i2c md 0x6B 0x09
U-Boot SPL 2024.04-lf_v2024.04+g6c4545203d1+p0 (Nov 15 2024 - 04:02:13 +0000)
Normal Boot
ELE firmware version 1.3.0-1c47a54d
upower_apd_inst_isr: entry
upower_init: soc_id=48
upower_init: version:11.11.13
upower_init: start uPower RAM service
user_upwr_rdy_callb: soc=b
user_upwr_rdy_callb: RAM version:12.18
Turning on switches...
Turn on switches ok
Turning on memories...
Turn on memories ok
Clearing DDR retention...
Clear DDR retention ok
[ERROR] DFI error. Please check DDR configuration

resetting ...

  • Hi Monisha,

    The spec says the charger can accept multi-byte writes.  Assuming your software correctly converts the .2 into hex or decimal, I do not expect either of those writes to change VREG, which would affect V(SYS).  However, REG0x09[6]=1 resets all bits.  Does your software disable PFM to reduce V(SYS) = VREG+200mV instead of default PFM enabled with VREG+600mV at termination?  If so, then the reset all may be resetting PFM back to enable state with higher V(SYS).

    Regards,

    Jeff

  • Hi Jeff,

    We are not disabling PFM by any chance. And the configuration we have provided using PD customization tool is attached below.

     

    And after this we have tried to change the Charge termination current using the command "I2c mw 0x6B 0x09.2 0x05 1". We are not seeing any possibility of resetting VSYS. What happens if we write 0x5 data to REG0A? Does it reset VSYS?

    Best Regards,

    Monisha M

  • Hi Monisha,

    I recommend trying the I2c mw 0x6B 0x09.2 0x05 1 on a BQ25792EVM if possible. Or changing your mw to a single write.  Writing 0x5 to REG0A sets CELLS to 1s, which forces MINSYS to 3.5V and VREG to 4.2v.  With PFM enabled, VSYS can be up to 600mV above VREG=4.2V.  With PFM disabled for 1S, VSYSMAX = 4.55V.

    Regards,

    Jeff

  • Hi Jeff,

    We have planned to try this command in our board on isolating the charger IC from other components. We also have a concern whether from the command "I2c mw 0x6B 0x09.2 0x05 1", is "0x09.2" portion ignored and considered "0x05" as register address, with "1" being written to the 0x05 register. Could you please specify what happens on writing the value 1 to 0x05 register? 

    Best Regards,

    Monisha M

  • Hi Monisha,

    Writing 1 to REG0x05 results in VINDPM register being lowered to 3.6V.  That means that the converter will pull current from input source up to IINDPM or until VBUS droops to 3.6V.  If you were previously operating in VINDPM with limited input power, V(SYS) = V(BAT).  Lowering VINDPM threshold resulting in exiting DPM could mean that V(SYS) jumps to higher of MINSYS or VREG +200mV if PFM off or +600mV if PFM on.

    Regards,

    Jeff

  • Hi Jeff,

    Thank you for the support. We will try the same command to understand what would have caused this failure.

    Best Regards,

    Monisha M