The Silent Chip: MCP23017 @ 0x22
During initial testing of the SigCore UC board, all I²C devices came up clean — except for one. The MCP23017 intended for address 0x22 refused to respond.
Bus health was solid. Pull-ups were in place. Other devices (ADS1115, PCA9685, MCP4728, FRAM) were chatting happily.
But this one… radio silence.
The Root Cause: SCL and SDA Were Swapped
After confirming that power and address pins were correct, I scoped the signals at the chip itself.
And that’s when it hit me like a like a splash of molten solder !!
SCL and SDA were reversed at the MCP23017.
That’s a brutal mistake for a device that only speaks I²C. With clock and data flipped, it's essentially deaf and blind on the bus. And there's no recovery from this one without physical intervention.
The Fix: Pin-Swap Surgery
This was going to require precision:
-
Mapped the pinout:
-
Pin 12 = SCL
-
Pin 13 = SDA
-
On my board: reversed. Perfectly wrong.
-
-
Mask removed:
-
Used a fiberglass pen to expose copper on each pin's trace before the via.
-
-
Cut traces:
-
Clean slice just beyond the pads to isolate the misrouted lines.
-
-
Patch wires installed:
-
Swapped SCL and SDA using 30 AWG using motor winding wire.
-
Looks ugly but it was a clean fix.
-
-
Verified routing:
-
Continuity test between MCU and MCP23017 verified clean swaps.
-
No shorts, no cross-talk.
-
-
Power-up test:
-
Reconnected power, ran
i2cdetecton the Pi…
0x20 0x21 0x22 0x40 0x48 0x50 0x70
-
Hallelujah !!
It worked.....
Lesson Burned into My Retinas
Swapping SCL and SDA kills your afternoon.
This was one of those errors that slips right past the first check, the follow up, the triple check.... Easy to make. Hard to catch. Painful to fix.
But now the whole I²C bus is online and functioning. Lesson learned.
Edward
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.