Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document consequences of RP2350-E9 erratum for CircuitPython #9633

Merged
merged 2 commits into from
Sep 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions ports/raspberrypi/bindings/rp2pio/__init__.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
//| introduction and guide to working with PIO in CircuitPython, see `this
//| Learn guide <https://learn.adafruit.com/intro-to-rp2040-pio-with-circuitpython>`_.
//|
//| .. warning:: Using PIO inputs on Raspberry Pi RP2350 A2 stepping has some limitations
//| due to a GPIO hardware issue that causes excessive leakage current (~120uA).
//| A pin can read as high even when driven or pulled low, if the input signal is high
//| impedance or if an attached pull-down resistor is too weak (has too high a value).
//| See the warning in `digitalio` for more information.
//| """
//|

Expand Down
21 changes: 21 additions & 0 deletions shared-bindings/digitalio/__init__.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,27 @@
//|
//| For more information on using `digitalio`, see `this additional Learn guide
//| <https://learn.adafruit.com/circuitpython-digital-inputs-and-outputs>`_
//|
//| .. warning:: `digitalio.DigitalInOut` on Raspberry Pi RP2350 A2 stepping has some limitations
//| due to a GPIO hardware issue that causes excessive leakage current (~120uA).
//| A pin can read as high even when driven or pulled low, if the input signal is high
//| impedance or if an attached pull-down resistor is too weak (has too high a value).
//|
//| To prevent this problem, drive the the input pin with a strong signal that can overcome
//| the leakage current. If you need to use a pull-down,
//| connect a strong external pull-down resistor that is 8.2k ohms or less.
//|
//| The internal pull-down resistor (``digitalio.DigitalInOut.pull = digitalio.Pull.DOWN``)
//| is not strong enough, and is not useful.
//|
//| Typical push-pull outputs from attached peripherals or other microcontrollers will drive
//| input pins adequately, with no resistor needed.
//|
//| There is no problem when pull-ups are used, even weak ones. Using the internal pull-up resistor
//| (``digitalioDigitalInOut.pull = digitalio.Pull.UP``) will work fine.
//|
//| For more information, see the RP2350-E9 erratum in the
//| `RP2350 datasheet <https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf>`_
//| """

static const mp_rom_map_elem_t digitalio_module_globals_table[] = {
Expand Down
6 changes: 6 additions & 0 deletions shared-bindings/keypad/__init__.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@ const mp_obj_property_t keypad_generic_events_obj = {
//| For more information about working with the `keypad` module in CircuitPython,
//| see `this Learn guide <https://learn.adafruit.com/key-pad-matrix-scanning-in-circuitpython>`_.
//|
//| .. warning:: Using pull-downs with `keypad` on Raspberry Pi RP2350 A2 stepping has some limitations
//| due to a GPIO hardware issue that causes excessive leakage current (~120uA).
//| A pin can read as high even when driven or pulled low, if the input signal is high
//| impedance or if an attached pull-down resistor is too weak (has too high a value).
//| See the warning in `digitalio` for more information.
//|
//| .. jinja
//| """

Expand Down
3 changes: 3 additions & 0 deletions shared-bindings/touchio/__init__.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
//| For more information about working with the `touchio` module in CircuitPython,
//| see `this Learn guide page <https://learn.adafruit.com/circuitpython-essentials/circuitpython-cap-touch>`_.
//|
//| **Limitations**: `touchio` is available on Raspberry Pi RP2040 builds,
//| but not on RP2350, due to GPIO hardware limitations.
//|
//| Example::
//|
//| import touchio
Expand Down