-
• #2
They operate at 3.3v - however they are 5v tolerant, so if you set the pinmode of the relevant pins to 'af_opendrain' and rely on the shield's pullups, you should be good to go.
-
• #3
Well, the Pico is 5v tolerant, but it works like this:
- As an input - up to 5v
- As an open drain output - up to 5v
- As an output, 3.3v
The problem is that if the Pico tries to output a 1, it effectively shorts the pin to the 3.3v line, which ends up pumping more voltage into the Espruino itself.
Having said that, I2C itself should be fine, since usually you have pullup resistors, and the devices themselves only pull the voltage down to 0. It means that even when there's a 1 being transmitted, you've only got 5v applied via a relatively large (4k?) resistor, which is no problem for Espruino if it does connect it to 3.3v (which it shouldn't because I2C configures outputs in Open Drain).
So you're fine, basically.
- As an input - up to 5v
-
• #5
Not that I'm aware of. I2C is sometimes a bit tricky to do level conversions on because it's bidirectional though.
-
• #6
As pointed out you likely don't need any level shifting. Most 5V I2C inputs have logic thresholds compatible with 3V logic. But for reference... http://www.nxp.com/documents/applicationĀ_note/AN10441.pdf
-
• #7
You can get cheap bidirectional level shifters from ebay for under a buck based on the topology that they use in that app note
I plan to use the Pico Arduino adapter without the pullups and leave the resistor pads untouched since the shield that I would like to use already has pullups. The manufacturer of the shield specified that the shield ONLY operates at 5volts and could damage whatever it is hooked up. I plan to communicate via i2c...
Does the Pico's i2c bus operate at 5volts or only at 3volts but is 5volt tolerant?