cancel
Showing results for 
Search instead for 
Did you mean: 

BQ25120 SYSout voltage return to default value after a few sec of configuration via I2c

IPang
Associate II

BQ25120 SYSout voltage return to default value after a few sec of configuration via I2c.

Observation: The SYSout voltage won't drop if we constantly read the system register(0x06) valuevia I2c

Here is our register configuration.

#define BQ25120_SLAVE_ADDR        0x6A
#define BQ25120_BTTN_REG          0x08
#define BQ25120_SYS_REG           0x06
#define BQ25120_LDO_REG           0x07
#define BQ25120_FAST_CHRG_REG     0x03
#define BQ25120_PRECHRG_REG       0x04
#define BQ25120_BATTV_CTRL_REG    0x05
#define BQ25120_ILIM_CTRL_REG     0x09
 
    /* configure BQ25120 register */
    /*Push-button Control Register, 1st wake up event at 600ms, 2nd wakeup event at 1.5s*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, bttn_config, sizeof(bttn_config), false);
    APP_ERROR_CHECK(err_code);
    /*SYS VOUT control Register, Range 1.8V~3.3V, SYS output at 3V*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, sysv_config, sizeof(sysv_config), false);
    APP_ERROR_CHECK(err_code);
    /*Load Switch and LDO control Register, Range 1.8V~3.3V, SYS output at 3V*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, ldo_config1, sizeof(ldo_config1), false);
    APP_ERROR_CHECK(err_code); 
    /*Load Switch and LDO control Register, Range 1.8V~3.3V, SYS output at 3V*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, ldo_config2, sizeof(ldo_config2), false);
    APP_ERROR_CHECK(err_code); 
    /*Fast Charging current control Register, Iset pin connects to 2.49kohm resistor for 80mA charging current*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, fast_chrg_config, sizeof(fast_chrg_config), false);
    APP_ERROR_CHECK(err_code); 
    /*Pre-charge current control Register, 10% pre-charge/termination current (8mA)*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, prechrg_config, sizeof(prechrg_config), false);
    APP_ERROR_CHECK(err_code); 
    /*Battery Voltage Control Register, Charging voltage 4.2V (default)*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, batt_vol_config, sizeof(batt_vol_config), false);
    APP_ERROR_CHECK(err_code); 
    /*Input current and voltage protection control Register, Input current 200mA, UVLO 3.0V*/
    err_code = nrf_drv_twi_tx(&m_twi1, BQ25120_SLAVE_ADDR, ilim_config, sizeof(ilim_config), false);
    APP_ERROR_CHECK(err_code); 
}

2 REPLIES 2
IPang
Associate II

Hi There,

I missing one more information, we pull up pin NCD pin all time high.

After we write all the register, we have read and verify all the register value. All are the value we written into the register.

IPang
Associate II

Sorry, wrong post. Please ignore this question.