Skip to content

Commit 3cb5514

Browse files
authored
Update lvgl_touch_xpt2046_spi.c (#228)
1 parent 5e0221f commit 3cb5514

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/lvgl_touch_xpt2046_spi.c

+12-9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <esp32_smartdisplay.h>
44
#include <esp_touch_xpt2046.h>
55
#include <driver/spi_master.h>
6+
#include <driver/spi_common_internal.h>
67

78
void xpt2046_lvgl_touch_cb(lv_indev_t *indev, lv_indev_data_t *data)
89
{
@@ -33,14 +34,16 @@ lv_indev_t *lvgl_touch_init()
3334
log_v("indev:0x%08x", indev);
3435

3536
// Create SPI bus only if not already initialized (S035R shares the SPI bus)
36-
const spi_bus_config_t spi_bus_config = {
37-
.mosi_io_num = XPT2046_SPI_BUS_MOSI_IO_NUM,
38-
.miso_io_num = XPT2046_SPI_BUS_MISO_IO_NUM,
39-
.sclk_io_num = XPT2046_SPI_BUS_SCLK_IO_NUM,
40-
.quadwp_io_num = XPT2046_SPI_BUS_QUADWP_IO_NUM,
41-
.quadhd_io_num = XPT2046_SPI_BUS_QUADHD_IO_NUM};
42-
log_d("spi_bus_config: mosi_io_num:%d, miso_io_num:%d, sclk_io_num:%d, quadwp_io_num:%d, quadhd_io_num:%d, max_transfer_sz:%d, flags:0x%08x, intr_flags:0x%04x", spi_bus_config.mosi_io_num, spi_bus_config.miso_io_num, spi_bus_config.sclk_io_num, spi_bus_config.quadwp_io_num, spi_bus_config.quadhd_io_num, spi_bus_config.max_transfer_sz, spi_bus_config.flags, spi_bus_config.intr_flags);
43-
ESP_ERROR_CHECK_WITHOUT_ABORT(spi_bus_initialize(XPT2046_SPI_HOST, &spi_bus_config, XPT2046_SPI_DMA_CHANNEL));
37+
if(spi_bus_get_attr(XPT2046_SPI_HOST) == NULL) {
38+
const spi_bus_config_t spi_bus_config = {
39+
.mosi_io_num = XPT2046_SPI_BUS_MOSI,
40+
.miso_io_num = XPT2046_SPI_BUS_MISO,
41+
.sclk_io_num = XPT2046_SPI_BUS_SCLK,
42+
.quadwp_io_num = XPT2046_SPI_BUS_QUADWP,
43+
.quadhd_io_num = XPT2046_SPI_BUS_QUADHD};
44+
log_d("spi_bus_config: mosi_io_num:%d, miso_io_num:%d, sclk_io_num:%d, quadwp_io_num:%d, quadhd_io_num:%d, max_transfer_sz:%d, flags:0x%08x, intr_flags:0x%04x", spi_bus_config.mosi_io_num, spi_bus_config.miso_io_num, spi_bus_config.sclk_io_num, spi_bus_config.quadwp_io_num, spi_bus_config.quadhd_io_num, spi_bus_config.max_transfer_sz, spi_bus_config.flags, spi_bus_config.intr_flags);
45+
ESP_ERROR_CHECK_WITHOUT_ABORT(spi_bus_initialize(XPT2046_SPI_HOST, &spi_bus_config, XPT2046_SPI_DMA_CHANNEL));
46+
}
4447

4548
// Attach the touch controller to the SPI bus
4649
const esp_lcd_panel_io_spi_config_t io_spi_config = {
@@ -83,4 +86,4 @@ lv_indev_t *lvgl_touch_init()
8386
return indev;
8487
}
8588

86-
#endif
89+
#endif

0 commit comments

Comments
 (0)