Skip to content

RP2: ADC pins does not work properly in XIAO RP2350 #18076

@Lesords

Description

@Lesords

Port, board and/or hardware

XIAO RP2350

MicroPython version

MicroPython v1.26.1 on 2025-09-11; Seeed XIAO RP2350 with RP2350

Reproduction

  1. Use the firmware in this interface XIAO_RP2350
  2. Use the following test code
import machine
machine.ADC(29).read_u16()

Expected behaviour

Using my own compiled firmware

MicroPython v1.27.0-preview.135.gd28844d11b.dirty on 2025-09-15; Seeed XIAO RP2350 with RP2350

Type "help()" for more information.

>>> import machine
>>> machine.ADC(4).read_u16()
13955

Observed behaviour

MicroPython v1.26.1 on 2025-09-11; Seeed XIAO RP2350 with RP2350

Type "help()" for more information.

>>> import machine
>>> machine.ADC(29).read_u16()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Pin doesn't have ADC capabilities
>>> 

Additional Information

The reason is that pico-sdk is not the latest.

The ADC function modified the judgment logic after this submission, and changed the range of the ADC pin to be specified by macro(ADC_BASE_PIN and NUM_ADC_CHANNELS).
See: 34e463d

These two macros were not used in pico-sdk until after this commit.
See: raspberrypi/pico-sdk@c88bd53

The following file is the xiao rp2350 header file in the pico-sdk used by the current version of micropython. This file does not include the changes submitted above.
See: https://github.com/raspberrypi/pico-sdk/blob/9a4113fbbae65ee82d8cd6537963bc3d3b14bcca/src/boards/include/boards/seeed_xiao_rp2350.h

Please update pico-sdk and release a new firmware version as soon as possible.

Code of Conduct

Yes, I agree

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions