手賤,昨天收到了嘉立創最新的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模式的情況下,可能只有幾個微安,實際上有幾百個微安,當然這可能涉及到其他元電源等器件。