3
3
#include <esp32_smartdisplay.h>
4
4
#include <esp_touch_xpt2046.h>
5
5
#include <driver/spi_master.h>
6
+ #include <driver/spi_common_internal.h>
6
7
7
8
void xpt2046_lvgl_touch_cb (lv_indev_t * indev , lv_indev_data_t * data )
8
9
{
@@ -33,14 +34,16 @@ lv_indev_t *lvgl_touch_init()
33
34
log_v ("indev:0x%08x" , indev );
34
35
35
36
// 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
+ }
44
47
45
48
// Attach the touch controller to the SPI bus
46
49
const esp_lcd_panel_io_spi_config_t io_spi_config = {
@@ -83,4 +86,4 @@ lv_indev_t *lvgl_touch_init()
83
86
return indev ;
84
87
}
85
88
86
- #endif
89
+ #endif
0 commit comments