低功耗
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ESP32]]
&color(red){※This article is based on esp-idf 4.2.1};
#contents
* 概要 [#d4811ba9]
ESP32做低功耗不是一个好的选择
#codeprettify{{
https://www.icxbk.com/ask/detail/20819.html
https://diyprojects.io/esp32-arduino-code-for-deep-sleep...
}}
* 5种功耗模式 [#n2b4566b]
Active 模式、Modem-sleep 模式、Light-sleep 模式、Deep-sle...
除了Active模式外其他四种模式都属于低功耗模式,按照顺序越...
&ref(ESP32_powersave1.png);
** Deep Sleep [#b767262e]
- deep sleep睡眠时 CPU 与 SRAM 均掉电,唤醒后 CPU 需要重...
- 连接是一个双方验证的过程,超时断开后连接信息会废弃,保...
* 唤醒源 [#of2949a8]
|唤醒源|Light-Sleep|Deep-sleep|休眠|h
|EXT0|Y|Y|-|
|EXT1|Y|Y|Y|
|GPIO|Y|Y|-|
|RTC计时器|Y|Y|Y|
|SDIO|Y|-|-|
|Wi-Fi|Y|-|-|
|UART0|Y|-|-|
|UART1|Y|-|-|
|TOUCH|Y|Y|-|
|ULP协处理器|Y|Y|-|
|BT|Y|-|-|
API
||Method|Modem-Sleep|Light-Sleep|Deep-Sleep|Hibernate|h
|Timer|esp_sleep_enable_timer_wakeup()|✓|✓|✓|✓|
|Touch|esp_sleep_enable_touchpad_wakeup()|✓|✓|✓||
|Ext0 or Ext1|esp_sleep_enable_ext0_wakeup() &br;esp_slee...
|GPIO|esp_sleep_enable_gpio_wakeup()|✓|✓|||
|UART|esp_sleep_enable_uart_wakeup()|✓|✓|||
|ULP|esp_sleep_enable_ulp_wakeup()|✓|✓|✓||
** EXT0/1唤醒源 [#j124ee7c]
只能使用以下几个GPIO
- GPIO_0
- GPIO_2
- GPIO_4
- GPIO_12
- GPIO_13
- GPIO_14
- GPIO_15
- GPIO_25
- GPIO_26
- GPIO_27
- GPIO_32
- GPIO_33
- GPIO_34
- GPIO_35
** 例程 [#i962ed1d]
#codeprettify{{
EXT0唤醒
void app_main()
{
switch(esp_sleep_get_wakeup_cause())
{
case ESP_SLEEP_WAKEUP_EXT0:
printf("wake up.........\n");
break;
case ESP_SLEEP_WAKEUP_UNDEFINED:
default:
printf("not sleep...............\n");
break;
}
//第一个参数:RTCIO的编号
//第二个参数:是高电平唤醒还是低电平唤醒
esp_sleep_enable_ext0_wakeup(34,0);
esp_deep_sleep_start();
}
EXT1唤醒
void app_main()
{
switch(esp_speep_get_wakeup_cause())
{
case ESP_SLEEP_WAKEUP_EXT1:
printf("wake up.........\n");
break;
case ESP_SLEEP_WAKEUP_UNDEFINED:
default:
printf("not sleep...............\n");
break;
}
uint64_t mask;
mask = 1ull << 34;
//第一个参数:mask位,如果引脚为34 则mask = 1ull<<34
//第二个参数:是高电平唤醒还是低电平唤醒
esp_sleep_enable_ext1_wakeup(mask,0);
esp_deep_sleep_start();
}
}}
#hr();
コメント:
#comment_kcaptcha
終了行:
[[ESP32]]
&color(red){※This article is based on esp-idf 4.2.1};
#contents
* 概要 [#d4811ba9]
ESP32做低功耗不是一个好的选择
#codeprettify{{
https://www.icxbk.com/ask/detail/20819.html
https://diyprojects.io/esp32-arduino-code-for-deep-sleep...
}}
* 5种功耗模式 [#n2b4566b]
Active 模式、Modem-sleep 模式、Light-sleep 模式、Deep-sle...
除了Active模式外其他四种模式都属于低功耗模式,按照顺序越...
&ref(ESP32_powersave1.png);
** Deep Sleep [#b767262e]
- deep sleep睡眠时 CPU 与 SRAM 均掉电,唤醒后 CPU 需要重...
- 连接是一个双方验证的过程,超时断开后连接信息会废弃,保...
* 唤醒源 [#of2949a8]
|唤醒源|Light-Sleep|Deep-sleep|休眠|h
|EXT0|Y|Y|-|
|EXT1|Y|Y|Y|
|GPIO|Y|Y|-|
|RTC计时器|Y|Y|Y|
|SDIO|Y|-|-|
|Wi-Fi|Y|-|-|
|UART0|Y|-|-|
|UART1|Y|-|-|
|TOUCH|Y|Y|-|
|ULP协处理器|Y|Y|-|
|BT|Y|-|-|
API
||Method|Modem-Sleep|Light-Sleep|Deep-Sleep|Hibernate|h
|Timer|esp_sleep_enable_timer_wakeup()|✓|✓|✓|✓|
|Touch|esp_sleep_enable_touchpad_wakeup()|✓|✓|✓||
|Ext0 or Ext1|esp_sleep_enable_ext0_wakeup() &br;esp_slee...
|GPIO|esp_sleep_enable_gpio_wakeup()|✓|✓|||
|UART|esp_sleep_enable_uart_wakeup()|✓|✓|||
|ULP|esp_sleep_enable_ulp_wakeup()|✓|✓|✓||
** EXT0/1唤醒源 [#j124ee7c]
只能使用以下几个GPIO
- GPIO_0
- GPIO_2
- GPIO_4
- GPIO_12
- GPIO_13
- GPIO_14
- GPIO_15
- GPIO_25
- GPIO_26
- GPIO_27
- GPIO_32
- GPIO_33
- GPIO_34
- GPIO_35
** 例程 [#i962ed1d]
#codeprettify{{
EXT0唤醒
void app_main()
{
switch(esp_sleep_get_wakeup_cause())
{
case ESP_SLEEP_WAKEUP_EXT0:
printf("wake up.........\n");
break;
case ESP_SLEEP_WAKEUP_UNDEFINED:
default:
printf("not sleep...............\n");
break;
}
//第一个参数:RTCIO的编号
//第二个参数:是高电平唤醒还是低电平唤醒
esp_sleep_enable_ext0_wakeup(34,0);
esp_deep_sleep_start();
}
EXT1唤醒
void app_main()
{
switch(esp_speep_get_wakeup_cause())
{
case ESP_SLEEP_WAKEUP_EXT1:
printf("wake up.........\n");
break;
case ESP_SLEEP_WAKEUP_UNDEFINED:
default:
printf("not sleep...............\n");
break;
}
uint64_t mask;
mask = 1ull << 34;
//第一个参数:mask位,如果引脚为34 则mask = 1ull<<34
//第二个参数:是高电平唤醒还是低电平唤醒
esp_sleep_enable_ext1_wakeup(mask,0);
esp_deep_sleep_start();
}
}}
#hr();
コメント:
#comment_kcaptcha
ページ名: