The I2C bus can hang up.
"If the data line (SDA) is stuck LOW, the master should send nine clock pulses.The device that held the bus LOW should release it sometime within those nine clocks.If not, then use the HW reset or cycle power to clear the bus. The master I2C must be
able to generate this “bus clear” sequence."
https://www.analog.com/media/en/technic ... N686_0.pdf
There's also a general call reset for I2C, but I'm less familiar with this.
If hardware reset is not possible or troublesome, a power switch or mosfet can be added to control the power to the I2C peripheral, allowing it to be reset by the ESP32. Although, finding the root cause of the hang up is more optimal of course. If power control is added, be sure to watch for voltage drops on your power line when it is turned on; the inrush of current to fill the capacitors can cause a voltage dip large enough to reset the main controller.
The WDT may be triggered due to the hung condition still being present on the I2C lines after each WDT reset
ESP32-WROOM Occasional reset, and then locked in bootloader WDT
-
- Posts: 27
- Joined: Tue Feb 05, 2019 5:26 pm
Who is online
Users browsing this forum: No registered users and 303 guests