Implementation of the STMPE610 touch controller with esp_lcd_touch component.
Touch controller | Communication interface | Component name | Link to datasheet |
---|---|---|---|
STMPE610 | SPI[^1] | esp_lcd_touch_stmpe610 | DOC |
[^1]: NOTE: The STMPE610 controller can work via I2C too, but this feature is not implemented in this component!
Packages from this repository are uploaded to Espressif's component service.
You can add them to your project via idf.py add-dependancy
, e.g.
idf.py add-dependency esp_lcd_touch_stmpe610==1.0.0
Alternatively, you can create idf_component.yml
. More is in Espressif's documentation.
Initialization of the touch component.
esp_lcd_panel_io_handle_t tp_io_handle = NULL;
esp_lcd_panel_io_spi_config_t tp_io_config = ESP_LCD_TOUCH_IO_SPI_STMPE610_CONFIG(EXAMPLE_PIN_NUM_TOUCH_CS);
ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi((esp_lcd_spi_bus_handle_t)SPI2_HOST, &tp_io_config, &tp_io_handle));
esp_lcd_touch_config_t tp_cfg = {
.x_max = CONFIG_LCD_HRES,
.y_max = CONFIG_LCD_VRES,
.rst_gpio_num = -1,
.int_gpio_num = -1,
.flags = {
.swap_xy = 0,
.mirror_x = 0,
.mirror_y = 0,
},
};
ESP_LOGI(TAG, "Initialize touch controller STMPE610");
ESP_ERROR_CHECK(esp_lcd_touch_new_spi_stmpe610(tp_io_handle, &tp_cfg, &tp));
Read data from the touch controller and store it in RAM memory. It should be called regularly in poll.
esp_lcd_touch_read_data(tp);
Get one X and Y coordinates with strength of touch.
uint16_t touch_x[1];
uint16_t touch_y[1];
uint16_t touch_strength[1];
uint8_t touch_cnt = 0;
bool touchpad_pressed = esp_lcd_touch_get_coordinates(tp, touch_x, touch_y, touch_strength, &touch_cnt, 1);
Copy to Clipboard
idf.py add-dependency "espressif/esp_lcd_touch_stmpe610^1.0.5~1"
Copy to Clipboard
Copy to Clipboard