Intermittent I2C Bus Hangs on Custom ESP32-S3 PCB (FireBeetle)
Oliver.Taylor 2026-01-17 13:32:25 3 Views0 Replies I’m working on an embedded project using the DFRobot FireBeetle ESP32 and experiencing intermittent I2C reliability issues. The setup involves an IMU and an environmental sensor on a custom PCB. While the breadboard prototype was stable, the PCB version randomly hangs after a few hours of operation, requiring a full power cycle to recover.
What I’ve checked so far:
Pull-ups: Using external 4.7k resistors on both SDA/SCL.
Clock Speed: Reduced from 400kHz to 100kHz, but the hang still occurs.
Continuity: All traces and solder joints are solid.
I suspect it might be a bus lockup (SDA held low) or subtle EMC noise on the PCB that wasn't present on the breadboard. Has anyone implemented a robust I2C bus recovery routine (clocking out the bus) for the ESP32 on this platform? Or are there known decoupling requirements for FireBeetle that I might have missed in my PCB layout?
I've followed these:
Github Issue (Arduino-ESP32): I2C Bus Lockup and Recovery Discussion
Adafruit Learning System: Working with Multiple I2C Devices
Espressif Documentation: Hardware Design Guidelines for ESP32-S3 (Check section: Power Supply and Analog Inputs).
DFRobot FireBeetle Wiki: FireBeetle ESP32-S3 Pinout & Power

