diff --git a/ports/esp32/machine_touchpad.c b/ports/esp32/machine_touchpad.c index ad1f6c9474..d9f4ef3ebc 100644 --- a/ports/esp32/machine_touchpad.c +++ b/ports/esp32/machine_touchpad.c @@ -27,10 +27,10 @@ #include "py/runtime.h" #include "py/mphal.h" #include "modmachine.h" - -#if CONFIG_IDF_TARGET_ESP32 - #include "driver/gpio.h" + +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 + #if CONFIG_IDF_TARGET_ESP32 #include "driver/touch_pad.h" #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 @@ -43,8 +43,8 @@ typedef struct _mtp_obj_t { touch_pad_t touchpad_id; } mtp_obj_t; -#if CONFIG_IDF_TARGET_ESP32 STATIC const mtp_obj_t touchpad_obj[] = { + #if CONFIG_IDF_TARGET_ESP32 {{&machine_touchpad_type}, GPIO_NUM_4, TOUCH_PAD_NUM0}, {{&machine_touchpad_type}, GPIO_NUM_0, TOUCH_PAD_NUM1}, {{&machine_touchpad_type}, GPIO_NUM_2, TOUCH_PAD_NUM2}, @@ -55,9 +55,7 @@ STATIC const mtp_obj_t touchpad_obj[] = { {{&machine_touchpad_type}, GPIO_NUM_27, TOUCH_PAD_NUM7}, {{&machine_touchpad_type}, GPIO_NUM_33, TOUCH_PAD_NUM8}, {{&machine_touchpad_type}, GPIO_NUM_32, TOUCH_PAD_NUM9}, -}; -#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 -STATIC const mtp_obj_t touchpad_obj[] = { + #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 {{&machine_touchpad_type}, GPIO_NUM_1, TOUCH_PAD_NUM1}, {{&machine_touchpad_type}, GPIO_NUM_2, TOUCH_PAD_NUM2}, {{&machine_touchpad_type}, GPIO_NUM_3, TOUCH_PAD_NUM3}, @@ -72,12 +70,11 @@ STATIC const mtp_obj_t touchpad_obj[] = { {{&machine_touchpad_type}, GPIO_NUM_12, TOUCH_PAD_NUM12}, {{&machine_touchpad_type}, GPIO_NUM_13, TOUCH_PAD_NUM13}, {{&machine_touchpad_type}, GPIO_NUM_14, TOUCH_PAD_NUM14}, + #endif }; -#endif STATIC mp_obj_t mtp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { - mp_arg_check_num(n_args, n_kw, 1, 1, true); gpio_num_t pin_id = machine_pin_get_id(args[0]); const mtp_obj_t *self = NULL; @@ -95,9 +92,16 @@ STATIC mp_obj_t mtp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ if (!initialized) { touch_pad_init(); touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER); + #if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 + touch_pad_fsm_start(); + #endif initialized = 1; } + #if CONFIG_IDF_TARGET_ESP32 esp_err_t err = touch_pad_config(self->touchpad_id, 0); + #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 + esp_err_t err = touch_pad_config(self->touchpad_id); + #endif if (err == ESP_OK) { return MP_OBJ_FROM_PTR(self); } @@ -106,8 +110,12 @@ STATIC mp_obj_t mtp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_ STATIC mp_obj_t mtp_config(mp_obj_t self_in, mp_obj_t value_in) { mtp_obj_t *self = self_in; + #if CONFIG_IDF_TARGET_ESP32 uint16_t value = mp_obj_get_int(value_in); esp_err_t err = touch_pad_config(self->touchpad_id, value); + #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 + esp_err_t err = touch_pad_config(self->touchpad_id); + #endif if (err == ESP_OK) { return mp_const_none; } @@ -117,8 +125,13 @@ MP_DEFINE_CONST_FUN_OBJ_2(mtp_config_obj, mtp_config); STATIC mp_obj_t mtp_read(mp_obj_t self_in) { mtp_obj_t *self = self_in; + #if CONFIG_IDF_TARGET_ESP32 uint16_t value; esp_err_t err = touch_pad_read(self->touchpad_id, &value); + #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 + uint32_t value; + esp_err_t err = touch_pad_read_raw_data(self->touchpad_id, &value); + #endif if (err == ESP_OK) { return MP_OBJ_NEW_SMALL_INT(value); } @@ -142,4 +155,4 @@ MP_DEFINE_CONST_OBJ_TYPE( locals_dict, &mtp_locals_dict ); -#endif // CONFIG_IDF_TARGET_ESP32 +#endif diff --git a/ports/esp32/modmachine.c b/ports/esp32/modmachine.c index 624e4d3203..37d4f424d4 100644 --- a/ports/esp32/modmachine.c +++ b/ports/esp32/modmachine.c @@ -309,7 +309,7 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_DEEPSLEEP), MP_ROM_INT(MACHINE_WAKE_DEEPSLEEP) }, { MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&machine_pin_type) }, { MP_ROM_QSTR(MP_QSTR_Signal), MP_ROM_PTR(&machine_signal_type) }, - #if CONFIG_IDF_TARGET_ESP32 + #if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 { MP_ROM_QSTR(MP_QSTR_TouchPad), MP_ROM_PTR(&machine_touchpad_type) }, #endif { MP_ROM_QSTR(MP_QSTR_ADC), MP_ROM_PTR(&machine_adc_type) },