From a866f0d8f6cd7b0503f794b992a87a06abce8863 Mon Sep 17 00:00:00 2001 From: fuzhibo Date: Wed, 24 Mar 2021 16:09:52 +0800 Subject: [PATCH] fix: clear interrupt in touch sensor initialization --- components/esp32s2/sleep_modes.c | 4 ++++ components/soc/src/esp32/touch_sensor_hal.c | 2 ++ components/soc/src/esp32s2/touch_sensor_hal.c | 2 ++ 3 files changed, 8 insertions(+) diff --git a/components/esp32s2/sleep_modes.c b/components/esp32s2/sleep_modes.c index b68255db4a..f66c7dc56b 100644 --- a/components/esp32s2/sleep_modes.c +++ b/components/esp32s2/sleep_modes.c @@ -37,6 +37,9 @@ #include "hal/wdt_hal.h" #include "hal/clk_gate_ll.h" #include "driver/rtc_io.h" +#include "hal/touch_sensor_hal.h" +#include "driver/touch_sensor.h" +#include "driver/touch_sensor_common.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "sdkconfig.h" @@ -458,6 +461,7 @@ static void touch_wakeup_prepare(void) touch_pad_sleep_channel_t slp_config; touch_pad_fsm_stop(); touch_pad_clear_channel_mask(SOC_TOUCH_SENSOR_BIT_MASK_MAX); + touch_ll_intr_clear(TOUCH_PAD_INTR_MASK_ALL); // Clear state from previous wakeup touch_pad_sleep_channel_get_info(&slp_config); touch_pad_set_channel_mask(BIT(slp_config.touch_num)); touch_pad_fsm_start(); diff --git a/components/soc/src/esp32/touch_sensor_hal.c b/components/soc/src/esp32/touch_sensor_hal.c index 49ecdcff76..9cf3243ccb 100644 --- a/components/soc/src/esp32/touch_sensor_hal.c +++ b/components/soc/src/esp32/touch_sensor_hal.c @@ -19,7 +19,9 @@ void touch_hal_init(void) { + touch_ll_stop_fsm(); touch_ll_intr_disable(); + touch_ll_intr_clear(); touch_ll_clear_channel_mask(SOC_TOUCH_SENSOR_BIT_MASK_MAX); touch_ll_clear_group_mask(SOC_TOUCH_SENSOR_BIT_MASK_MAX, SOC_TOUCH_SENSOR_BIT_MASK_MAX); touch_ll_set_trigger_mode(TOUCH_TRIGGER_MODE_DEFAULT); diff --git a/components/soc/src/esp32s2/touch_sensor_hal.c b/components/soc/src/esp32s2/touch_sensor_hal.c index 094731890a..1687c4032d 100644 --- a/components/soc/src/esp32s2/touch_sensor_hal.c +++ b/components/soc/src/esp32s2/touch_sensor_hal.c @@ -19,7 +19,9 @@ void touch_hal_init(void) { + touch_ll_stop_fsm(); touch_ll_intr_disable(TOUCH_PAD_INTR_MASK_ALL); + touch_ll_intr_clear(TOUCH_PAD_INTR_MASK_ALL); touch_ll_clear_channel_mask(SOC_TOUCH_SENSOR_BIT_MASK_MAX); touch_ll_clear_trigger_status_mask(); touch_ll_set_meas_times(TOUCH_PAD_MEASURE_CYCLE_DEFAULT);