您好!
我有一款电池供电的低功耗应用。 在器件空闲模式下、电流消耗约为40uA。 我正在运行一个测试序列、其中我:
打开系统电源->(等待3秒->启用2个 LP55231的 LED 序列->等待3秒->通过将 EN 引脚设置为低电平来禁用 LP55231 ->等待3秒)->重复
下面是我的功率测量结果的屏幕截图。 我分为3个部分:
a:在启动时在 lp55231上启用 LED 序列之前小于3秒。 (左侧40uA)
B:3秒 LED 正在运行(3.72mA AV)
C:将 LP55231 EN 引脚设置为低电平(94uA AV)后3秒

我的期望是、当将 EN 设置为低电平时、两个 LP55231都应进入待机模式并具有~200nA 的电流消耗、但我看到另一个 54 μ A。 我确信这一额外电流的来源是 LP55231。 如果我只保留固件的所有其他部分、只需注释启用 LED 的函数、我永远不会看到电流增加为54uA。
有没有想到为什么会发生这种情况? 除了将 EN 引脚设置为低电平外、我还需要做什么其他吗?
下面是一些代码摘录和原理图:

/*******************************************************************************
* @fn LedTest
*
* @brief Test the LED
*
* @return None
******************************************************************************/
static void LedTest(void)
{
led_Init();
// led_test();
k_sleep(K_MSEC(3000));
while (true)
{
led_run(LED_PROGRAM_AWAIT_PILL_DISPENSE);
k_sleep(K_MSEC(3000));
led_stop();
k_sleep(K_MSEC(3000));
}
}
bool led_stop(void)
{
if(lp55231_Disable() == false)
{
LOG_ERR("Failed to disable mother device");
return false;
}
return true;
}
bool lp55231_Disable(void)
{
if (!device_is_ready(led_enable.port))
{
LOG_ERR("LED Enable GPIO device is not ready\r\n");
return false;
}
int32_t err = gpio_pin_configure_dt(&led_enable, GPIO_OUTPUT_ACTIVE);
if (err < 0)
{
return false;
}
err = gpio_pin_set_dt(&led_enable, 0);
if (err < 0)
{
return false;
}
return true;
}




