@@ -79,6 +79,9 @@ esp_err_t bsp_i2c_init(void)
7979 .sda_io_num = BSP_I2C_SDA ,
8080 .scl_io_num = BSP_I2C_SCL ,
8181 .i2c_port = BSP_I2C_NUM ,
82+ .glitch_ignore_cnt = 7 ,
83+ .flags .enable_internal_pullup = true,
84+ .trans_queue_depth = 0 ,
8285 };
8386 BSP_ERROR_CHECK_RETURN_ERR (i2c_new_master_bus (& i2c_bus_conf , & i2c_handle ));
8487
@@ -99,6 +102,11 @@ i2c_master_bus_handle_t bsp_i2c_get_handle(void)
99102 return i2c_handle ;
100103}
101104
105+ static esp_err_t bsp_i2c_device_probe (uint8_t addr )
106+ {
107+ return i2c_master_probe (i2c_handle , addr , 100 );
108+ }
109+
102110esp_err_t bsp_sdcard_mount (void )
103111{
104112 const esp_vfs_fat_sdmmc_mount_config_t mount_config = {
@@ -507,7 +515,20 @@ esp_err_t bsp_touch_new(const bsp_touch_config_t *config, esp_lcd_touch_handle_t
507515 },
508516 };
509517 esp_lcd_panel_io_handle_t tp_io_handle = NULL ;
510- esp_lcd_panel_io_i2c_config_t tp_io_config = ESP_LCD_TOUCH_IO_I2C_GT911_CONFIG ();
518+ esp_lcd_panel_io_i2c_config_t tp_io_config ;
519+ if (ESP_OK == bsp_i2c_device_probe (ESP_LCD_TOUCH_IO_I2C_GT911_ADDRESS )) {
520+ ESP_LOGI (TAG , "Touch 0x5d found" );
521+ esp_lcd_panel_io_i2c_config_t config = ESP_LCD_TOUCH_IO_I2C_GT911_CONFIG ();
522+ memcpy (& tp_io_config , & config , sizeof (config ));
523+ } else if (ESP_OK == bsp_i2c_device_probe (ESP_LCD_TOUCH_IO_I2C_GT911_ADDRESS_BACKUP )) {
524+ ESP_LOGI (TAG , "Touch 0x14 found" );
525+ esp_lcd_panel_io_i2c_config_t config = ESP_LCD_TOUCH_IO_I2C_GT911_CONFIG ();
526+ config .dev_addr = ESP_LCD_TOUCH_IO_I2C_GT911_ADDRESS_BACKUP ;
527+ memcpy (& tp_io_config , & config , sizeof (config ));
528+ } else {
529+ ESP_LOGE (TAG , "Touch not found" );
530+ return ESP_ERR_NOT_FOUND ;
531+ }
511532 tp_io_config .scl_speed_hz = CONFIG_BSP_I2C_CLK_SPEED_HZ ;
512533 ESP_RETURN_ON_ERROR (esp_lcd_new_panel_io_i2c (i2c_handle , & tp_io_config , & tp_io_handle ), TAG , "" );
513534 return esp_lcd_touch_new_i2c_gt911 (tp_io_handle , & tp_cfg , ret_touch );
0 commit comments