RP2350 (générique / cartes basées sur le RP2350)

Raspberry Pi LtdMCU 8-32 bitarduino

⚡ L’essentiel en 60 secondes

Le RP2350 représente la seconde génération de microcontrôleurs développés par Raspberry Pi Ltd, succédant au très populaire RP2040. Contrairement à une carte unique, cette fiche technique décrit la puce elle-même ainsi que l'écosystème foisonnant de cartes génériques ou tierces qui l'exploitent, allant des modules compatibles Pico-2 aux formats compacts comme les XIAO ou les Stamp. Annoncé en août 2024, ce composant incarne une philosophie d'accessibilité radicale : disponible à moins d'un dollar en volume, il est conçu pour être au cœur de millions de projets, avec une garantie de disponibilité des cartes officielles jusqu'en 2040. Cette longévité exceptionnelle en fait un choix stratégique pour les développements industriels ou éducatifs à long terme, assurant que le matériel ne deviendra pas obsolète prématurément.

L'architecture du RP2350 se distingue par une caractéristique unique dans sa gamme de prix : la possibilité de choisir dynamiquement entre deux jeux d'instructions différents. La puce intègre deux cœurs Arm Cortex-M33, modernes et sécurisés, ou deux cœurs RISC-V nommés Hazard3. Ces deux architectures ne fonctionnent pas simultanément ; le développeur peut basculer l'un des cœurs de l'Arm au RISC-V via un registre spécifique, sans avoir besoin de redémarrer la carte. Cette flexibilité permet d'optimiser les performances ou la consommation selon les besoins, tout en offrant une porte d'entrée vers l'écosystème RISC-V, de plus en plus prisé pour son ouverture. La fréquence de fonctionnement nominale est fixée à 150 MHz. Il est crucial de noter que cette fréquence est inférieure aux 200 MHz du prédécesseur RP2040, bien que les cœurs soient plus performants par cycle. Les développeurs migrateurs doivent donc vérifier la compatibilité de leurs boucles temporelles précises.

En matière de mémoire, le RP2350 dispose de 520 Ko de SRAM, soit le double de la génération précédente, organisée en dix banques accessibles indépendamment pour réduire les conflits d'accès. La puce ne contient pas de mémoire flash interne pour le stockage du programme ; elle repose sur une mémoire flash QSPI externe, pouvant atteindre 16 Mo avec exécution en place (XIP), ce qui signifie que le processeur peut exécuter le code directement depuis la mémoire externe sans la charger d'abord dans la RAM. Des variantes spécifiques, comme le RP2354, intègrent 2 Mo de flash directement dans le boîtier, simplifiant la conception des circuits imprimés. Pour la sécurité, le RP2350 introduit des mécanismes avancés inhabituels pour un microcontrôleur de ce coût, notamment la technologie Arm TrustZone-M. Cela permet de diviser le système en zones sécurisées et non sécurisées, isolant les données sensibles du reste du code. Un démarrage sécurisé, utilisant des clés cryptographiques stockées dans une mémoire OTP (One-Time Programmable), garantit que seul un code signé par le développeur peut s'exécuter, protégeant ainsi la propriété intellectuelle contre la copie.

Les capacités d'entrées/sorties sont renforcées par trois blocs PIO (Programmable I/O), contre deux sur le RP2040. Les PIO sont des coprocesseurs simples qui gèrent les tâches d'entrée/sortie complexes sans solliciter le cœur principal, libérant ainsi la puissance de calcul. Avec douze machines à états au total et des interruptions dédiées par bloc, le RP2350 offre une réactivité accrue pour le contrôle de périphériques rapides. Un nouveau périphérique, le HSTX, permet d'envoyer des flux de données numériques à très haute vitesse, utile pour piloter des écrans ou d'autres interfaces rapides, bien qu'il s'agisse d'une sortie pure. La connectivité sans fil n'est pas intégrée à la puce elle-même ; les cartes portant la mention « W » (comme la Pico 2 W) ajoutent une puce radio séparée pour le Wi-Fi et le Bluetooth. La connectivité USB est native, supportant le mode périphérique Full-Speed et le mode hôte, permettant de brancher des claviers ou des souris directement sur la carte.

L'écosystème logiciel est vaste et mature. Le SDK officiel C/C++ de Raspberry Pi offre un contrôle bas niveau, tandis que MicroPython et CircuitPython permettent un développement rapide et interactif, idéal pour l'éducation. Le support Arduino est assuré par le cœur communautaire « Arduino-Pico », qui inclut des définitions pour les cartes génériques. Pour les amateurs de systèmes embarqués modernes, le support Rust est disponible via les bibliothèques rp-hal et Embassy, permettant de tirer parti de la sécurité mémoire de ce langage. Il est important de noter que les cartes génériques nécessitent souvent un fichier d'en-tête spécifique pour être reconnues par le SDK officiel, car celui-ci ne contient pas de définitions universelles pour toutes les variantes tierces.

Comme tout matériel complexe, le RP2350 a connu des ajustements. Les premières versions de la puce (stepping A2) souffraient d'un problème de fuite de courant sur les broches d'entrée, pouvant affecter les mesures analogiques précises ou la consommation en veille. Ce défaut a été corrigé dans les révisions A3 et A4, sorties en 2025, il est donc recommandé de vérifier la révision de la puce lors de l'achat pour les applications critiques. De plus, l'activation du démarrage sécurisé désactive les cœurs RISC-V, car la vérification de signature est liée à l'architecture Arm. Enfin, des failles de sécurité ont été identifiées lors de défis de piratage, impliquant des injections de fautes physiques, mais des correctifs matériels et logiciels ont été déployés pour atténuer ces risques. En résumé, le RP2350 est un microcontrôleur puissant, flexible et sécurisé, qui repousse les limites de ce que l'on peut attendre d'un composant à bas coût, tout en nécessitant une attention particulière aux spécificités de sa génération de silicium et de son écosystème logiciel.

Forum (1 sujet) →

AttrSpecsvérifié
mcu_cpudual-core, selectable architecture: two Arm Cortex-M33 (Armv8-M, Security/TrustZone-M, DSP, single-precision FPU + double-precision coprocessor) or two Hazard3 RISC-V cores (RV32IMAC). Only one architecture runs at a time per core pair; cores can be swapped live via the ARCHSEL register plus core reset (datasheet §1.1, §3; also Clock: 150 MHz nominal.✔
gpunone (no display engine; HSTX is a digital serial transmitter, see below).? non vérifié
ram520 KB SRAM in 10 independently accessible banks, single-cycle access (datasheet §1.1).? non vérifié
storageno internal flash. 8 KB one-time-programmable (OTP) memory. External QSPI flash/PSRAM up to 16 MB with execute-in-place (XIP) + optional second chip select for another 16 MB. RP2354 adds 2 MB in-package flash.? non vérifié
connectivityno WiFi/Bluetooth on-chip. 1× USB controller: USB 2.0 Full-Speed device (12 Mb/s), Full/Low-Speed host (integrated USB 1.1 PHY) (datasheet §12 USB). Wireless on "W" boards (e.g. Pico 2 W) comes from an add-on radio companion chip.? non vérifié
gpio_peripherals- 30 GPIO (RP2350A) or 48 GPIO (RP2350B); IO voltage IOVDD 1.8–3.3 V (datasheet §1.2 pin description tables). - ADC: 12-bit SAR, 500 kSPS, 4 channels (A) / 8 channels (B) + internal temperature channel (datasheet; No DAC. - PWM: 8 (A) / 12 (B) dual-channel slices = 16/24 channels ( - 2× UART, 2× SPI, 2× I²C, 1× QSPI (XIP), 1× HSTX high-speed serial transmitter (output-only, 8 pins, DDR — Wikipedia cites 300 Mb/s per pin). - PIO: 3 blocks, 12 state machines total (vs 2 blocks / 8 SMs on RP2040), with 2 dedicated IRQs per block (PIO0/1/2_IRQ_0/1) vs one shared pair on RP2040 (datasheet §3.2 interrupt table, p.81–82). - DMA: 16 channels, 4 IRQ outputs (datasheet interrupt table DMA_IRQ_0–3; comparison table in - Interrupts: 52 IRQ inputs per core, all routed to both cores (datasheet §3.2).✔
poweron-chip SMPS (buck, up to 200 mA, VOUT 0.55–3.3 V, nominal 1.1 V core) + low-quiescent LDO mode (up to 1 mA for state retention in sleep); VREG_VIN 2.7–5.5 V; USB_OTP_VDD and ADC_AVDD 3.3 V (datasheet §1.1, §6.3, §14.9.6).? non vérifié
temperatureambient operating range −40 to 85 °C (datasheet §14.9.3, Table 1682); regulator over-temperature shutdown, junction threshold configurable 100–150 °C (datasheet §6.3.6).? non vérifié
process_package40 nm ( 5.3×5.3 mm die in QFN-60EP or QFN-80EP, 0.4 mm pitch (Wikipedia).✔
rp2040_relationshipthe RP2350 is software-compatible with the RP2040 (same SDK family, PIO heritage) per At board level, Pico-2-format boards keep the original Pico's 40-pin, 51×21 mm, 0.1″-castellation format (Pico 2 Datasheet, mechanical spec). The chip package itself (QFN-60/80) is not pin-identical to RP2040's QFN-56 — compatibility is at SDK/board level, not silicon footprint.✔
  • Fabricant : Raspberry Pi Ltd (Royaume-Uni). Le RP2350 est le deuxième microcontrôleur en silicium de Raspberry Pi, après le RP2040. Cette fiche couvre la puce elle-même et les nombreuses cartes « generic RP2350 » tierces construites autour d'elle (modules compatibles Pico-2, Pro Micro, XIAO, Stamp, etc.), et pas spécifiquement la carte Raspberry Pi Pico 2.
  • Annoncé : 8 août 2024, lancé sur la Raspberry Pi Pico 2 à 5 US$ ; la puce RP2350 seule coûte au minimum 0,80 US$ en volume ( consulté le 2026-10-13).
  • Statut : Actif. Raspberry Pi garantit la disponibilité de la carte Pico 2 jusqu'en janvier 2040 au minimum (Raspberry Pi Pico 2 Datasheet, "Availability", consulté le 2026-10-13).
  • Variantes (puce) : RP2350A (30 GPIO, QFN-60 7×7 mm), RP2350B (48 GPIO, QFN-80 10×10 mm), RP2354A/RP2354B — mêmes boîtiers avec un flash NOR QSPI de 2 MB empilée dans le boîtier sur la puce ( ; RP2350 Datasheet §1.1, Révisions de silicium A2 → A3 → A4 (A4 identifiée par CHIP_ID.REVISION = 0x3 ; datasheet Annexe C, consulté le 2026-10-13).
  • Formats de carte courants l'utilisant : Raspberry Pi Pico 2 / Pico 2 W ; SparkFun Pro Micro RP2350 & Thing Plus RP2350 ; Seeed XIAO RP2350 ; Solder Party RP2350 Stamp (XL) ; Waveshare RP2350 Core/Zero/Plus/PiZero ; Pimoroni PicoPlus2 / Tiny2350 / Plasma2350 ; Adafruit Metro RP2350 / Feather RP2350 ; Olimex Pico2XL/XXL ; entrées "Generic RP2350" dans le core Arduino-Pico ( consulté le 2026-10-13).

+ Points forts

  • Architecture CPU sélectionnable à l'exécution : double Cortex-M33 ou double Hazard3 RISC-V à 150 MHz, basculable sans couper l'alimentation (ARCHSEL + reset du cœur) — unique à ce prix (datasheet §1.1 ; Wikipedia).
  • Empilement de sécurité inhabituel pour du silicium à 1 $ : Arm TrustZone-M étendu à l'ensemble du système — périphériques, GPIO et canaux DMA individuellement affectables aux domaines Secure/Non-secure ; 8 régions SAU + 8+8 régions MPU par cœur ; secure boot (SHA-256 + ECDSA secp256k1, empreinte de clé publique OTP, anti-retour) ; clés de démarrage chiffrées dans l'OTP ; accélérateur matériel SHA-256 ; TRNG (bloc IP Arm) ; coprocesseur de redondance (RCP) et détecteur de glitch comme atténuations contre l'injection de fautes (datasheet §10, §3.6.3, §12.12–12.13).
  • Triple PIO : 3 blocs PIO / 12 SMs avec IRQ par bloc, plus HSTX pour la sortie numérique haut débit de type vidéo — philosophie compatible RP2040, puissance d'E/S doublée (datasheet §1.1, §3.2).
  • 520 Ko de RAM en 10 banques (2× le RP2040), 8 Ko d'OTP, QSPI adressable 16+16 MB.
  • Faible coût, longue durée de vie : à partir de 0,80 $ en volume ; disponibilité des cartes garantie jusqu'en 2040 (Wikipedia ; Pico 2 Datasheet).
  • Large prise en charge des langages : C/C++, MicroPython, CircuitPython, Arduino, Rust (embassy/rp-hal), Free Pascal, assemblement (Wikipedia ; READMEs de l'écosystème ci-dessus).

− Points faibles

  • RP2350-E9 — Fuite en entrée des GPIO de la Bank 0 (le plus gros). Premières puces (révision A2) : les broches configurées en entrée sourcent ~120 µA quand l'entrée se situe entre les niveaux logiques, les entrées en l'air flottant vers ~2,2 V ; d'abord documenté comme errata « latching pull-down », reclassifié en « increased leakage current on Bank 0 GPIO when pad input is enabled ». Signalé par des utilisateurs, y compris les développeurs du Bus Pirate. Corrigé dans les révisions A3/A4 annoncées en juillet 2025. Références : ; ;
  • RP2350-E3 (QFN-60 uniquement) : GPIO_NSMASK0 applique les permissions Non-secure des PADS aux mauvaises pads car la cartographie du registre ignore la remapping des pads du QFN-60 — affecte l'usage de TrustZone des registres PADS sur RP2350A (datasheet Annexe D.1.1).
  • Errata du bootrom corrigés dans les révisions ultérieures : E13 (des blocs IMAGE_DEF invalides démarrent), E14 (connect_internal_flash ignore la broche CS1), E15 (permissions des pages OTP 62/63), E18 (un motif ECC invalide dans le champ de partition OTP brique le démarrage), E22–E23, E25 — voir datasheet Annexes C/D (changelists du bootrom A3/A4).
  • Constats d'injection de fautes du défi de hacking DEF CON 32 : le défi de lecture OTP à 10 k$→20 k$ a été remporté en janvier 2025 (4 lauréats) par injection de fautes laser sur le secure boot et lecture OTP par faisceau d'ions focalisés ; Raspberry Pi a livré les atténuations comme errata E20/E21/E24/E26 (changements du bootrom dans A3/A4). ; datasheet Annexes C.2–C.3.
  • Le secure boot désactive RISC-V : l'application des signatures vit sur la voie de démarrage du Cortex-M33, donc activer SB force les cœurs Arm (Wikipedia, citant la datasheet §10).
  • Les cartes génériques ont besoin d'un en-tête de carte SDK personnalisé : le master de pico-sdk fournit les en-têtes pico2/pico2_w mais aucun en-tête « generic RP2350 » ; les cartes tierces fournissent soit un en-tête (le core Arduino le fait), soit vous en écrivez un (
  • 150 MHz contre 200 MHz du RP2040 : l'horloge du RP2350 est plus basse que les 200 MHz du RP2040 malgré des cœurs plus rapides — ne présumez pas d'une portabilité du comptage de cycles en migrant du code RP2040 (Wikipedia, tableau comparatif).
  • Retour d'expérience expert expert — expert-microcontroleur
    • Retour d'experience sur les cartes generiques RP2350. Le selcteur d'architecture entre Cortex-M33 et Hazard3 RISC-V a 150 MHz est reellement utile et fonctionne sans réinitialisation materielle. Par contre attention aux steppings. Les puces A2 souffrent de l'errata RP2350-E9 sur la fuite en entrée … — expert-microcontroleur
    • Salut, je confirme pour le E9 sur mon Stamp RP2350. J'ai passe des heures a diagnostiquer pourquoi mes entrées analogiques etaient faussees par les numériques voisines. En mettant des résistances de pull-down externes sur chaque ligne sensible, j'ai stabilise la lecture, mais ça consomme de la plac… — maker-bidouilleur-42
    • Interessante remarque sur le E9. Pour ma part, j'utilise surtout le mode RISC-V Hazard3 pour des taches de calcul vectoriel et la bascule dynamique est fluide. Par contre, je n'ai pas rencontre le E3 sur mes cartes Pico-compatible, mais je suppose que ce n'est pas du QFN-60 ? Si tu as un module Pro… — dev-embedded-riscv

Retours et projets de la communauté

  • Official pico-examples

    Official pico-examples — blinky, hello_world, PIO, HSTX demos that build (unverified au 2026-10-13) — interne hébergé sur site interne, statut vivant vérifié le 2026-10-13. Projet documenté dans la fiche rp2350-generic (MCU 8-32 bit) ; rôle : approfondir la p…

Contenu indisponible pour le moment.

  • RP2350-E9 — Fuite en entrée des GPIO de la Bank 0 (le plus gros). Premières puces (révision A2) : les broches configurées en entrée sourcent ~120 µA quand l'entrée se situe entre les niveaux logiques, les entrées en l'air flottant vers ~2,2 V ; d'abord documenté comme errata « latching pull-down », reclassifié en « increased leakage current on Bank 0 GPIO when pad input is enabled ». Signalé par des utilisateurs, y compris les développeurs du Bus Pirate. Corrigé dans les révisions A3/A4 annoncées en juillet 2025. Références : ; ;
  • RP2350-E3 (QFN-60 uniquement) : GPIO_NSMASK0 applique les permissions Non-secure des PADS aux mauvaises pads car la cartographie du registre ignore la remapping des pads du QFN-60 — affecte l'usage de TrustZone des registres PADS sur RP2350A (datasheet Annexe D.1.1).
  • Errata du bootrom corrigés dans les révisions ultérieures : E13 (des blocs IMAGE_DEF invalides démarrent), E14 (connect_internal_flash ignore la broche CS1), E15 (permissions des pages OTP 62/63), E18 (un motif ECC invalide dans le champ de partition OTP brique le démarrage), E22–E23, E25 — voir datasheet Annexes C/D (changelists du bootrom A3/A4).
  • Constats d'injection de fautes du défi de hacking DEF CON 32 : le défi de lecture OTP à 10 k$→20 k$ a été remporté en janvier 2025 (4 lauréats) par injection de fautes laser sur le secure boot et lecture OTP par faisceau d'ions focalisés ; Raspberry Pi a livré les atténuations comme errata E20/E21/E24/E26 (changements du bootrom dans A3/A4). ; datasheet Annexes C.2–C.3.
  • Le secure boot désactive RISC-V : l'application des signatures vit sur la voie de démarrage du Cortex-M33, donc activer SB force les cœurs Arm (Wikipedia, citant la datasheet §10).
  • Les cartes génériques ont besoin d'un en-tête de carte SDK personnalisé : le master de pico-sdk fournit les en-têtes pico2/pico2_w mais aucun en-tête « generic RP2350 » ; les cartes tierces fournissent soit un en-tête (le core Arduino le fait), soit vous en écrivez un (
  • 150 MHz contre 200 MHz du RP2040 : l'horloge du RP2350 est plus basse que les 200 MHz du RP2040 malgré des cœurs plus rapides — ne présumez pas d'une portabilité du comptage de cycles en migrant du code RP2040 (Wikipedia, tableau comparatif).

Bibliothèque de code — exemples écrits pour cette carte

  • clignotante.py Python

    Le premier programme MicroPython : la LED clignote une fois par seconde avec suivi sur la console série. Montre Pin en sortie, value() et time.sleep, la base de tout script embarqué sur la carte.

  • bouton-interruption.py Python

    Le bouton câblé sur GP15 bascule la LED grâce à une interruption matérielle (irq) : aucun cycle processeur perdu à scruter la broche. Un filtre de 50 ms dans le handler élimine les rebonds mécaniques…

  • pwm-servo.py Python

    Le servo d'angle balaie 0 à 180° puis revient, piloté en PWM 50 Hz par machine.PWM. La fonction angle() convertit l'angle en impulsion de 0,5 à 2,5 ms via duty_u16, la technique standard sans bibliot…

  • lecture-adc.py Python

    Deux mesures analogiques 12 bits avec un seul script : une tension externe sur GP26 (ADC0) et le capteur thermique intégré au circuit, converti en degrés grâce aux paramètres de la fiche technique. I…

  • neopixel.py Python

    Une tête blanche suivie d'une traînée rouge se déplace sur un ruban de 12 NeoPixel (WS2812B), pilotés nativement par MicroPython via machine.NeoPixel. Chaque LED reçoit sa couleur dans une trame uniq…

  • oled-i2c.py Python

    Un écran OLED 0,96" SSD1306 (128x64) relié en I2C affiche texte et compteur. Le script balaie d'abord le bus pour vérifier la présence du module, puis utilise le pilote ssd1306.py livré avec MicroPyt…

  • capteur-dht.py Python

    Le module dht intégré à MicroPython pilote les capteurs DHT11/DHT22 sur n'importe quelle broche. Le script mesure toutes les 2 s (cadence minimale du capteur), capture les erreurs de trame et affiche…

  • journalisation.py Python

    MicroPython expose la flash interne comme un système de fichiers : ce script y écrit un CSV de température toutes les 5 s, en mode append pour ne jamais écraser les données. Le fichier se récupère en…

  • uart-commandes.py Python

    Un mini-serveur de commandes sur UART0 (GP0/GP1) : les modules série classiques (GPS, modem cellulaire, autre microcontrôleur) peuvent basculer la LED, lire la température ou interroger la carte avec…

  • taches-cooperatives.py Python

    Trois tâches périodiques (LED 2 Hz, bip 1 Hz, mesure 5 s) s'exécutent sur un mini-ordonnanceur coopératif de 15 lignes. Le motif remplace les delay() imbriqués dès qu'un projet dépasse une broche ani…

Exemples et dépôts trouvés en ligne