Przeglądaj źródła

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

This is not supported yet.
Michael (XIAO Xufeng) 3 lat temu
rodzic
commit
a84faa3cef

+ 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)
 {
+    //TODO: IDF-4813
+    extern bool esp_no_sleep;
+    esp_no_sleep = true;
+
     if (rtc_touch_mux == NULL) {
         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 IRAM_ATTR 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)
 {
+#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.
     // For light sleep, suspend UART output — it will resume after wakeup.
     // 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
 
 (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
         bool "Enable touch wake up"
         default y
-        depends on !IDF_TARGET_ESP32C3
+        depends on !IDF_TARGET_ESP32C3 && !IDF_TARGET_ESP32S3
         help
             This option enables wake up from deep sleep using touch pads
             TOUCH8 and TOUCH9, which correspond to GPIO33 and GPIO32.