🛠 Flasher MicroPython sur une carte RP2350 générique et faire clignoter la première LED
Objectives
The RP2350 is Raspberry Pi's second microcontroller (announced on August 8, 2024, with the chip costing as little as $0.80 in volume) and it powers a galaxy of "generic" boards: Seeed XIAO RP2350, Pimoroni Tiny2350/PicoPlus2, SparkFun Pro Micro RP2350, Solder Party Stamp, Waveshare Core/Zero… They all share the same programming method: the immutable boot ROM waits for the BOOTSEL button to be held while plugging in to expose a USB drive RPI-RP2 onto which you drop a UF2 file. The official MicroPython rp2 port supports the RP2350 (official docs). By the end of this tutorial, your board will speak Python.
Hardware
- 1 × generic RP2350 board (Pico, Pro Micro, XIAO format… it doesn't matter here)
- 1 × USB data cable (many boards use USB-C)
- A PC with Thonny (recommended: it handles UF2 mode automatically)
- The appropriate firmware: on micropython.org/download/RP2, choose the RP2350
.uf2(not RP2040!)
Complete Steps
- BOOTSEL mode: Unplug the board, hold down the BOOT button (sometimes marked BOOTSEL or SET), plug in the USB, then release. The
RPI-RP2drive appears. - Drag the RP2350
.uf2onto the drive. The LED blinks, the drive disappears: the board restarts on MicroPython. - In Thonny: bottom-right menu → "Python Interpreter" → MicroPython (RP2350) (or "Generic USB CDC"), automatic serial port. The REPL displays:
MicroPython ...; RP2 port with board generic
>>> import machine, sys
>>> sys.platform
'rp2'
- First program — on Pico-format boards, the user LED is on GP25:
# main.py — clignotement GP25 (format Pico 2)
from machine import Pin
import time
led = Pin(25, Pin.OUT)
while True:
led.toggle
time.sleep_ms(250)
On XIAO RP2350 or Tiny2350, the LED may be elsewhere (often RGB WS2812): consult the manufacturer's datasheet — that's THE data to check.
Expected Verification
The LED blinks at 2 Hz as soon as the board is powered (the main.py file runs at boot). machine.freq returns 150000000: the RP2350 runs at 150 MHz nominal, compared to 125 MHz by default on the RP2040 — note that this is *lower* than the 200 MHz overclockable limit of the RP2040, so don't assume a higher frequency when migrating code.
Common Errors
- RP2040 UF2 instead of RP2350: the board restarts but the firmware doesn't match the chip — the REPL may never respond.
- BOOT button released too early or power-only cable (no data): no
RPI-RP2drive appears. Try another cable. - Looking for an LED on GP25 of a XIAO/Pro Micro board: not all generic boards have the Pico's LED; some have none at all — use a multimeter between the suspect pin and GND.
- The drive never appears: hold BOOT before plugging in, not after; on some boards, shorting RUN/ST-PC→GND replaces the button.
- "device busy" in Thonny: close the serial monitor open elsewhere (VS Code,
picocom), then press Ctrl-C in the REPL. - Powering via a finicky USB hub: the boot ROM is strict about 5 V during connection, try a direct port.
Other tutorials for this board
- Console série sur RP2350 : USB CDC natif et UART0 de secours
- Lire l'ADC 12 bits et le capteur de température interne du RP2350
- Exploiter les 3 blocs PIO et 12 machines d'état du RP2350 (avec IRQ dédiées)
- Pico SDK 2.x sur une carte RP2350 générique : CMake, board header et PICO_BOARD
- Basculer les cœurs de Arm Cortex-M33 à Hazard3 RISC-V avec ARCHSEL
- Secure boot et TrustZone-M sur RP2350 : signer son firmware sans se faire avoir
Code examples for this board
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython