From e1d37a907d1544c774b0d17123f5bdfc93260a92 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 6 Mar 2026 23:35:20 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20ESP=20P4=20i2c=20pull=20up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/include/peripherals/i2c_bus.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/esp32/include/peripherals/i2c_bus.h b/esp32/include/peripherals/i2c_bus.h index 050a17a..3e31861 100644 --- a/esp32/include/peripherals/i2c_bus.h +++ b/esp32/include/peripherals/i2c_bus.h @@ -31,7 +31,11 @@ class I2CBus { bus_cfg.scl_io_num = scl; bus_cfg.clk_source = I2C_CLK_SRC_DEFAULT; bus_cfg.glitch_ignore_cnt = 7; +#if CONFIG_IDF_TARGET_ESP32P4 + bus_cfg.flags.enable_internal_pullup = false; +#else bus_cfg.flags.enable_internal_pullup = true; +#endif esp_err_t err = i2c_new_master_bus(&bus_cfg, &_bus); if (err != ESP_OK) { @@ -64,7 +68,7 @@ class I2CBus { if (!_initialized) return ESP_ERR_INVALID_STATE; esp_err_t err = ensureDevice(addr); if (err != ESP_OK) return err; - return i2c_master_transmit(_dev, data, len, pdMS_TO_TICKS(100)); + return i2c_master_transmit(_dev, data, len, pdMS_TO_TICKS(200)); } esp_err_t writeReg(uint8_t addr, uint8_t reg, const uint8_t* data, size_t len) { @@ -77,19 +81,19 @@ class I2CBus { if (len > 0 && data != nullptr) { memcpy(buf + 1, data, len); } - return i2c_master_transmit(_dev, buf, len + 1, pdMS_TO_TICKS(100)); + return i2c_master_transmit(_dev, buf, len + 1, pdMS_TO_TICKS(200)); } esp_err_t readReg(uint8_t addr, uint8_t reg, uint8_t* data, size_t len) { if (!_initialized) return ESP_ERR_INVALID_STATE; esp_err_t err = ensureDevice(addr); if (err != ESP_OK) return err; - return i2c_master_transmit_receive(_dev, ®, 1, data, len, pdMS_TO_TICKS(100)); + return i2c_master_transmit_receive(_dev, ®, 1, data, len, pdMS_TO_TICKS(200)); } bool probe(uint8_t addr) { if (!_initialized) return false; - return i2c_master_probe(_bus, addr, pdMS_TO_TICKS(50)) == ESP_OK; + return i2c_master_probe(_bus, addr, pdMS_TO_TICKS(200)) == ESP_OK; } std::vector scan(uint8_t lower = 1, uint8_t upper = 127) {