GPIO Expander MCP23017 jumpers for daisy chaining multiple boards

Customer:

Which jumpers do I need to set on the GPIO Expander MCP23017 if the board is controlled by an Arduino Nano ESP32 and connected via an EasyC cable, but is powered by 5V through VCC and GND?

Originally submitted via email support on 11 November 2024. Migrated to the forum for community visibility.

Soldered Support:

You don’t need to modify JP1 and JP2 - they are there to disable/enable pullups if it is needed, but in most cases it’s not needed. All EasyC boards have voltage regulation on board so they can be driven via ESP32 at 3.3V or ATmega328P at 5V.

Customer:

What does “if it is needed” mean, and what does “large majority” mean? I’m daisy chaining 5+ of these boards together and need clarification.

Soldered Support:

For daisy chaining, you don’t need to modify JP1, JP2, JP3 or JP4. You need to use the address selection jumpers JP5, JP6 and JP7 instead. Check the schematic for details: IO-expander-MCP23017-breakout-hardware-design/OUTPUTS/V1.1.1/IO expander MCP23017 breakout Schematics.pdf at main · SolderedElectronics/IO-expander-MCP23017-breakout-hardware-design · GitHub

JP5 is for A0, JP6 is for A1, and JP7 is for A2. These are all connected to HIGH (3.3V) by default. If you bridge them on the jumpers to ground, that pin is connected to GND. This changes the I2C address of each board so you can have multiple boards on the same bus without address conflicts.

Attachment omitted in migration: image.png

Attachment omitted in migration: image.png

Customer:

I was facing an issue where 2 chips responded to the same ID and blocked each other. The address jumpers were set correctly. I took everything apart and reassembled it and now everything works. I’m not sure if I fixed it by removing one chip from the daisy chain or because some wires were touching. I wasn’t sure if I needed the pull-up resistors to improve signal quality on the I2C bus.

Attachment omitted in migration: image.png

Attachment omitted in migration: image.png

Attachment omitted in migration: image.png

Soldered Support:

There are on-board pull-ups already present on each board to improve I2C signal quality. If you were soldering or editing the jumpers, there may have been a tiny short on one of the chips in the daisy chain. You can use the I2C scanner sketch to verify all devices are initialized correctly with their expected addresses: Soldered-Hacky-Codes/I2C_Scanner/I2C_Scan/I2C_Scan.ino at main · SolderedElectronics/Soldered-Hacky-Codes · GitHub