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.

[参考译文] Linux:BQ27621 -如何进入睡眠模式以降低功耗

Guru**** 2582405 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/619248/linux-bq27621---how-to-enter-sleep-mode-to-reduce-power-consumption

工具/软件:Linux

各位专家:

我对如何让 FG (BQ27621)进入节能模式有疑问。

当 FG 连接 至大于2.45v 的电池时,它将开始消耗电池的电流。

我们测量了90uA 与25uA 的电池耗电、移除了 FG 与 FG。  

我们认为、如果我们可以让 FG 进入睡眠模式、我们可以降低电流消耗。

但如何实现这一点呢?

1) 1)我应该设置什么位??

2) 2)需要设置"有效电流"??  

这是我的 BQ27621状态--

测量仪表测试
开放 I2C 总线
FW_VERSION = 0x0105
DEV_TYPE = 0x0621

CMD_EffectiveCurrent = 63964 [mA]/*有时为0369 [mA]*/

CONTRAL_STATUS = 0x0004

SUB_CMD_SET_HIBERNATE
CONTRAL_STATUS = 0x0044

SUB_CMD_CLEAR_HIBERNATE
CONTRAL_STATUS = 0x0004

数据类"状态"(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 00 00 00 00

数据类"状态"(68):
14 00 03 08 98 00
已关闭 I2C 总线

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

下面是我的测试程序流程:

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

监测计_address (pHandle、监测计_DEVICE_ADDRESS);
nresult = gauge 控制(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\n、结果、nresult);

nresult = gauge 控制(pHandle、sub_CMD_CONTRAL_STATUS);
printf (" control_status = 0x%04X\n\r"、nresult");

睡眠(2);
nresult = gauge 控制(pHandle、sub_CMD_SET_HIBERNATE);
printf (" sub_CMD_SET_HIBERNATE = 0x%04X\n\r\n、nRESULT);

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

睡眠(2);
nresult = gauge 控制(pHandle、sub_CMD_CONTRAL_STATUS);
printf (" control_status = 0x%04X\n\r"、nresult");
///------------------
睡眠(2);
nresult = gauge 控制(pHandle、sub_CMD_CLEAR_HIBERNATE);
printf (" sub_CMD_CLEAR_HIBERNATE = 0x%04X\n\r\n、nRESULT);
睡眠(2);
nresult = gauge 控制(pHandle、sub_CMD_CONTRAL_STATUS);
printf (" control_status = 0x%04X\n\r"、nresult");

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

睡眠(2);

//读取数据类 DC_State:

N = gauge 读取数据类(pHandle、DC_State、pData、DC_State_length);
if (n) printf ("读取数据类时出错、%d\n\r"、n);
printf ("数据类状态"(0x52):\n\n"r);
print_data (pData、DC_State_length);

//读取数据类68:
N = gauge 读取数据类(pHandle、68、pData、6);
if (n) printf ("读取数据类时出错、%d\n\r"、n);
printf ("数据类状态"(68):\n\n"r);
print_data (pData、6);

监测计_EXIT (pHandle、SOFT_RESET);
close (i2c.nI2C);
printf ("closed I2C bus\n"r);

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

谢谢

Hb

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再见、

    我们能否通过子命令(SHUTDOWN_ENABLE:0x001B)和(SHUTDOWN:0x001C)直接让 BQ27621进入关断模式?
    如果我们设置这两个命令会发生什么情况?
    以及如何返回正常模式? (通过切换 GPOUT??)
    在我的实验中、进入关断模式后、我无法向 BQ27621发出任何命令。 此行为/结果是否正确?
    发出 SHUTDOWN_ENABLE (0x001B)和 SHUTDOWN (0x001C)命令后、我们仍然测量 LDO=1.8V。
    但是、根据 sluad4c.pdf、在关断模式下、LDO 被禁用、因此内部电源和所有基于 RAM 的易失性数据都将丢失。
    为什么我们仍在关断模式下提供 LDO 电压输出?
    如何让 BQ27621正确进入关断模式?

    Hb
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这是哪个 SoC? 哪个 SDK 版本?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!

    不使用 TI SOC 或 SDK。
    它是普通的嵌入式 Linux 系统。
    最后、我可以根据 TI 的监测计库(slua801.pdf)通过以下命令进入关断模式。

    监测计_control (pHandle、sub_CMD_SHUTDOWN_ENABLE);
    监测计_control (pHandle、sub_CMD_SHUTDOWN);

    它将节省功耗。
    切换 GPOUT 将使 BQ27621返回正常模式。

    谢谢

    Hb