瀏覽代碼

Merge branch 'bugfix/disable_touch_sleep_s3' into 'master'

touch_sensor: forbid from using touch sensor with sleep on ESP32-S3

Closes IDF-4810

See merge request espressif/esp-idf!17562
morris 3 年之前
父節點
當前提交
08a4cff6d5

+ 4 - 0
components/driver/esp32s3/touch_sensor.c

@@ -248,6 +248,10 @@ esp_err_t touch_pad_config(touch_pad_t touch_num)
 
 
 esp_err_t touch_pad_init(void)
 esp_err_t touch_pad_init(void)
 {
 {
+    //TODO: IDF-4813
+    extern bool esp_no_sleep;
+    esp_no_sleep = true;
+
     if (rtc_touch_mux == NULL) {
     if (rtc_touch_mux == NULL) {
         rtc_touch_mux = xSemaphoreCreateMutex();
         rtc_touch_mux = xSemaphoreCreateMutex();
     }
     }

+ 9 - 0
components/esp_hw_support/sleep_modes.c

@@ -360,8 +360,17 @@ inline static void IRAM_ATTR misc_modules_wake_prepare(void)
 
 
 inline static uint32_t call_rtc_sleep_start(uint32_t reject_triggers, uint32_t lslp_mem_inf_fpu);
 inline static uint32_t call_rtc_sleep_start(uint32_t reject_triggers, uint32_t lslp_mem_inf_fpu);
 
 
+//TODO: IDF-4813
+bool esp_no_sleep = false;
+
 static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
 static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
 {
 {
+#if CONFIG_IDF_TARGET_ESP32S3
+    if (esp_no_sleep) {
+        ESP_LOGE(TAG, "Sleep cannot be used with Touch/ULP for now.");
+        abort();
+    }
+#endif //CONFIG_IDF_TARGET_ESP32S3
     // Stop UART output so that output is not lost due to APB frequency change.
     // Stop UART output so that output is not lost due to APB frequency change.
     // For light sleep, suspend UART output — it will resume after wakeup.
     // For light sleep, suspend UART output — it will resume after wakeup.
     // For deep sleep, wait for the contents of UART FIFO to be sent.
     // For deep sleep, wait for the contents of UART FIFO to be sent.

+ 3 - 0
examples/system/deep_sleep/README.md

@@ -1,3 +1,6 @@
+| Supported Targets | ESP32 | ESP32-S2 | ESP32-C3 |
+| ----------------- | ----- | -------- | -------- |
+
 # Deep Sleep Example
 # Deep Sleep Example
 
 
 (See the README.md file in the upper level 'examples' directory for more information about examples.)
 (See the README.md file in the upper level 'examples' directory for more information about examples.)

+ 1 - 1
examples/system/deep_sleep/main/Kconfig.projbuild

@@ -3,7 +3,7 @@ menu "Example Configuration"
     config EXAMPLE_TOUCH_WAKEUP
     config EXAMPLE_TOUCH_WAKEUP
         bool "Enable touch wake up"
         bool "Enable touch wake up"
         default y
         default y
-        depends on !IDF_TARGET_ESP32C3
+        depends on !IDF_TARGET_ESP32C3 && !IDF_TARGET_ESP32S3
         help
         help
             This option enables wake up from deep sleep using touch pads
             This option enables wake up from deep sleep using touch pads
             TOUCH8 and TOUCH9, which correspond to GPIO33 and GPIO32.
             TOUCH8 and TOUCH9, which correspond to GPIO33 and GPIO32.