Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

BQ25622: Using ADC control reduce amperage (and battery charging process)

Part Number: BQ25622

Tool/software:

Hi everyone!

I a soft dev working with haptic devices for VR games.

Lately, I was given new PCBs that integrate BQ25622 chargers so i can read battery voltage.
I managed to activate the ADC controller via I2C protocol, read the binary values and turn them in understable values. (Using ESP-IDF)

But i noticed variations in the amperage when plugins the charger. 
When doing nothing, my battery charges at 1A (which is normal)
When enabling ADC Control via I2C bus (so i can read battery voltage), my battery charges at 0.5A
When reading Battery voltage via I2C bus (every 3 seconds), my battery charges at 0.1A


Is this normal behavior ? (If so, i just need to disable ADC control and battery reading when charging)
If not, is it more likely that i messed up the I2C dialogue or could it be coming from the PCB's architecture itself ? (I'm not an electronician, so I may not understand some things about hardware)


Here is how i set up I2C bus and enable ADC control

//	 Config i2c
	i2c_config_t conf;
	conf.mode = I2C_MODE_MASTER;
	conf.sda_io_num = SDA;
	conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
	conf.scl_io_num = SCL;
	conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
	conf.master.clk_speed = 1000000;
	i2c_param_config(I2C_NUM_0, &conf);
	i2c_driver_install(I2C_NUM_0, conf.mode, 0, 0, 0);
	
	i2c_cmd_handle_t cmdConfig = i2c_cmd_link_create();
	i2c_master_start(cmdConfig);
	i2c_master_write_byte(cmdConfig, (0x6b << 1) | I2C_MASTER_WRITE, 1); // on donne l'adresse du device
	i2c_master_write_byte(cmdConfig, 0x26, 1); // on donne l'dresse du registre (adresse de l'adc)
	i2c_master_write_byte(cmdConfig, 0xB0, 1);	
	i2c_master_stop(cmdConfig);
	i2c_master_cmd_begin(I2C_NUM_0, cmdConfig, pdMS_TO_TICKS(1000));
	i2c_cmd_link_delete(cmdConfig);	


And here is how I read my VBAT value :
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
	i2c_master_start(cmd);
	i2c_master_write_byte(cmd, (address << 1) | I2C_MASTER_WRITE, 1); // device address
	i2c_master_write_byte(cmd, reg, 1); // register address
	i2c_master_start(cmd);
	i2c_master_write_byte(cmd, (address << 1) | I2C_MASTER_READ, 1); // device address
	i2c_master_read(cmd, data, 2, I2C_MASTER_LAST_NACK); // reading value
	i2c_master_stop(cmd);
	i2c_master_cmd_begin(I2C_NUM_0, cmd, pdMS_TO_TICKS(1000));
	i2c_cmd_link_delete(cmd);




So far, i am able to read accurate battery voltage values (which is why i think i set up I2C correctly, I assume i would never get meaningful values if i hadn't)
The only issue is that my battery now charges at 0.1A instead of 1A 

Thanks people !

  • Hello, 

    Thank you for reaching out via E2E. Please see my comments below. 

    I2C communication to the built in ADC will not have any impact on charge current. Writes and reads to the ADC registers on the BQ25622 are not the cause of charge current changing from 1A to 0.5A to 0.1A. 

    There are various possible causes of charge current changing. The simplest would be changing the ICHG or IINDPM register setting, but charge current can also change due to a change in the load profile or excessive IC heating. 

    To debug further please help to provide greater details on your test setup. What are all register settings during the test? What are VBUS and VBAT voltages? What is current rating of the input source? What is expected load profile for the rest of the system? 

    Best Regards,

    Garrett 

  • Hello there, thanks for the reply

    Unfortunatly i'm quite new with I2C (and not an electronician) so i can't tell you much for now (English not being my mother language is not helping ahah)
    I can tell you that i only interact with the VBAT and the VBUS after enabling the ADC_Control via I2C. These are the only 3 register that i interact with

    VBAT readings are good, it corresponds to my battery current voltage 
    VBUS is arround 5.2V

    What do you mean by "load profile" ?

    Thanks again

    Best regards

  • Hello,

    Due to the U.S. holiday our responses will be delayed, sorry for the inconvenience.

    Sincerely,

    Wyatt Keller