Issue with CQRobot Ocean MCP23017 IO Board: Missing Pull-Up

Encountering ‘No pull up on SDA/SCL’ error with the MCP23017 clone. Try:

import machine
from alt_mcp import MCPChip
chip = MCPChip(i2c=machine.I2C(0, scl=machine.Pin(3), sda=machine.Pin(2)), addr=0x20)

I encountered a similar issue with a clone board recently and realized it was due to omitted onboard pull-ups. In my experience, adding external pull-up resistors to the SDA and SCL lines resolved the error efficiently. The solution involved careful selection of resistor values based on the system’s electrical characteristics. This approach not only bypassed the error but also improved overall signal reliability. I learned that checking the board’s specific schematics and confirming with the datasheet can be critical when dealing with hardware clones and their quirks.

My experience with the MCP23017 clones confirmed that missing internal pull-ups could lead to intermittent communication issues, especially in noisy environments. I found that substituting the typical 4.7k resistors with slightly higher values, about 6.8k ohms, helped stabilize the signals in my setup. Additionally, I ensured my supply voltage was properly decoupled with capacitors near the chip, which minimized interference effects on I2C line integrity. These modifications not only resolved the SDA/SCL error but also resulted in a more dependable performance overall.

The error I encountered led me to reexamine both the code and the hardware layout. I discovered that the issue wasn’t solely the absence of onboard pull-ups, but a combination of board variations and I2C settings that failed to compensate for them. In my case, reducing the bus speed provided a temporary fix until I tested an external resistor solution. Additionally, confirming the device address via an I2C scanner ensured that I was communicating with the intended chip, which proved critical in tracking down the root cause.

I had a similar experience where the missing pull-up was causing some communication issues on my device. My investigation led me to re-examine the board layout and the connection setup in the datasheet. I ended up installing external pull-up resistors, typically around 4.7K ohms, on the SDA and SCL lines which fixed the error and improved stability. Additionally, thoroughly checking the soldering work and ensuring that the I2C lines were not subject to interference helped resolve the issue completely. It’s important to verify even small details when working with clones.

i had a similar prob and fixed it by adding externl pull-ups. looks like the clones skip this detail. check your wiring and try a resistor around 4.7k. hope it sorts it out!