0
\$\begingroup\$

I'm working on a design that uses a watchdog, temp humidity sensors, and an ADC, all on an I2C bus.

We spent the day trying to debug why, after about 20 minutes, the I2C bus signals failed, and all the data became corrupted.

We have tried changes to the pull-up resistors, 2.1 kΩ, 4.7 kΩ, and 10 kΩ, and checked the addresses. Yet each time we think we are making progress, after about 20 minutes, the readings go from good signals to a saw tooth wave. I've never seen anything like this before. A hardware reset doesn't fix the issue; only a full power cycle, and then it works again.

Does anyone recommend what we can try next to find the root cause?

Good data from I2C bus (with 10 kΩ pull-ups): Working 12c Bus with 10k Pull Ups

Bad data after 20 minutes from the I2C bus: After 20 minutes saw tooth wave

Close-up of working I2C bus waveforms (with 2.1 kΩ pull-ups): Close-up working waveform of the clock and the data races with 2.1 kΩ

Bad data sawtooth closeup: Close-up of broken saw tooth waveform for data and clock

I2C sensors schematic: I2C Sensors Schematic

This is the sensors and how they are wired; everything works; we can read from the ADS, HDC, and Watchdog/RTC to get data and set values. Then, randomly, it crashes, and we have no idea why. We can't tell if it's something with the ESP32-S3 or the PCBA hardware.

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

The ADC is missing power supplies.

You can fix the schematics and order new PCBs. Or fix the PCB with hobby knife and jumper wires.

Or replace the incorrectly connected caps with short circuits for a quick fix.

\$\endgroup\$
3
  • \$\begingroup\$ I see; C63 is wrong; I can jump that to VCC. But that shouldn't crash the i2C bus like this. We can get readings from the ADC and set up alerts over i2c with it. SO would that be the root cause of the i2C bus crashing? \$\endgroup\$
    – Jiggly
    Commented Feb 14 at 15:35
  • \$\begingroup\$ @Jiggly No, both chip supplies are unconnected, not just C63. Of course the problem is having no supplies on chip, it can't work properly without. It is a surprise it works at all. What likely happens is that the capacitors are charged through internal IO protection diodes of IO pins that are pulled high through resistors, such as the I2C bus and other pins that have pull-ups. \$\endgroup\$
    – Justme
    Commented Feb 14 at 15:53
  • \$\begingroup\$ Thanks, I added a 0-ohm resistor on C45, and the i2C bus is working reliably again; 10 hours of testing, and it looks stable. I see what you're saying about the internal diode; that makes sense. It's still crazy that it works for 20 -30 minutes before crashing. \$\endgroup\$
    – Jiggly
    Commented Feb 15 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.