Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 5034

General • Re: RP2350 Errata E9 - Pull-down lock-up

$
0
0
GPIOn.ISO does not make the pad high-impedance (it does not refer to "electrical isolation"); ISO stops changes to the GPIO output control signals from reaching the pad (so the chip can switch to a low power state and back without sending unwanted signals to connected components). From the RP2350 datasheet, 9.7 (emphasis added):
However, when the ISO bit for each pad is set (e.g. GPIO0.ISO) or the switched core domain is powered down, the control signals currently presented to that pad are latched until the isolation is disabled. This includes the output enable state, output high/low level, and pull-up/pulldown resistor enable.
My guess is that when you clear IE and set ISO at the same time, the isolation latches sometimes stop a signal from reaching the pad. If the latching is caused by both pullup and pulldown resistors being enabled simultaneously (I don't mean setting both PUE and PDE, which actually activates the bus hold), and clearing IE disables the faulty pullup and pulldown as separate signals through the latches, and "disable pulldown" manages to get through in time but "disable pullup" sometimes does not, and the pullup stays enabled and pulls to 3.3V, it'll cause the glitch you're seeing. But that's largely speculation on my part.

(Does the "bus hold" circuitry keep functioning if you set GPIOn.ISO, or does it just try to hold whatever the state was at the time you set ISO? I don't currently have an RP2350 to test.)

Tangent: I have no idea why you would need power cycle and a MicroPython machine.reset() to actually reset the pins (that sounds like a bug; according to the datasheet the RP2350 should reset with the GPIOs configured as pulldowns). Maybe MicroPython is reconfiguring the pins at reset (but not machine.reset()?) though that seems like a strange thing to do.

Tangent 2: Assuming you are testing with MicroPython RPI_PICO2-20240809-v1.24.0-preview.201.g269a0e0e1.uf2: I can't find the source code for this anywhere. https://www.micropython.org/download/RPI_PICO2/ links to https://github.com/micropython/micropyt ... /RPI_PICO2 which is a 404 (and I haven't found it at any of the obvious branches/tags), which makes it really hard to figure out e.g. what calling ADC() actually does.

Statistics: Posted by tc287 — Tue Sep 03, 2024 12:02 am



Viewing all articles
Browse latest Browse all 5034

Trending Articles