← index #15718Issue #17241
Related · high · value 3.236
QUERY · ISSUE

RP2350: "stuck at 2V" input pin behavior

openby dhalbertopened 2024-08-26updated 2025-03-03
bugport-rp2

Port, board and/or hardware

Pimoroni Tiny2350

MicroPython version

Using build from https://github.com/pimoroni/pimoroni-pico-rp2350
https://github.com/pimoroni/pimoroni-pico-rp2350/releases/download/v0.0.5/tiny2350-v0.0.5-pimoroni-micropython.uf2

Reproduction

I have been debugging what seems to be a problem in CircuitPython which seems related to the discussion here: https://github.com/orgs/micropython/discussions/15621#discussioncomment-10423602

It appears related to RP2350-E9 in the RP2350 datasheet, but am seeing even stranger behavior that seems more pervasive than RP2350-E9. The "stuck high" behavior described in the erratum seems to be reproducible even without enabling the internal pulldown:

Testing on a Pimoroni Tiny 2350:

>>> from machine import Pin
>>> gp0 = Pin(0, mode=Pin.IN, pull=None)
>>> gp0.value()  # initial value of unconnected pin
0
>>> gp0.value()  # attach 1M resistor from pin to 3.3V
1
>>> gp0.value()  # remove resistor
1
>>> gp0.value()  # jumper pin to ground with 1M resistor
1

A voltmeter on the pin shows a stable 2.3V even after many seconds. The pin appears to be latched to 2.3V, as the erratum describes. Jumpering the pin hard (0 ohms) to ground and then removing the jumper restores the quiescent pin voltage to 0v and gp0.value() again shows 0.

I first saw this behavior in CircuitPython and reproduced it in MicroPython as well.

I don't see similar "stuck" behavior on RP2040.

One consideration: the hard-reset state of the pin has the pull-down set. But I have been modifying the CircuitPython code to clear the pull-downs before the pin is set up for input, and that did not help.

I opened an issue with raspberrypi: https://github.com/raspberrypi/pico-feedback/issues/401

Expected behaviour

see above

Observed behaviour

see above

Additional Information

No, I've provided everything above.

Code of Conduct

Yes, I agree

CANDIDATE · ISSUE

RP2350B Core Board: says GPIO pin > 31 declared mode = OUTPUT is shown as INPUT

closedby Flipje1955opened 2025-05-02updated 2025-05-21
bug

Port, board and/or hardware

RP2350B Core WeAct Studio

MicroPython version

Using MicroPython v1.25.0 on 2025-04-15; WeAct Studio RP2350B Core with RP2350:

Reproduction

'''
pin = Pin(31, Pin.OUT)
pin.on()
print(pin, pin.value())
pin.off()
print(pin, pin.value())

pin = Pin(32, Pin.OUT)
pin.on()
print(pin, pin.value())
pin.off()
print(pin, pin.value())
'''

Expected behaviour

Expected all pins defined as OUTPUT to be shown as such.

Observed behaviour

Output:

MPY: soft reboot
Pin(GPIO31, mode=OUT) 1
Pin(GPIO31, mode=OUT) 0
Pin(GPIO32, mode=IN) 1
Pin(GPIO32, mode=IN) 0

This applies to all pins #32 up to # 47.

nb. Same behaviour on v1.26.0-preview.59.g79abdad9e (2025-05-02) .uf2

Additional Information

No, I've provided everything above.

Code of Conduct

Yes, I agree

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied