手贱,昨天收到了嘉立创最新的esp32 s3,想测试一下电流功耗,于是顺便测试了一下以前的合宙esp32 c3 无串口芯片的版本
打算对比一下c3和s3的功耗相差多少,结果把自己玩死了:
void setup() {esp_deep_sleep_start();// esp_light_sleep_start();
}void loop() {}
这个代码烧进c3后,电流只有200多微安:
但是出现了一个几乎无解的问题:
在电脑上不再出现com端口了
led灯也不亮了
断电重启后led闪一下就没啥状态了
没有发生短路,万用表测还能测出有些gpio 3.3和5V
在电脑上找不到com端口以为着重新烧写新的固件进去是不可能的。
长按rst和boot都找不到端口。。。
由于这是合宙便宜版本的c3,不带串口芯片,怀疑:
单片机一开机立马就进入了deep mode,把各种设备全部停了,要知道这块单片机由于没有串口芯片走的是mcu本身的串行支持,这一deep mode ,设备全停,所以没有了对外的串行支持,自然在电脑上没有了com端口。
大哭,各种尝试和找资料,包括合宙官方也没有这方面资料。
最后的解决方案很简单:
按住boot不放,然后按下rst 再释放,这时单片机led灯点亮,com端口重现。
这大概就是传说中的download模式。
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0x4 (DOWNLOAD(USB/UART0/1))
Saved PC:0x400462dc
waiting for download
在没有按rst断电后,哪怕烧入新固件,也不会运行,会持续处于这个状态。
有些文档对于深度随眠有错误的描述,什么没有设置唤醒就不生效,这是捡了半截就跑。在乐鑫官方描述如下:
函数 esp_deep_sleep_start() 可用于在配置唤醒源后进入 Deep-sleep 模式,也可用于在未配置唤醒源的情况下进入 Deep-sleep 模式 模式。在后一种情况中,芯片将一直处于睡眠模式,直到从外部被复位。
这是它说的这个复位只是是传统意义上的rst吧了。
有机会的话建议大家都玩玩,另外,esp32 c3的电流:
模式 | 电流 |
downloa模式 | 11 毫安 |
空代码 | 27 毫安 |
light mode | 576 微安 |
deep mode | 238 微安 |
delay | 19 毫安 |
上面统计中的delay 指如下代码:
void setup() {}void loop() {delay(20);
}
delay 的数值不影响电流的消耗,但是有delay的话,空代码的电流消耗从27降到了19 毫安。
整体来说,在这种测试的开发板上的电流消耗比我以为的高太多,因为过去他们的宣传在deep模式的情况下,可能只有几个微安,实际上有几百个微安,当然这可能涉及到其他元电源等器件。