Merge branch 'docs/translate_sub_power_mode_docs' into 'master'

docs: Provide CN trans for sub power mode docs

Closes DOC-5972

See merge request espressif/esp-idf!25391
This commit is contained in:
Wang Zi Yan
2023-09-04 15:56:02 +08:00
2 changed files with 221 additions and 66 deletions
+125 -14
View File
@@ -21,7 +21,7 @@
睡眠节能模式
----------------------
在 Light-sleep 模式下,数字外设、CPU、以及大部分 RAM 都使用时钟门控,同时电电压降低。退出该模式后,数字外设、CPU 和 RAM 恢复运行,内部状态保持不变
在 Light-sleep 模式下,数字外设、CPU、以及大部分 RAM 都使用时钟门控,同时其供电电压降低。退出该模式后,数字外设、CPU 和 RAM 恢复运行,并且内部状态将被保留
在 Deep-sleep 模式下,CPU、大部分 RAM、以及所有由时钟 APB_CLK 驱动的数字外设都会被断电。芯片上继续处于供电状态的部分仅包括:
@@ -50,6 +50,117 @@
如需保持 Wi-Fi 连接,请启用 Wi-Fi Modem-sleep 模式和自动 Light-sleep 模式(请参阅 :doc:`电源管理 API <power_management>`)。在这两种模式下,Wi-Fi 驱动程序发出请求时,系统将自动从睡眠中被唤醒,从而保持与 AP 的连接。
.. only:: esp32s2 or esp32s3 or esp32c2 or esp32c3
子睡眠模式
^^^^^^^^^^^^^^^
下表首行表示子睡眠模式,首列表示不同模式支持的功能。在睡眠模式下,支持更多功能的模式功耗可能更大。睡眠系统会自动选择满足用户功能需求且功耗最小的模式。
Deep-sleep
.. list-table::
:widths: auto
:header-rows: 2
* -
- DSLP_ULTRA_LOW
- DSLP_DEFAULT
- DSLP_8MD256/
* -
-
-
- DSLP_ADC_TSENS
* - ULP/触摸传感器(仅限 ESP32-S2、ESP32-S3
- Y
- Y
- Y
* - RTC IO 输入/高温下 RTC 内存
-
- Y
- Y
* - ADC_TSEN_MONITOR
-
-
- Y
* - 8MD256 作为 RTC_SLOW_CLK 时钟源
-
-
- Y
功能:
1. RTC IO 输入/高温下 RTC 内存(试验功能):将 RTC IO 用作输入管脚,或在高温下使用 RTC 内存。禁用上述功能,芯片可进入超低功耗模式。由 API :cpp:func:`rtc_sleep_enable_ultra_low` 控制。
2. ADC_TSEN_MONITOR:在 monitor 模式下使用 ADC/温度传感器(由 ULP 控制),通过 :cpp:func:`ulp_adc_init` 或其更高级别的 API 启用。仅适用于支持 monitor 模式的 ESP32-S2 和 ESP32-S3 芯片。
3. 8MD256 作为 RTC_SLOW_CLK 时钟源:通过 ``CONFIG_RTC_CLK_SRC_INT_8MD256`` 选择 8MD256 作为 RTC_SLOW_CLK 时钟源时,芯片在 Deep-sleep 模式下将自动进入该子睡眠模式.
Light-sleep
.. list-table::
:widths: auto
:header-rows: 2
* -
- LSLP_DEFAULT
- LSLP_ADC_TSENS
- LSLP_8MD256
- LSLP_LEDC8M/
* -
-
-
-
- LSLP_XTAL_FPU
* - ULP/触摸传感器(仅限 ESP32-S2、ESP32-S3
- Y
- Y
- Y
- Y
* - RTC IO 输入/高温下 RTC 内存
- Y
- Y
- Y
- Y
* - ADC_TSEN_MONITOR
-
- Y
- Y
- Y
* - 8MD256 作为 RTC_SLOW_CLK 时钟源
-
-
- Y
- Y
* - 数字外设使用 8 MHz RC 时钟源
-
-
-
- Y
* - 保持 XTAL 时钟开启
-
-
-
- Y
功能:(了解 Deep-sleep 模式,请参考前文 8MD256 和 ADC_TSEN_MONITOR 功能描述)
1. 数字外设使用 8 MHz RC 时钟源:目前,只有 LEDC 在 Light-sleep 模式下使用该时钟源。当 LEDC 选用该时钟源时,此功能将自动启用。
2. 保持 XTAL 时钟开启:在 Light-sleep 模式下保持 XTAL 时钟开启,由 ``ESP_PD_DOMAIN_XTAL`` 电源域控制。
.. only:: esp32s2
{IDF_TARGET_NAME} 的 LSLP_8MD256、LSLP_LEDC8M 和 LSLP_XTAL_FPU 功能使用相同的功耗模式。
.. only:: esp32s3
{IDF_TARGET_NAME} 的默认模式现已支持 ADC_TSEN_MONITOR 功能。
.. only:: esp32c2 or esp32c3
{IDF_TARGET_NAME} 不支持 ADC_TSEN_MONITOR 和 LSLP_ADC_TSENS 功能。
.. _api-reference-wakeup-source:
唤醒源
@@ -62,7 +173,7 @@
定时器
^^^^^^^^
RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒芯片。时间精度为微秒,但其实际分辨率依赖于为 RTC SLOW_CLK 所选择的时钟源。
RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒芯片。时间精度为微秒,但其实际分辨率依赖于为 RTC_SLOW_CLK 所选择的时钟源。
.. only:: SOC_ULP_SUPPORTED
@@ -113,26 +224,26 @@ RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒
.. only:: esp32
- 当任意一个所选管脚为高电平时唤醒(ESP_EXT1_WAKEUP_ANY_HIGH)
- 当任意一个所选管脚为高电平时唤醒 (ESP_EXT1_WAKEUP_ANY_HIGH)
- 当所有所选管脚为低电平时唤醒 (ESP_EXT1_WAKEUP_ALL_LOW)
.. only:: esp32s2 or esp32s3 or esp32c6 or esp32h2
- 当任意一个所选管脚为高电平时唤醒(ESP_EXT1_WAKEUP_ANY_HIGH)
- 当任意一个所选管脚为低电平时唤醒(ESP_EXT1_WAKEUP_ANY_LOW)
- 当任意一个所选管脚为高电平时唤醒 (ESP_EXT1_WAKEUP_ANY_HIGH)
- 当任意一个所选管脚为低电平时唤醒 (ESP_EXT1_WAKEUP_ANY_LOW)
此唤醒源由 RTC 控制器实现。这种模式下的 RTC 外设和 RTC 内存可以被断电。然而,如果RTC外设被断电,如果我们不使用 HOLD 功能,内部上拉和下拉电阻将被禁用。想要使用内部上拉和下拉电阻,需要 RTC 外设电源域在睡眠期间保持开启,并在进入睡眠前使用函数 ``rtc_gpio_`` 配置上拉或下拉电阻
此唤醒源由 RTC 控制器实现。区别于 ``ext0`` 唤醒源,在 RTC 外设断电的情况下此唤醒源同样支持唤醒。虽然睡眠期间 RTC IO 所在的 RTC 外设电源域将会断电,但是 ESP-IDF 会自动在系统进入睡眠前锁定唤醒管脚的状态并在退出睡眠时解除锁定,所以仍然可为唤醒管脚配置内部上拉或下拉电阻::
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
gpio_pullup_dis(gpio_num);
gpio_pulldown_en(gpio_num);
如果我们关闭 ``RTC_PERIPH`` 域,我们将使用 HOLD 功能在睡眠期间维持脚上的上拉和下拉电阻。所选管脚的 HOLD 功能会在系统真正进入睡眠前被开启,这有助于进一步减小睡眠时的功耗
如果我们关闭 ``RTC_PERIPH`` 域,我们将使用 HOLD 功能在睡眠期间维持脚上的上拉和下拉电阻。所选管脚的 HOLD 功能会在系统真正进入睡眠前被开启,这有助于进一步减小睡眠时的功耗::
rtc_gpio_pullup_dis(gpio_num);
rtc_gpio_pulldown_en(gpio_num);
如果某些芯片缺少 ``RTC_PERIPH`` 域,我们只能使用 HOLD 功能来在睡眠期间维持脚上的上拉和下拉电阻
如果某些芯片缺少 ``RTC_PERIPH`` 域,我们只能使用 HOLD 功能来在睡眠期间维持脚上的上拉和下拉电阻::
gpio_pullup_dis(gpio_num);
gpio_pulldown_en(gpio_num);
@@ -218,7 +329,7 @@ RTC 外设和内存断电
.. only:: esp32
注意:在 ESP32 修订版 1 中,RTC 高速内存在 Deep-sleep 期间将总是保持使能,以保证复位后可运行 Deep-sleep stub。如果应用程序在 Deep-sleep 模式后无需复位,也可以对其进行修改。
注意:在 ESP32 修订版 1 中,RTC 高速内存在 Deep-sleep 期间将总是保持使能,以保证复位后可运行 Deep-sleep stub。如果应用程序在 Deep-sleep 模式后无需复位,也可以对其进行修改。
.. only:: SOC_RTC_SLOW_MEM_SUPPORTED
@@ -236,10 +347,10 @@ flash 断电
理论上讲,在 flash 完全断电后可以仅唤醒系统,然而现实情况是 flash 断电所需的时间很难预测。如果用户为 flash 供电电路添加了滤波电容,断电所需时间可能会更长。此外,即使可以预知 flash 彻底断电所需的时间,有时也不能通过设置足够长的睡眠时间来确保 flash 断电的安全(比如,突发的异步唤醒源会使得实际的睡眠时间不可控)。
.. warning::
如果在 flash 的供电电路上添加了滤波电容,那么应当尽一切可能避免 flash 断电。
因为这些不可控的因素,ESP-IDF 很难保证 flash 断电的绝对安全。因此 ESP-IDF 不推荐用户断电 flash。对于一些功耗敏感型应用,可以通过设置 Kconfig 配置项 :ref:`CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND` 来减少 light sleep 期间 flash 的功耗。这种方式在几乎所有场景下都要比断电 flash 更好,兼顾了安全性和功耗。
因为这些不可控的因素,ESP-IDF 很难保证 flash 断电的绝对安全。因此 ESP-IDF 不推荐用户断电 flash。对于一些功耗敏感型应用,可以通过设置 Kconfig 配置项 :ref:`CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND` 来减少 Light-sleep 期间 flash 的功耗。这种方式在几乎所有场景下都要比断电 flash 更好,兼顾了安全性和功耗。
.. only:: SOC_SPIRAM_SUPPORTED
@@ -256,7 +367,7 @@ flash 断电
.. list::
- Light sleep ESP-IDF 没有提供保证 flash 一定会被断电的机制。
- Light-sleep 模式下ESP-IDF 没有提供保证 flash 一定会被断电的机制。
- 不管用户的配置如何,函数 :cpp:func:`esp_deep_sleep_start` 都会强制断电 flash。
配置 IO(仅适用于 Deep-sleep
@@ -317,11 +428,11 @@ UART 输出处理
-------------------
- :example:`protocols/sntp`:如何实现 Deep-sleep 模式的基本功能,周期性唤醒 ESP 模块,以从 NTP 服务器获取时间。
- :example:`wifi/power_save`:如何实现 Wi-Fi Modem-sleep 模式。
- :example:`wifi/power_save`:如何通过 Wi-Fi Modem-sleep 模式和自动 Light-sleep 模式保持 Wi-Fi 连接
.. only:: SOC_BT_SUPPORTED
- :example:`bluetooth/nimble/power_save`:如何实现 Bluetooth Modem-sleep 模式。
- :example:`bluetooth/nimble/power_save`:如何通过 Bluetooth Modem-sleep 模式和自动 Light-sleep 模式保持 Bluetooth 连接
.. only:: SOC_ULP_SUPPORTED