diff options
| author | Wind-stormger <storm-wind@foxmail.com> | 2022-07-24 17:15:35 +0800 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2022-12-14 13:46:41 +1100 |
| commit | 3a3739037d8110c771fcd451c59fb900fe8c710e (patch) | |
| tree | 41c5779458ec3d0d983ceae88a8bddc10484851f | |
| parent | 5608226cfd7b90bf9886dcf34eebb74e1a82a420 (diff) | |
esp32/machine_touchpad: Fix TouchPad for ESP32S2, ESP32S3.
| -rw-r--r-- | ports/esp32/machine_touchpad.c | 31 | ||||
| -rw-r--r-- | ports/esp32/modmachine.c | 2 |
2 files changed, 23 insertions, 10 deletions
diff --git a/ports/esp32/machine_touchpad.c b/ports/esp32/machine_touchpad.c index ad1f6c947..d9f4ef3eb 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" +#include "driver/gpio.h" -#if CONFIG_IDF_TARGET_ESP32 +#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 -#include "driver/gpio.h" #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 624e4d320..37d4f424d 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) }, |
