soc: added SOC_TOUCH_SENSE_SUPPORTED macro

This commit is contained in:
morris
2022-07-21 13:42:25 +08:00
parent 5dbae0c2cd
commit 741b031e83
28 changed files with 61 additions and 99 deletions

View File

@@ -84,28 +84,22 @@ if(CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2)
list(APPEND srcs "spi_slave_hd.c") list(APPEND srcs "spi_slave_hd.c")
endif() endif()
if(CONFIG_SOC_TOUCH_SENSOR_SUPPORTED)
list(APPEND srcs "touch_sensor_common.c" "${target}/touch_sensor.c")
endif()
if(${target} STREQUAL "esp32") if(${target} STREQUAL "esp32")
list(APPEND srcs "dac_common.c" list(APPEND srcs "dac_common.c"
"sdio_slave.c" "sdio_slave.c"
"touch_sensor_common.c"
"esp32/touch_sensor.c"
"deprecated/adc_i2s_deprecated.c" "deprecated/adc_i2s_deprecated.c"
"esp32/dac.c") "esp32/dac.c")
endif() endif()
if(${target} STREQUAL "esp32s2") if(${target} STREQUAL "esp32s2")
list(APPEND srcs "dac_common.c" list(APPEND srcs "dac_common.c"
"touch_sensor_common.c"
"esp32s2/touch_sensor.c"
"esp32s2/dac.c") "esp32s2/dac.c")
endif() endif()
if(${target} STREQUAL "esp32s3")
list(APPEND srcs "touch_sensor_common.c"
"esp32s3/touch_sensor.c")
endif()
if(BOOTLOADER_BUILD) if(BOOTLOADER_BUILD)
# Bootloader shall NOT depend on the drivers # Bootloader shall NOT depend on the drivers
idf_component_register() idf_component_register()

View File

@@ -6,4 +6,8 @@
#pragma once #pragma once
#include "soc/soc_caps.h"
#if SOC_TOUCH_SENSOR_SUPPORTED
#include "driver/touch_sensor.h" #include "driver/touch_sensor.h"
#endif

View File

@@ -129,8 +129,7 @@ esp_err_t esp_sleep_enable_ulp_wakeup(void);
*/ */
esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us); esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us);
#if SOC_TOUCH_SENSOR_NUM > 0 #if SOC_TOUCH_SENSOR_SUPPORTED
/** /**
* @brief Enable wakeup by touch sensor * @brief Enable wakeup by touch sensor
* *
@@ -157,8 +156,7 @@ esp_err_t esp_sleep_enable_touchpad_wakeup(void);
* @return touch pad which caused wakeup * @return touch pad which caused wakeup
*/ */
touch_pad_t esp_sleep_get_touchpad_wakeup_status(void); touch_pad_t esp_sleep_get_touchpad_wakeup_status(void);
#endif // SOC_TOUCH_SENSOR_SUPPORTED
#endif // SOC_TOUCH_SENSOR_NUM > 0
/** /**
* @brief Returns true if a GPIO number is valid for use as wakeup source. * @brief Returns true if a GPIO number is valid for use as wakeup source.
@@ -360,7 +358,7 @@ uint64_t esp_sleep_get_gpio_wakeup_status(void);
* - ESP_ERR_INVALID_ARG if either of the arguments is out of range * - ESP_ERR_INVALID_ARG if either of the arguments is out of range
*/ */
esp_err_t esp_sleep_pd_config(esp_sleep_pd_domain_t domain, esp_err_t esp_sleep_pd_config(esp_sleep_pd_domain_t domain,
esp_sleep_pd_option_t option); esp_sleep_pd_option_t option);
/** /**
* @brief Enter deep sleep with the configured wakeup options * @brief Enter deep sleep with the configured wakeup options

View File

@@ -32,7 +32,7 @@
#include "hal/wdt_hal.h" #include "hal/wdt_hal.h"
#include "hal/rtc_hal.h" #include "hal/rtc_hal.h"
#include "hal/uart_hal.h" #include "hal/uart_hal.h"
#if SOC_TOUCH_SENSOR_NUM > 0 #if SOC_TOUCH_SENSOR_SUPPORTED
#include "hal/touch_sensor_hal.h" #include "hal/touch_sensor_hal.h"
#include "driver/touch_sensor.h" #include "driver/touch_sensor.h"
#include "driver/touch_sensor_common.h" #include "driver/touch_sensor_common.h"
@@ -899,7 +899,7 @@ static void touch_wakeup_prepare(void)
} }
#endif #endif
#if SOC_TOUCH_SENSOR_NUM > 0 #if SOC_TOUCH_SENSOR_SUPPORTED
esp_err_t esp_sleep_enable_touchpad_wakeup(void) esp_err_t esp_sleep_enable_touchpad_wakeup(void)
{ {
@@ -926,7 +926,7 @@ touch_pad_t esp_sleep_get_touchpad_wakeup_status(void)
return (ret == ESP_OK) ? pad_num : TOUCH_PAD_MAX; return (ret == ESP_OK) ? pad_num : TOUCH_PAD_MAX;
} }
#endif // SOC_TOUCH_SENSOR_NUM > 0 #endif // SOC_TOUCH_SENSOR_SUPPORTED
bool esp_sleep_is_valid_wakeup_gpio(gpio_num_t gpio_num) bool esp_sleep_is_valid_wakeup_gpio(gpio_num_t gpio_num)
{ {

View File

@@ -119,6 +119,10 @@ config SOC_SECURE_BOOT_SUPPORTED
bool bool
default y default y
config SOC_TOUCH_SENSOR_SUPPORTED
bool
default y
config SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL config SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL
int int
default 5 default 5

View File

@@ -89,6 +89,7 @@
#define SOC_SHA_SUPPORTED 1 #define SOC_SHA_SUPPORTED 1
#define SOC_FLASH_ENC_SUPPORTED 1 #define SOC_FLASH_ENC_SUPPORTED 1
#define SOC_SECURE_BOOT_SUPPORTED 1 #define SOC_SECURE_BOOT_SUPPORTED 1
#define SOC_TOUCH_SENSOR_SUPPORTED 1
#if SOC_CAPS_ECO_VER < 2 #if SOC_CAPS_ECO_VER < 2
#define SOC_DPORT_WORKAROUND 1 #define SOC_DPORT_WORKAROUND 1

View File

@@ -1,21 +1,13 @@
// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD /*
// * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
// Licensed under the Apache License, Version 2.0 (the "License"); *
// you may not use this file except in compliance with the License. * SPDX-License-Identifier: Apache-2.0
// You may obtain a copy of the License at */
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "soc/touch_sensor_periph.h" #include "soc/touch_sensor_periph.h"
/* Store IO number corresponding to the Touch Sensor channel number. */ /* Store IO number corresponding to the Touch Sensor channel number. */
const int touch_sensor_channel_io_map[SOC_TOUCH_SENSOR_NUM] = { const int touch_sensor_channel_io_map[] = {
TOUCH_PAD_NUM0_GPIO_NUM, TOUCH_PAD_NUM0_GPIO_NUM,
TOUCH_PAD_NUM1_GPIO_NUM, TOUCH_PAD_NUM1_GPIO_NUM,
TOUCH_PAD_NUM2_GPIO_NUM, TOUCH_PAD_NUM2_GPIO_NUM,

View File

@@ -447,10 +447,6 @@ config SOC_TIMER_GROUP_TOTAL_TIMERS
int int
default 1 default 1
config SOC_TOUCH_SENSOR_NUM
int
default 0
config SOC_SECURE_BOOT_V2_ECC config SOC_SECURE_BOOT_V2_ECC
bool bool
default y default y

View File

@@ -220,9 +220,6 @@
#define SOC_TIMER_GROUP_SUPPORT_PLL_F40M (1) #define SOC_TIMER_GROUP_SUPPORT_PLL_F40M (1)
#define SOC_TIMER_GROUP_TOTAL_TIMERS (1U) #define SOC_TIMER_GROUP_TOTAL_TIMERS (1U)
/*-------------------------- TOUCH SENSOR CAPS -------------------------------*/
#define SOC_TOUCH_SENSOR_NUM (0U) /*! No touch sensors on ESP32-C2 */
/*-------------------------- Secure Boot CAPS----------------------------*/ /*-------------------------- Secure Boot CAPS----------------------------*/
#define SOC_SECURE_BOOT_V2_ECC 1 #define SOC_SECURE_BOOT_V2_ECC 1
#define SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS (1U) #define SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS (1U)

View File

@@ -659,10 +659,6 @@ config SOC_TIMER_GROUP_TOTAL_TIMERS
int int
default 2 default 2
config SOC_TOUCH_SENSOR_NUM
bool
default n
config SOC_TWAI_BRP_MIN config SOC_TWAI_BRP_MIN
int int
default 2 default 2

View File

@@ -305,9 +305,6 @@
#define SOC_TIMER_GROUP_SUPPORT_APB (1) #define SOC_TIMER_GROUP_SUPPORT_APB (1)
#define SOC_TIMER_GROUP_TOTAL_TIMERS (2) #define SOC_TIMER_GROUP_TOTAL_TIMERS (2)
/*-------------------------- TOUCH SENSOR CAPS -------------------------------*/
#define SOC_TOUCH_SENSOR_NUM (0) /*! No touch sensors on ESP32-C3 */
/*-------------------------- TWAI CAPS ---------------------------------------*/ /*-------------------------- TWAI CAPS ---------------------------------------*/
#define SOC_TWAI_BRP_MIN 2 #define SOC_TWAI_BRP_MIN 2
#define SOC_TWAI_BRP_MAX 16384 #define SOC_TWAI_BRP_MAX 16384

View File

@@ -635,10 +635,6 @@ config SOC_TIMER_GROUP_TOTAL_TIMERS
int int
default 2 default 2
config SOC_TOUCH_SENSOR_NUM
bool
default n
config SOC_TWAI_BRP_MIN config SOC_TWAI_BRP_MIN
int int
default 2 default 2

View File

@@ -310,9 +310,6 @@
#define SOC_TIMER_GROUP_SUPPORT_AHB (1) #define SOC_TIMER_GROUP_SUPPORT_AHB (1)
#define SOC_TIMER_GROUP_TOTAL_TIMERS (2) #define SOC_TIMER_GROUP_TOTAL_TIMERS (2)
/*-------------------------- TOUCH SENSOR CAPS -------------------------------*/
#define SOC_TOUCH_SENSOR_NUM (0) /*! No touch sensors on ESP32-H2 */
/*-------------------------- TWAI CAPS ---------------------------------------*/ /*-------------------------- TWAI CAPS ---------------------------------------*/
#define SOC_TWAI_BRP_MIN 2 #define SOC_TWAI_BRP_MIN 2
#define SOC_TWAI_BRP_MAX 16384 #define SOC_TWAI_BRP_MAX 16384

View File

@@ -135,6 +135,10 @@ config SOC_MEMPROT_SUPPORTED
bool bool
default y default y
config SOC_TOUCH_SENSOR_SUPPORTED
bool
default y
config SOC_ADC_RTC_CTRL_SUPPORTED config SOC_ADC_RTC_CTRL_SUPPORTED
bool bool
default y default y

View File

@@ -72,6 +72,7 @@
#define SOC_FLASH_ENC_SUPPORTED 1 #define SOC_FLASH_ENC_SUPPORTED 1
#define SOC_SECURE_BOOT_SUPPORTED 1 #define SOC_SECURE_BOOT_SUPPORTED 1
#define SOC_MEMPROT_SUPPORTED 1 #define SOC_MEMPROT_SUPPORTED 1
#define SOC_TOUCH_SENSOR_SUPPORTED 1
/*-------------------------- ADC CAPS ----------------------------------------*/ /*-------------------------- ADC CAPS ----------------------------------------*/

View File

@@ -1,22 +1,14 @@
// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD /*
// * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
// Licensed under the Apache License, Version 2.0 (the "License"); *
// you may not use this file except in compliance with the License. * SPDX-License-Identifier: Apache-2.0
// You may obtain a copy of the License at */
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "soc/touch_sensor_periph.h" #include "soc/touch_sensor_periph.h"
/* Store IO number corresponding to the Touch Sensor channel number. */ /* Store IO number corresponding to the Touch Sensor channel number. */
/* Note: T0 is an internal channel that does not have a corresponding external GPIO. */ /* Note: T0 is an internal channel that does not have a corresponding external GPIO. */
const int touch_sensor_channel_io_map[SOC_TOUCH_SENSOR_NUM] = { const int touch_sensor_channel_io_map[] = {
-1, -1,
TOUCH_PAD_NUM1_GPIO_NUM, TOUCH_PAD_NUM1_GPIO_NUM,
TOUCH_PAD_NUM2_GPIO_NUM, TOUCH_PAD_NUM2_GPIO_NUM,

View File

@@ -191,6 +191,10 @@ config SOC_MEMPROT_SUPPORTED
bool bool
default y default y
config SOC_TOUCH_SENSOR_SUPPORTED
bool
default y
config SOC_APPCPU_HAS_CLOCK_GATING_BUG config SOC_APPCPU_HAS_CLOCK_GATING_BUG
bool bool
default y default y

View File

@@ -62,7 +62,7 @@
#define SOC_FLASH_ENC_SUPPORTED 1 #define SOC_FLASH_ENC_SUPPORTED 1
#define SOC_SECURE_BOOT_SUPPORTED 1 #define SOC_SECURE_BOOT_SUPPORTED 1
#define SOC_MEMPROT_SUPPORTED 1 #define SOC_MEMPROT_SUPPORTED 1
#define SOC_TOUCH_SENSOR_SUPPORTED 1
/*-------------------------- SOC CAPS ----------------------------------------*/ /*-------------------------- SOC CAPS ----------------------------------------*/
#define SOC_APPCPU_HAS_CLOCK_GATING_BUG (1) #define SOC_APPCPU_HAS_CLOCK_GATING_BUG (1)

View File

@@ -8,7 +8,7 @@
/* Store IO number corresponding to the Touch Sensor channel number. */ /* Store IO number corresponding to the Touch Sensor channel number. */
/* Note: T0 is an internal channel that does not have a corresponding external GPIO. */ /* Note: T0 is an internal channel that does not have a corresponding external GPIO. */
const int touch_sensor_channel_io_map[SOC_TOUCH_SENSOR_NUM] = { const int touch_sensor_channel_io_map[] = {
-1, -1,
TOUCH_PAD_NUM1_GPIO_NUM, TOUCH_PAD_NUM1_GPIO_NUM,
TOUCH_PAD_NUM2_GPIO_NUM, TOUCH_PAD_NUM2_GPIO_NUM,

View File

@@ -1,16 +1,8 @@
// Copyright 2019 Espressif Systems (Shanghai) PTE LTD /*
// * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
// Licensed under the Apache License, Version 2.0 (the "License"); *
// you may not use this file except in compliance with the License. * SPDX-License-Identifier: Apache-2.0
// You may obtain a copy of the License at */
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once #pragma once
@@ -28,7 +20,7 @@
extern "C" { extern "C" {
#endif #endif
extern const int touch_sensor_channel_io_map[SOC_TOUCH_SENSOR_NUM]; extern const int touch_sensor_channel_io_map[];
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -156,7 +156,7 @@ conditional_include_dict = {'SOC_BT_SUPPORTED':BT_DOCS,
'SOC_PCNT_SUPPORTED':PCNT_DOCS, 'SOC_PCNT_SUPPORTED':PCNT_DOCS,
'SOC_RMT_SUPPORTED':RMT_DOCS, 'SOC_RMT_SUPPORTED':RMT_DOCS,
'SOC_DAC_SUPPORTED':DAC_DOCS, 'SOC_DAC_SUPPORTED':DAC_DOCS,
'SOC_TOUCH_SENSOR_NUM':TOUCH_SENSOR_DOCS, 'SOC_TOUCH_SENSOR_SUPPORTED':TOUCH_SENSOR_DOCS,
'SOC_ULP_SUPPORTED':ULP_DOCS, 'SOC_ULP_SUPPORTED':ULP_DOCS,
'SOC_RISCV_COPROC_SUPPORTED':RISCV_COPROC_DOCS, 'SOC_RISCV_COPROC_SUPPORTED':RISCV_COPROC_DOCS,
'SOC_DIG_SIGN_SUPPORTED':['api-reference/peripherals/ds.rst'], 'SOC_DIG_SIGN_SUPPORTED':['api-reference/peripherals/ds.rst'],

View File

@@ -33,7 +33,7 @@ Peripherals API
:esp32: secure_element :esp32: secure_element
:esp32s2: spi_slave_hd :esp32s2: spi_slave_hd
:SOC_TEMP_SENSOR_SUPPORTED: temp_sensor :SOC_TEMP_SENSOR_SUPPORTED: temp_sensor
:SOC_TOUCH_SENSOR_NUM: touch_pad :SOC_TOUCH_SENSOR_SUPPORTED: touch_pad
:esp32s2: touch_element :esp32s2: touch_element
:SOC_TWAI_SUPPORTED: twai :SOC_TWAI_SUPPORTED: twai
uart uart

View File

@@ -181,7 +181,7 @@ So, in theory, it's ok if you only wake up the system after the flash is complet
Therefore, it's recommended not to power down flash when using ESP-IDF. For power-sensitive applications, it's recommended to use Kconfig option :ref:`CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND` to reduce the power consumption of the flash during light sleep, instead of powering down the flash. Therefore, it's recommended not to power down flash when using ESP-IDF. For power-sensitive applications, it's recommended to use Kconfig option :ref:`CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND` to reduce the power consumption of the flash during light sleep, instead of powering down the flash.
.. only:: SOC_SPIRAM_SUPPORTED .. only:: SOC_SPIRAM_SUPPORTED
It is worth mentioning that PSRAM has a similar Kconfig option :ref:`CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND`. It is worth mentioning that PSRAM has a similar Kconfig option :ref:`CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND`.
However, for those who have fully understood the risk and are still willing to power down the flash to further reduce the power consumption, please check the following mechanisms: However, for those who have fully understood the risk and are still willing to power down the flash to further reduce the power consumption, please check the following mechanisms:
@@ -243,7 +243,7 @@ Checking Sleep Wakeup Cause
:cpp:func:`esp_sleep_get_wakeup_cause` function can be used to check which wakeup source has triggered wakeup from sleep mode. :cpp:func:`esp_sleep_get_wakeup_cause` function can be used to check which wakeup source has triggered wakeup from sleep mode.
.. only:: SOC_TOUCH_SENSOR_NUM .. only:: SOC_TOUCH_SENSOR_SUPPORTED
For touchpad, it is possible to identify which touch pin has caused wakeup using :cpp:func:`esp_sleep_get_touchpad_wakeup_status` functions. For touchpad, it is possible to identify which touch pin has caused wakeup using :cpp:func:`esp_sleep_get_touchpad_wakeup_status` functions.

View File

@@ -33,7 +33,7 @@
:esp32: secure_element :esp32: secure_element
:esp32s2: spi_slave_hd :esp32s2: spi_slave_hd
:SOC_TEMP_SENSOR_SUPPORTED: temp_sensor :SOC_TEMP_SENSOR_SUPPORTED: temp_sensor
:SOC_TOUCH_SENSOR_NUM: touch_pad :SOC_TOUCH_SENSOR_SUPPORTED: touch_pad
:esp32s2: touch_element :esp32s2: touch_element
:SOC_TWAI_SUPPORTED: twai :SOC_TWAI_SUPPORTED: twai
uart uart

View File

@@ -67,7 +67,7 @@ RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒
RTC IO 模块中包含这样一个逻辑——当发生触摸传感器中断时,触发唤醒。要启用此唤醒源,用户需要在芯片进入睡眠模式前配置触摸传感器中断功能。 RTC IO 模块中包含这样一个逻辑——当发生触摸传感器中断时,触发唤醒。要启用此唤醒源,用户需要在芯片进入睡眠模式前配置触摸传感器中断功能。
.. only:: esp32 .. only:: esp32
ESP32 修订版 0 和 1 仅在 RTC 外设没有被强制供电时支持该唤醒源(即 ESP_PD_DOMAIN_RTC_PERIPH 应被设置为 ESP_PD_OPTION_AUTO ESP32 修订版 0 和 1 仅在 RTC 外设没有被强制供电时支持该唤醒源(即 ESP_PD_DOMAIN_RTC_PERIPH 应被设置为 ESP_PD_OPTION_AUTO
可调用 :cpp:func:`esp_sleep_enable_touchpad_wakeup` 函数来启用该唤醒源。 可调用 :cpp:func:`esp_sleep_enable_touchpad_wakeup` 函数来启用该唤醒源。
@@ -78,7 +78,7 @@ RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒
^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
RTC IO 模块中包含这样一个逻辑——当某个 RTC GPIO 被设置为预定义的逻辑值时触发唤醒。RTC IO 是 RTC 外设电源域的一部分因此如果该唤醒源被请求RTC 外设将在 Deep-sleep 模式期间保持供电。 RTC IO 模块中包含这样一个逻辑——当某个 RTC GPIO 被设置为预定义的逻辑值时触发唤醒。RTC IO 是 RTC 外设电源域的一部分因此如果该唤醒源被请求RTC 外设将在 Deep-sleep 模式期间保持供电。
在此模式下RTC IO 模块被使能,因此也可以使用内部上拉或下拉电阻。配置时,应用程序需要在调用函数 :cpp:func:`esp_deep_sleep_start` 前先调用函数 :cpp:func:`rtc_gpio_pullup_en`:cpp:func:`rtc_gpio_pulldown_en` 在此模式下RTC IO 模块被使能,因此也可以使用内部上拉或下拉电阻。配置时,应用程序需要在调用函数 :cpp:func:`esp_deep_sleep_start` 前先调用函数 :cpp:func:`rtc_gpio_pullup_en`:cpp:func:`rtc_gpio_pulldown_en`
.. only:: esp32 .. only:: esp32
@@ -115,7 +115,7 @@ RTC 控制器中内嵌定时器,可用于在预定义的时间到达后唤醒
当芯片处于睡眠模式时ULP 协处理器仍然运行,可用于轮询传感器、监视 ADC 或触摸传感器的值并在检测到特殊事件时唤醒芯片。ULP 协处理器是 RTC 外设电源域的一部分,运行存储在 RTC 低速内存中的程序。如果这一唤醒源被请求RTC 低速内存将会在睡眠期间保持供电状态。RTC 外设会在 ULP 协处理器开始运行程序前自动上电一旦程序停止运行RTC 外设会再次自动断电。 当芯片处于睡眠模式时ULP 协处理器仍然运行,可用于轮询传感器、监视 ADC 或触摸传感器的值并在检测到特殊事件时唤醒芯片。ULP 协处理器是 RTC 外设电源域的一部分,运行存储在 RTC 低速内存中的程序。如果这一唤醒源被请求RTC 低速内存将会在睡眠期间保持供电状态。RTC 外设会在 ULP 协处理器开始运行程序前自动上电一旦程序停止运行RTC 外设会再次自动断电。
.. only:: esp32 .. only:: esp32
ESP32 修订版 0 和 1 仅在 RTC 外设没有被强制供电时支持该唤醒(即 ESP_PD_DOMAIN_RTC_PERIPH 应被设置为 ESP_PD_OPTION_AUTO ESP32 修订版 0 和 1 仅在 RTC 外设没有被强制供电时支持该唤醒(即 ESP_PD_DOMAIN_RTC_PERIPH 应被设置为 ESP_PD_OPTION_AUTO
可调用 :cpp:func:`esp_sleep_enable_ulp_wakeup` 函数来启用此唤醒源。 可调用 :cpp:func:`esp_sleep_enable_ulp_wakeup` 函数来启用此唤醒源。
@@ -179,7 +179,7 @@ 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 .. only:: SOC_SPIRAM_SUPPORTED
值得一提的是PSRAM 也有一个类似的 Kconfig 配置项 :ref:`CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND` 值得一提的是PSRAM 也有一个类似的 Kconfig 配置项 :ref:`CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND`
考虑到有些用户能够充分评估断电 flash 的风险,并希望通过断电 flash 来获得更低的功耗,因此 ESP-IDF 提供了两种断电 flash 的机制: 考虑到有些用户能够充分评估断电 flash 的风险,并希望通过断电 flash 来获得更低的功耗,因此 ESP-IDF 提供了两种断电 flash 的机制:
@@ -224,7 +224,7 @@ Flash 断电
.. only:: esp32c3 .. only:: esp32c3
在 Deep-sleep 模式中: 在 Deep-sleep 模式中:
- 数字 GPIO (GPIO6 ~ 21) 处于高阻态。 - 数字 GPIO (GPIO6 ~ 21) 处于高阻态。
- RTC GPIO (GPIO0 ~ 5) 可能处于以下状态: - RTC GPIO (GPIO0 ~ 5) 可能处于以下状态:
- 如果未启用保持 (hold) 功能RTC GPIO 将处于高阻态。 - 如果未启用保持 (hold) 功能RTC GPIO 将处于高阻态。
- 如果启用保持功能RTC GPIO 管脚将会在保持功能开启时处于锁存状态。 - 如果启用保持功能RTC GPIO 管脚将会在保持功能开启时处于锁存状态。
@@ -241,7 +241,7 @@ UART 输出处理
:cpp:func:`esp_sleep_get_wakeup_cause` 函数可用于检测是何种唤醒源在睡眠期间被触发。 :cpp:func:`esp_sleep_get_wakeup_cause` 函数可用于检测是何种唤醒源在睡眠期间被触发。
.. only:: SOC_TOUCH_SENSOR_NUM .. only:: SOC_TOUCH_SENSOR_SUPPORTED
对于触摸传感器唤醒源,可以调用函数 :cpp:func:`esp_sleep_get_touchpad_wakeup_status` 来确认触发唤醒的触摸管脚。 对于触摸传感器唤醒源,可以调用函数 :cpp:func:`esp_sleep_get_touchpad_wakeup_status` 来确认触发唤醒的触摸管脚。

View File

@@ -166,7 +166,7 @@ examples/peripherals/temp_sensor:
examples/peripherals/touch_sensor: examples/peripherals/touch_sensor:
disable: disable:
- if: SOC_TOUCH_SENSOR_NUM == 0 - if: SOC_TOUCH_SENSOR_SUPPORTED != 1
examples/peripherals/touch_sensor/touch_element: examples/peripherals/touch_sensor/touch_element:
enable: enable:

View File

@@ -21,7 +21,7 @@
#include "driver/rtc_io.h" #include "driver/rtc_io.h"
#include "soc/rtc.h" #include "soc/rtc.h"
#if SOC_TOUCH_SENSOR_NUM > 0 #if SOC_TOUCH_SENSOR_SUPPORTED
#include "soc/sens_periph.h" #include "soc/sens_periph.h"
#include "driver/touch_pad.h" #include "driver/touch_pad.h"
#endif #endif

View File

@@ -1055,7 +1055,6 @@ components/soc/esp32/ledc_periph.c
components/soc/esp32/sdio_slave_periph.c components/soc/esp32/sdio_slave_periph.c
components/soc/esp32/sdmmc_periph.c components/soc/esp32/sdmmc_periph.c
components/soc/esp32/spi_periph.c components/soc/esp32/spi_periph.c
components/soc/esp32/touch_sensor_periph.c
components/soc/esp32/uart_periph.c components/soc/esp32/uart_periph.c
components/soc/esp32c3/i2c_bbpll.h components/soc/esp32c3/i2c_bbpll.h
components/soc/esp32c3/i2c_periph.c components/soc/esp32c3/i2c_periph.c
@@ -1218,7 +1217,6 @@ components/soc/esp32s2/include/soc/wdev_reg.h
components/soc/esp32s2/interrupts.c components/soc/esp32s2/interrupts.c
components/soc/esp32s2/ledc_periph.c components/soc/esp32s2/ledc_periph.c
components/soc/esp32s2/spi_periph.c components/soc/esp32s2/spi_periph.c
components/soc/esp32s2/touch_sensor_periph.c
components/soc/esp32s2/uart_periph.c components/soc/esp32s2/uart_periph.c
components/soc/esp32s2/usb_periph.c components/soc/esp32s2/usb_periph.c
components/soc/esp32s3/dedic_gpio_periph.c components/soc/esp32s3/dedic_gpio_periph.c
@@ -1326,7 +1324,6 @@ components/soc/include/soc/sdmmc_periph.h
components/soc/include/soc/sens_periph.h components/soc/include/soc/sens_periph.h
components/soc/include/soc/spi_periph.h components/soc/include/soc/spi_periph.h
components/soc/include/soc/syscon_periph.h components/soc/include/soc/syscon_periph.h
components/soc/include/soc/touch_sensor_periph.h
components/soc/include/soc/twai_periph.h components/soc/include/soc/twai_periph.h
components/soc/include/soc/uart_periph.h components/soc/include/soc/uart_periph.h
components/soc/include/soc/uhci_periph.h components/soc/include/soc/uhci_periph.h