• Resolved

Linux: BQ27621 - how to enter sleep mode to reduce power consumption

Tool/software: Linux

Hi Experts,

I have question about how to let FG(BQ27621) into a power saving mode.

When FG is connected to battery that >2.45v, it will start to drain current from battery.

we measured 90uA vs 25uA battery drain, with FG, vs FG removed. 

We think we can reduce current consumption if we can let FG into sleep mode.

But how to achieve that?

1) What bit should I set ??

2) Need to set "EffectiveCurrent" ?? 

-- Here is my BQ27621 status ---

gauge test
openend I2C bus
FW_VERSION = 0x0105
DEV_TYPE = 0x0621

CMD_EffectiveCurrent = 63964 [mA] /* sometimes is 0369 [mA] */

CONTROL_STATUS = 0x0004

SUB_CMD_SET_HIBERNATE
CONTROL_STATUS = 0x0044

SUB_CMD_CLEAR_HIBERNATE
CONTROL_STATUS = 0x0004

Data Class 'State' (0x52):
43 33 00 09 79 1C 6B 09 79 0C 80 00 C8 00 32 00
14 03 E8 01 00 C8 10 04 00 0A 10 F9 FF F3 FF F7
00 19 01 2C 12 02 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Data Class 'State' (68):
14 00 03 08 98 00
closed I2C bus

==========================================

Here is my testing program flow:

printf("openend I2C bus\n\r");

gauge_address(pHandle, GAUGE_DEVICE_ADDRESS);
nResult = gauge_control(pHandle, SUB_CMD_FW_VERSION);
printf(" FW_VERSION = 0x%04X\n\r", nResult);

nResult = gauge_control(pHandle, SUB_CMD_DEV_TYPE);
printf(" DEV_TYPE = 0x%04X\n\r", nResult);

nResult = gauge_cmd_read(pHandle, CMD_EffectiveCurrent);
printf(" CMD_EffectiveCurrent = 0x%04X %04d [mA]\n\r", nResult,nResult);

nResult = gauge_control(pHandle, SUB_CMD_CONTROL_STATUS);
printf(" CONTROL_STATUS = 0x%04X\n\r", nResult);

sleep(2);
nResult = gauge_control(pHandle, SUB_CMD_SET_HIBERNATE);
printf(" SUB_CMD_SET_HIBERNATE = 0x%04X\n\r", nResult);

//-------------------------

sleep(2);
nResult = gauge_control(pHandle, SUB_CMD_CONTROL_STATUS);
printf(" CONTROL_STATUS = 0x%04X\n\r", nResult);
//-------------------------
sleep(2);
nResult = gauge_control(pHandle, SUB_CMD_CLEAR_HIBERNATE);
printf(" SUB_CMD_CLEAR_HIBERNATE = 0x%04X\n\r", nResult);
sleep(2);
nResult = gauge_control(pHandle, SUB_CMD_CONTROL_STATUS);
printf(" CONTROL_STATUS = 0x%04X\n\r", nResult);

//-------------------------

sleep(2);

//read data class DC_STATE:

n = gauge_read_data_class(pHandle, DC_STATE, pData, DC_STATE_LENGTH);
if(n) printf("Error reading data class, %d\n\r", n);
printf("Data Class 'State' (0x52):\n\r");
print_data(pData, DC_STATE_LENGTH);

//read data class 68:
n = gauge_read_data_class(pHandle, 68, pData, 6);
if(n) printf("Error reading data class, %d\n\r", n);
printf("Data Class 'State' (68):\n\r");
print_data(pData, 6);

gauge_exit(pHandle, SOFT_RESET);
close(i2c.nI2C);
printf("closed I2C bus\n\r");

==========================================

thanks

HB

  • Bye the way,

    Can we directly let BQ27621 into Shutdown mode by subcommand (SHUTDOWN_ENABLE: 0x001B) and (SHUTDOWN: 0x001C)?
    What happen if we set these two commands?
    and How to back to normal mode? (by toggle GPOUT??)
    In my experimental, after goes into shutdown mode, I cannot issue any command to BQ27621. Is this behavior/result correct?
    After issue SHUTDOWN_ENABLE(0x001B) and SHUTDOWN(0x001C) commands, we still measure LDO=1.8v.
    But according to sluuad4c.pdf, in SHUTDOWN mode, the LDO is disabled so internal power and all RAM-based volatile data is lost.
    Why do we still have LDO voltage output in shutdown mode?
    How to let BQ27621 enter shutdown mode correctly?

    HB
  • In reply to hb chen:

    Hi,

    Which SoC is this? Which SDK version?

    Best Regards,
    Yordan

     


     Please make sure you read the forum guidelines first.

  • In reply to Yordan Kovachev:

    Hi Yordan,

    Not using TI SOC or SDK.
    It normal embedded Linux system.
    Finally I can enter shutdown mode by below commands based on TI'S gauge lib (slua801.pdf).

    gauge_control(pHandle, SUB_CMD_SHUTDOWN_ENABLE);
    gauge_control(pHandle, SUB_CMD_SHUTDOWN);

    It will save power consumption.
    toggle GPOUT will let BQ27621 back to normal mode.

    thanks

    HB