Sporadically, upon power on, I see that the I2C address of the one MCP3428 chips is messed up. The I2C address of comes up as 0x6F (instead of the expected 0x6E).
In my testing, this doesn’t happen all the time and some boards appear more likely than some others to exhibit the bad behavior.
The (Nodelynk aka) I2C bus is expected to see 3 devices : 0x3C (display), 0x68 (MCP3428 chip 1) and 0x6E (MCP3428 chip 2). Whenever the problem occurs, it only affects the chip 2 address.
Q1. What causes this ?
Q2. How can it be prevented ?
To make matters worse, I could not figure out a way to recover from this in software. The only reliable recovery method is this high human touch approach of:
- power off the R-Pi and ADC.
- unplug the Nodelynk cable R-Pi <=> ADC
- Wait for a few seconds
- replug cable
- power on ADC first followed by R-Pi.
It was isn’t easily repeatable in my test lab. Unfortunately its occurring with some regularity on a customer system we’ve built, which is becoming a headache.
Any guidance on root cause would be useful.