After many hours of exploration, I found that the Pico RGB Keypad Base did not have sufficieint pull-up strength on the I2C lines. Great work by the library folks (PMK Circuit Python) for having exception messages that are straight forward.
10k Pullups are insufficient for modern silicon processes. The leakage is too great to keep the voltage above Vih for the chip. Slapping a 4.7k in parallel with the existing 10k allowed the software to work.
Now off to make my bespoke streamdeck for class!!
–Prof Frame
I think you are mixing up some things here: a lower resistor value (stronger pullup) results in more leakage. So by adding a 4.7k in addition to the 10k you increase leakage (your pullups add up to about 3.2k).
The reason that the 10K alone don’t work is probably due to bus capacitance. And this has nothing to do with “modern silicon processes”.
You will always try to use pullups with a R-value as high as possible in power-constrained systems.
TI has a number of nice application notes and slide-sets about I2C, well worth a read! And they describe how to calculate valid pullup resistor values in this document: https://www.ti.com/lit/an/slva689/slva689.pdf
There were some of those that slipped out with the wrong resistor pack installed. 100k instead of 10k. I have one here that threw up an error in Circuit Python about it. Once I soldered on my own 10k resistors all was fine.
I had a look for the thread I started, I think I started it, but couldn’t find it?
That’s a good point. 10K is usually sufficient, but 100K are very weak.