您好!
我有一款电池供电的低功耗应用。 在器件空闲模式下、电流消耗约为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; }