🛠 Flasher MicroPython sur une carte RP2350 générique et faire clignoter la première LED
Objectifs
Le RP2350 est le second microcontrôleur de Raspberry Pi (annoncé le 8 août 2024, la puce coûte dès 0,80 $ en volume) et il équipe une galaxie de cartes « génériques » : Seeed XIAO RP2350, Pimoroni Tiny2350/PicoPlus2, SparkFun Pro Micro RP2350, Stamp de Solder Party, Waveshare Core/Zero… Toutes partagent le même mode de programmation : le boot ROM immuable attend un bouton BOOTSEL enfoncé au branchement pour exposer un lecteur USB RPI-RP2 sur lequel on dépose un fichier UF2. Le port officiel MicroPython rp2 supporte le RP2350 (docs officielles). À la fin de ce tuto, ta carte parle en Python.
Matériel
- 1 × carte RP2350 générique (format Pico, Pro Micro, XIAO… peu importe ici)
- 1 × câble USB data (beaucoup de cartes sont en USB-C)
- Un PC avec Thonny (recommandé : il gère le mode UF2 tout seul)
- Le firmware adapté : sur micropython.org/download/RP2, choisis le
.uf2RP2350 (pas RP2040 !)
Étapes complètes
- Mode BOOTSEL : débranche la carte, maintiens le bouton BOOT (parfois marqué BOOTSEL ou SET), rebranche l'USB, relâche. Le lecteur
RPI-RP2apparaît. - Glisse le
.uf2RP2350 sur le lecteur. La LED clignote, le lecteur disparaît : la carte redémarre sur MicroPython. - Dans Thonny : menu bas-droite → « Interpréteur Python » → MicroPython (RP2350) (ou « Generic USB CDC »), port série automatique. Le REPL affiche :
MicroPython ...; RP2 port with board generic
>>> import machine, sys
>>> sys.platform
'rp2'
- Premier programme — sur les cartes au format Pico, la LED utilisateur est sur 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)
Sur XIAO RP2350 ou Tiny2350, la LED peut être ailleurs (souvent RGB WS2812) : consulte la fiche du fabricant — c'est LA donnée à vérifier.
Vérification attendue
La LED clignote à 2 Hz dès que la carte est alimentée (le fichier main.py s'exécute au boot). machine.freq renvoie 150000000 : le RP2350 tourne à 150 MHz nominaux, contre 125 MHz par défaut sur RP2040 — attention, c'est *inférieur* aux 200 MHz overclockables du RP2040, ne suppose pas une fréquence supérieure en migrant du code.
Erreurs fréquentes
- UF2 RP2040 au lieu de RP2350 : la carte redémarre mais le firmware ne correspond pas à la puce — le REPL peut ne jamais répondre.
- Bouton BOOT relâché trop tôt ou câble d'alimentation seul (sans data) : pas de lecteur
RPI-RP2. Teste un autre câble. - Chercher une LED sur GP25 d'une carte XIAO/Pro Micro : les cartes génériques n'ont pas toutes la LED de la Pico ; certaines n'en ont aucune — pique un multimètre entre la broche suspecte et GND.
- Le lecteur n'apparaît jamais : maintiens BOOT avant de brancher, pas après ; sur certaines cartes, un court-circuit RUN/ST-PC→GND remplace le bouton.
- « device busy » dans Thonny : ferme le moniteur série ouvert ailleurs (VS Code,
picocom), puis Ctrl-C dans le REPL. - Alimentation par un hub USB capricieux : le boot ROM est exigeant sur le 5 V au branchement, essaie un port direct.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython