出去好奇用合宙家的 lot power 测了两块开发板的运行电流。
esp32 S3 (嘉立创开发板 8N8 版本)
模式 | 电流 |
downloa模式 | 49 毫安 |
空代码 | 91 毫安 |
light mode | 27 毫安 |
deep mode | 25 毫安 |
delay | 40 毫安 |
esp32 C3 无串口芯片 (合宙 9.9 元版本)
模式 | 电流 |
downloa模式 | 11 毫安 |
空代码 | 27 毫安 |
light mode | 576 微安 |
deep mode | 238 微安 |
delay | 19 毫安 |
空代码
void setup() {}void loop() {}
deep 模式对应的代码
void setup() {esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {// delay(20);
}
light 模式对应的代码
void setup() {
// esp_deep_sleep_start();
esp_light_sleep_start();
}
void loop() {// delay(20);
}
delay 模式对应的代码:
void setup() {
}void loop() {delay(20);
}
不科学的总结:
1,S3 整体比C3 电流高,当然两者的芯片本身就查询很大;
2,S3整体电流较高估计同串行通信芯片有关系;
3,C3 在deep 模式的时候有238微安,猜测主要同电源转换芯片有关系,不过没查datasheet.
4, 这个对比基本上可以作为大家日常设计esp 系列的整体电流参考,因为你设计的其他PCB中降压芯片和USB-TTL芯片基本都是不可缺少的,这基本上是标准配置。
5,嘉立创的S3 在某种情况下的deep mode 出现过500 微安,但是后来怎么折腾都没有重现了。
6,偷懒,其实应该还可以运行一段时间后进入睡眠模式来测试
重要提示: 测试睡眠模式,如果出现找不到端口的话,请先按下boot不放,再按rst并松开。
补充说明,为了确定 deep mode 到底有没有生效 ,通过以下代码测试:
#include <Arduino.h>
#include "driver/rtc_io.h"
#include "hal/rtc_io_hal.h"void setup() {Serial.begin(115200);
// Serial.println("begin ...")
Serial.println("pls wait 20 sec to watch ...");
delay(20000);
Serial.println("begin ...");
rtc_gpio_isolate(GPIO_NUM_12);
esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {// delay(20);
}
lot power显示的电流最初显示60 ma,大概在20秒 delay后只有1毫安了。这个结果同上面最初的测试不相符。
如果代码是:
// #include <Arduino.h>
// #include "driver/rtc_io.h"
// #include "hal/rtc_io_hal.h"void setup() {// Serial.begin(115200);
// // Serial.println("begin ...")
// Serial.println("pls wait 20 sec to watch ...");
// delay(20000);
// Serial.println("begin ...");
// rtc_gpio_isolate(GPIO_NUM_12);
esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {// delay(20);
}
电流显示是25毫安,但是偶发性会跳为1毫安左右,规律不知道。
如果代码是:
#include <Arduino.h>
#include "driver/rtc_io.h"
#include "hal/rtc_io_hal.h"void setup() {// Serial.begin(115200);
// // Serial.println("begin ...")
// Serial.println("pls wait 20 sec to watch ...");
delay(2000);
// Serial.println("begin ...");
rtc_gpio_isolate(GPIO_NUM_12);
esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {// delay(20);
}
电流会首先是60 毫安,然后在2秒后降到了25毫安;一个比较有趣的现象是如果USB线不接电脑,直接接电源,那么会25毫安,然后2秒左右降到了8毫安。
如果把delay的时间延长到10秒
#include <Arduino.h>
#include "driver/rtc_io.h"
#include "hal/rtc_io_hal.h"void setup() {// Serial.begin(115200);
// // Serial.println("begin ...")
// Serial.println("pls wait 20 sec to watch ...");
delay(10000);
// Serial.println("begin ...");
rtc_gpio_isolate(GPIO_NUM_12);
esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {// delay(20);
}
把usb线不接入电脑,直接接入电源,大约10秒后,lot power显示电流是1毫安左右,这一行为很稳定可以重现。
所以在这里怀疑是由于USB芯片和电脑有通信,产生了额外的电流,但是不明白那些额外的不稳定到底是为啥。
所有到最后的结论是S3 在deep模式下大概是1毫安的电流消耗,接入电脑的时候会由于不明的原因,例如usb通信,额外多20-40毫安的电流。