RP2040 (carte / puce générique)

MCU 32-bitarduino

⚡ L’essentiel en 60 secondes

Le RP2040 est un microcontrôleur qui a profondément marqué le paysage de l'électronique embarquée depuis son annonce par Raspberry Pi Ltd en janvier 2021. Il s'agit du premier microcontrôleur conçu par la firme britannique, fabriqué par TSMC sur un processus de gravure de 40 nanomètrès. Sa particularité majeure, et celle qui explique l'existence d'une immense famille de cartes dites « génériques », réside dans son architecture sans mémoire de stockage interne. Contrairement à d'autres puces qui intègrent une mémoire flash pour sauvegarder le programme, le RP2040 ne possède pas de stockage non-volatile intégré. Il dispose à la place d'un contrôleur QSPI dédié qui permet de lire le code directement depuis une puce de mémoire flash externe soudée sur la carte. Cette conception, appelée exécution en place, signifie que chaque fabricant de cartes peut choisir la taille de la mémoire, allant de 2 à 16 mégaoctets, ainsi que les régulateurs de tension et les connecteurs, créant ainsi une diversité d'appareils compatibles mais physiquement différents. On trouve ainsi des variantes ultra-compactes comme la Waveshare RP2040-Zero, des cartes orientées vers la connectivité comme l'Adafruit Feather avec son connecteur LiPo, ou des modèles plus performants comme le SparkFun Pro Micro avec 16 mégaoctets de mémoire.

Sur le plan du calcul, le RP2040 embarque deux cœurs ARM Cortex-M0+ fonctionnant en symétrie, c'est-à-dire que les deux processeurs ont des capacités identiques et peuvent communiquer via un réseau croisé interne. La fréquence nominale est de 133 MHz, bien que la documentation technique certifie un fonctionnement stable jusqu'à 200 MHz avec une tension de cœur augmentée, et que des expérimentations communautaires aient montré des overclockings supérieurs à 400 MHz sur des puces bien sélectionnées. Il est important de noter que ces cœurs Cortex-M0+ ne disposent pas d'unité de calcul en virgule flottante matérielle, ce qui signifie que les opérations mathématiques complexes avec des décimaux sont réalisées par logiciel, ce qui les rend plus lentes que sur des puces de la gamme Cortex-M4. Pour compenser cette limitation et offrir une grande flexibilité, le RP2040 intègre 264 Ko de mémoire vive SRAM répartie en six banques indépendantes, une quantité considérable pour un microcontrôleur de cette catégorie de prix. Cette mémoire est complétée par un cache de 16 Ko qui peut parfois être utilisé comme mémoire supplémentaire, bien que cela nécessite des précautions logicielles spécifiques en raison d'une anomalie matérielle connue.

L'atout distinctif du RP2040, souvent cité comme sa raison d'être principale, est le système PIO pour Programmable I/O. Il s'agit de deux blocs matériels contenant chacun quatre machines à états, soit huit coprocesseurs d'entrée/sortie programmables. Contrairement aux périphériques classiques qui dépendent du processeur principal pour gérer les signaux, les machines PIO exécutent leurs propres petits programmes en langage assembleur spécifique, capables de générer ou d'analyser des signaux numériques avec une précision temporelle parfaite, sans consommer de temps de calcul du processeur central. Cela permet de piloter des bandes de LED NeoPixel, de décoder des signaux infrarouges, de générer une sortie vidéo VGA ou de gérer des interfaces audio I2S, tout en laissant le processeur libre pour d'autres tâches. Cette capacité a permis l'émergence de projets créatifs et techniques qui seraient difficiles ou impossibles à réaliser avec des microcontrôleurs traditionnels à ce niveau de coût.

La connectivité est assurée par un contrôleur USB 1.1 capable de fonctionner à la fois en mode périphérique et en mode hôte, ce qui est rare à ce prix. Cependant, il n'y a pas de radio Wi-Fi ou Bluetooth intégrée ; ces fonctions doivent être ajoutées via des modules externes sur certaines cartes spécifiques, comme l'Arduino Nano RP2040 Connect. Les entrées/sorties sont constituées de 30 broches multifonctions, dont quatre peuvent servir d'entrées analogiques pour un convertisseur analogique-numérique de 12 bits, bien que la résolution effective utile soit d'environ 9 bits en raison du bruit électrique. Il est crucial de rappeler que la logique fonctionne en 3,3 volts et que les broches ne tolèrent pas les signaux de 5 volts, nécessitant l'utilisation de convertisseurs de niveau pour interfacer avec des dispositifs plus anciens ou industriels.

Le développement sur ces cartes est accessible et varié. Le processus de programmation est unifié par un bootloader stocké dans une mémoire morte inaltérable. En maintenant le bouton BOOTSEL enfoncé lors de l'alimentation, la carte apparaît sur l'ordinateur comme une clé USB standard. Il suffit alors de glisser-déposer un fichier au format UF2, un format de paquetage développé par Microsoft, pour installer le nouveau programme. Cette méthode rend la carte pratiquement impossible à rendre inutilisable par erreur logicielle. Les environnements de programmation pris en charge incluent le SDK officiel Raspberry Pi pour le C/C++, MicroPython et CircuitPython pour le scripting Python, ainsi que le noyau Arduino communautaire très populaire. D'autres langages comme Rust, Go ou Zig sont également supportés par des portages communautaires. Malgré sa robustesse, le RP2040 présente quelques limitations matérielles documentées, notamment des anomalies de conception concernant le contrôleur DMA ou la gestion des horloges, qui nécessitent des contournements logiciels spécifiques. De plus, l'absence de régulateur de tension intégré signifie que la gestion de l'alimentation dépend entièrement des composants choisis par le fabricant de la carte, ce qui peut varier grandement d'un modèle à l'autre, allant de régulateurs linéaires simples à des systèmes plus complexes pour les batteries.

Forum (1 sujet) →

AttrSpecsvérifié
cpudual ARM Cortex-M0+ (ARMv6-M) @ 133 MHz nominal — datasheet: "Dual Cortex M0+ processor cores, up to 133MHz (or 200MHz at 1.15V, see Section 2.15.3)" (datasheet; also Wikipedia: "Originally run at 133 MHz, but later certified at 200 MHz"). The datasheet documents automatic overclocking using the ROSC (ring oscillator tracks PVT) in §2.15.2.1.5; MicroPython's docs state the core is "overclockable to over 400 MHz" in practice (MicroPython RP2 general info). MicroPython boots at 125 MHz by default and allows machine.freq up to ~250 MHz (MicroPython RP2 quickref).✔
no_fpu_no_dspon Cortex-M0+ — heavy float math is done in software (fast fixed-point/fast-float ROM routines are baked into the RP2040 boot ROM) (Adafruit Feather RP2040 page, SparkFun Pro Micro RP2040 page).✔
per_core_extrasinteger divider + 2 hardware interpolators each (Wikipedia).✔
gpunone (bit-banged VGA/DVI is done with PIO — see Features).? non vérifié
ram264 KB SRAM on-chip in six independent banks (four 64 KB + two 4 KB) (Wikipedia, datasheet key features). The 16 KB XIP cache can additionally be used as an extra SRAM bank (errata E9 describes the bootrom caveat).✔
storageno internal flash/EEPROM. Dedicated QSPI (SSI) controller with 6 dedicated pins, execute-in-place (XIP) with 16 KB cache, supporting up to 16 MB off-chip flash (datasheet, Wikipedia). Board flash size varies: 2 MB (Pico, Waveshare Zero), 4 MB (Waveshare Plus), 8 MB (Feather/ItsyBitsy/QT Py/Tiny 2040), 16 MB (Pro Micro, Metro, Nano Connect) (vendor pages above, SparkFun, Waveshare).✔
connectivityno radio on-chip. *USB 1.1 (LS & FS) controller + PHY, host and device* (1.5/12 Mbit/s) (datasheet key features, Wikipedia). Ethernet/Wi-Fi/BT only via board add-ons (WIZnet W5100S/W5500/W6100 "EVB-Pico" boards, Nano RP2040 Connect, Pico W's CYW43) (Wikipedia board table).✔
gpio30 multifunction GPIO, 4 of which (GP26–GP29) can be analog inputs; 3.3 V logic, not 5 V-tolerant (datasheet, Adafruit). Broken-out count is board-specific: 30 (OLIMEX Pico30), 29 (Waveshare Zero, via pads), 26 (Pico), 21 (Feather), 20 (Pro Micro) (Wikipedia, SparkFun).✔
fixed_function_peripherals2 × UART, 2 × SPI, 2 × I²C, 16 PWM channels (8 slices × 2 channels; 8 Hz–62.5 MHz at 125 MHz clock), 4-channel 12-bit SAR ADC @ 500 ksps (8.7 ENOB) + a 5th muxed channel to the on-chip temperature sensor, 12-channel DMA controller (2 IRQs), timer with 4 alarms, RTC, watchdog, 32 hardware spinlocks (datasheet; PWM slice details and ADC channels per MicroPython RP2 quickref; DMA channel count per Wikipedia — the datasheet's BUS_PRIORITY register exposes 12 DMA write/read priority bits). No DAC, no I²S, no camera, no SDIO — those are PIO territory (Adafruit).✔
clocking12 MHz crystal input (XOSC), 2 PLLs (USB 48 MHz + core), on-chip ring oscillator (ROSC), programmable on-chip LDO for core voltage (datasheet, Adafruit chip features).✔
power_board_level_variesWaveshare Zero uses an ME6217C33 LDO (800 mA max); SparkFun Pro Micro an AP2112 3.3 V LDO + PTC fuse; Adafruit Feather a 500 mA-peak 3.3 V regulator plus 200 mA+ LiPo charger (Waveshare, SparkFun, Adafruit).✔
temperatureRP2040 is qualified to −40 °C minimum operating temperature (changed from −20 °C in the datasheet revision history, Nov 2021 revision) (RP2040 datasheet, revision history).✔
  • Fabricant de la puce : Raspberry Pi Ltd (Royaume-Uni) — premier microcontrôleur de « Raspberry Silicon » ; annoncé le 21 janvier 2021 en même temps que le Raspberry Pi Pico (Wikipedia — RP2040). Fabriqué par TSMC sur un procédé 40 nm, boîtier QFN-56EP 7×7 mm (Wikipedia, MicroPython RP2 general info).
  • Prix de lancement : la puce RP2040 elle-même est lancée à 1 US$ (avec la carte Pico à 4 US$) (Wikipedia — RP2040).
  • Statut : Actif (toujours en pleine production et toujours la référence de volume de la famille) ; son successeur est la série RP2350 (2024, Cortex-M33/Hazard3 — voir la fiche rp2350-generic) (Wikipedia — RP2040, MicroPython RP2 general info).
  • Concept de « carte générique » : le RP2040 n'a pas de flash interne — chaque concepteur de carte choisit sa propre flash QSPI externe (2–16 MB), son régulateur, son connecteur et son brochage. Cela a produit un écosystème tiers exceptionnellement vaste ; au lancement, Adafruit, Pimoroni, Arduino et SparkFun avaient déjà des conceptions très avancées (Wikipedia — RP2040).
  • Variantes courantes (représentatives, tous les faits sourcés) : - Adafruit Feather RP2040 — 8 MB de flash, 21 GPIO, USB-C, chargeur LiPo (200 mA+), connecteur I²C STEMMA QT, NeoPixel, quartz 12 MHz (page produit Adafruit). Également ItsyBitsy RP2040 (8 MB, micro-USB), QT Py RP2040 (8 MB), Metro RP2040 (16 MB, SD, prise DC) (tableau des cartes Wikipedia, Adafruit). - SparkFun Pro Micro RP2040 (DEV-17717) — 16 MB de flash, 20 GPIO accessibles, connecteur Qwiic, WS2812B, USB-C, fusible PTC à réarmement, LDO AP2112 3,3 V, empreinte Pro Micro, 1,3″×0,7″ (page produit SparkFun, dépôt matériel). Également Thing Plus RP2040 (16 MB, LiPo) et MicroMod RP2040 (16 MB, connecteur de bord) (Wikipedia). - Waveshare RP2040-Zero — format Pico-Zero ultra-économique, 23×18 mm, 2 MB de flash (W25Q16JV), USB-C, boutons BOOT+RESET, LED RGB WS2812, LDO ME6217 (800 mA), 29 GPIO (20 sur le brochage de bord, le reste sur pastilles à souder), bords métallisés pour reflow CMS (page produit Waveshare). Waveshare vend aussi les RP2040-LCD-0.96 (LCD IPS 0.96″ intégré) et RP2040-Plus (4 MB de flash, connecteur batterie) (guide de sélection Waveshare). - Arduino Nano RP2040 Connect — 16 MB de flash + module NINA à base d'ESP32 (Wi-Fi/BT), IMU 9 axes, microphone (Wikipedia). - Seeed XIAO RP2040 (20×17.5 mm, 2 MB, USB-C), Pimoroni Tiny 2040 (8 MB) / PicoSystem (16 MB, console portable), WeAct Studio RP2040 (options 2/4/8/16 MB), OLIMEX RP2040-PICO30 (les 30 GPIO accessibles) (tableau des cartes Wikipedia). - Prix des cartes génériques : environ 3–20 US$ selon le vendeur et les fonctionnalités.

+ Points forts

  • PIO — Programmable I/O (l'argument unique) : 2 blocs PIO × 4 machines d'état = 8 coprocesseurs d'E/S programmables par l'utilisateur qui exécutent des programmes personnalisés de 32 instructions et génèrent des protocoles exacts au bit près sans consommer de temps CPU (datasheet, Adafruit). Implémentations PIO réelles dans les exemples officiels : VGA, audio I²S, matrices de LED (HUB75), NeoPixel/DotStar, I²C/SPI logiciel, encodage/décodage IR NEC, codage Manchester, codeurs quadratiques, one-wire (pico-examples/pio). Adafruit : "create custom hardware logic and data processing blocks that run on their own without taking up a CPU … NeoPixels … I2S audio in or out, LED matrix displays, 8-bit or SPI based TFTs, even VGA" (Adafruit).
  • Double cœur symétrique avec un crossbar AHB entièrement connecté, signalisation inter-cœurs et 32 spinlocks matériels — architecture inhabituelle à ce niveau de prix (datasheet, Wikipedia).
  • 264 Ko de RAM — énorme pour un MCU de la classe des 1 $; les six banques permettent aux accès DMA/GPIO/proc0/proc1 de progresser sans contention (Wikipedia).
  • Conception sans état : la flash est le composant QSPI que l'on soude (512 KB → 16 MB), en XIP avec cache — la raison pour laquelle l'écosystème des cartes génériques a explosé (datasheet, SparkFun).
  • *USB périphérique et hôte* sur le même contrôleur 1.1, plus les piles USB Arduino/CircuitPython basées sur TinyUSB (souris/clavier/HID/MIDI/CDC/MSC) (datasheet, arduino-pico README).
  • Programmation drag-and-drop non bloquante (bootloader ROM UF2 + PICOBOOT) — aucun programmateur externe nécessaire pour quoi que ce soit (datasheet, microsoft/uf2).
  • Marge certifiée : fonctionnement à 200 MHz documenté à 1,15 V cœur, plus une technique documentée d'auto-overclocking par ROSC ; la communauté/MicroPython rapportent plus de 400 MHz sur les bonnes puces (datasheet §2.15.2.1.5, §2.15.3, MicroPython general info).
  • Filiation compétitive/jeu vidéo : par exemple PhobGCC, la populaire carte de manette GameCube à effet Hall open source (utilisée en compétition Smash Bros. Melee), est construite sur le RP2040 (Wikipedia — RP2040, dépôt matériel PhobGCC).

− Points faibles

  • Errata silicium (RP2040 datasheet, annexe B) — entrées vérifiées dans le texte extrait du datasheet (datasheet) : - E9 : le bootloader ROM UF2 ne peut pas démarrer directement dans le cache XIP utilisé comme SRAM (l'astuce des 16 Ko de cache comme RAM supplémentaire nécessite un contournement depuis la SRAM). - E14 : un binaire flash UF2 creux (sparse) ou mal aligné peut être écrit incorrectement dans la flash par le bootloader UF2 — concerne les images UF2 fabriquées à la main. - E12 / E13 (DMA) : lire DMA WRITE_ADDR/READ_ADDR en cours de séquence donne des valeurs fausses ; après l'abandon d'un canal, le statut ABORT s'efface prématurément et une interruption parasite peut se déclencher. - E7 : registres COUNT du ROSC/XOSC peu fiables (ne pas utiliser pour des délais en µs). - Contrôleur USB périphérique : "two hardware issues … with software workarounds on RP2040B0, RP2040B1, and fixed in hardware on RP2040B2" (la révision de silicium compte — B2 est la version courante actuelle) (§4.1.2.8.5).
  • Risque de glitch du multiplexeur d'horloge : le multiplexeur auxiliaire des générateurs d'horloges « présentera des glitchs lors du changement de la commande de sélection » ; clk_sys/clk_ref disposent d'un multiplexeur sans glitch supplémentaire qui doit être piloté avec la séquence de basculement documentée, sinon un périphérique peut recevoir une horloge glitchée (datasheet, chapitre horloges).
  • Pas de FPU / pas de DSP : le Cortex-M0+ calcule en virgule flottante par logiciel ; les charges lourdes en flottant sont bien plus lentes que sur un M4 (utiliser les routines flottantes accélérées de la ROM ou la virgule fixe) (Adafruit).
  • Résolution réelle de l'ADC : 12 bits nominaux mais 8,7 ENOB, référencée à l'alimentation (sensible au bruit de la carte) — prévoir ~9 bits exploitables (datasheet, chapitre ADC).
  • Blocage XIP pendant les écritures flash : le code s'exécute depuis la même flash QSPI que celle que visent les mises à jour du firmware ; l'effacement/la programmation bloque les préchargements d'instructions (le code multicoeur/interruptions doit être écrit en conséquence — le SDK fournit les aides pico_flash/flash_safe_execute).
  • 3,3 V seulement, aucune tolérance 5 V sur aucun GPIO — niveau-shifté tout ce qui est en 5 V (Adafruit).
  • Pièges des cartes génériques : - Nombre de broches ≠ GPIO de la puce : la Waveshare Zero expose 29 des GPIO de la puce mais seulement 20 sur le brochage de bord — le reste uniquement sur des points à souder (Waveshare) ; la SparkFun Pro Micro n'accède qu'à 20 GPIO / 10 canaux PWM (SparkFun). - Réutilisation de BOOTSEL : sur l'Adafruit Feather RP2040, le bouton de boot est aussi câblé sur GPIO4 et sert donc aussi de bouton utilisateur — une broche dont on ne dispose pas forcément proprement (Adafruit, historique des révisions). - LDO économiques : les cartes de classe Zero utilisent de petits LDO (ME6217, 800 mA) sans convertisseur — pas de buck-boost VSYS 1,8–5,5 V à la Pico ; la plage de tension batterie et la marge 3V3 sont ce que donne le régulateur (Waveshare). - Dérive des définitions de carte : des clones très obscurs peuvent ne pas avoir de définition PICO_BOARD=, de build CircuitPython ou de variante uf2 MicroPython ; vérifier le répertoire des cartes du SDK, les téléchargements CircuitPython et la liste de cartes arduino-pico avant l'achat (pico-sdk README).
  • Retour d'expérience expert expert — expert-microcontroleur
    • Bonjour a tous. Je reviens sur la carte rp2040-generic. Les PIO sont effectivement revolutionnaires pour le bit-banging sans toucher au CPU, c'est le vrai point fort. Mais attention aux pieges documentes. L'errata E9 empeche le boot direct en cache-as-SRAM via l'UF2, il faut un workaround depuis la… — expert-microcontroleur
    • Salut expert, merci pour ce retour clair. Je debutte avec la SparkFun Pro Micro RP2040. Tu mentionnes la sensibilite au bruit pour l'ADC. Je compte lire un potentiomètre simple pour un controle de volume. Est-ce que les 9 bits suffisent ou dois-je absolument filtrer ? Par ailleurs, j'ai vu des disc… — maker-debutant-42
    • @maker-debutant-42 pour ton potar, 9 bits c'est correct pour un volume, mais si tu as un bruit de fond sur ta ligne 3.3V, ca sautera. Le glitch de clock est reel : le datasheet dit que le mux auxiliaire peut creer des glitches si tu ne suis pas la sequence officielle. Si tu utilises MicroPython, ev… — pio-hacker

Retours et projets de la communauté

  • Official PIO example suite

    Official PIO example suite — blink, NeoPixel/DotStar (apa102), HUB75 LED matrix, I²C master, IR NEC RX/TX, Manchester encoder, quadrature encoder, one-wire, PIO SPI/PWM: . (unverified au 2026-10-13) PhobGCC — open-source Hall-effect GameCube controller (RP204…

  • MicroPython PIO blink-1 Hz + NeoPixel drivers

    MicroPython PIO blink-1 Hz + NeoPixel drivers — canonical PIO-from-Python tutorials: . (unverified au 2026-10-13) — référence hébergé sur docs, statut unverified vérifié le 2026-10-13. Projet documenté dans la fiche rp2040-generic (MCU 32-bit) ; rôle : approf…

  • "Intro to RP2040 PIO with CircuitPython"

    "Intro to RP2040 PIO with CircuitPython" — Adafruit's guide to the PIO state machines from Python: . (unverified au 2026-10-13) Arduino on any RP2040 board (Earle Philhower core) — bring-up of Feather/Pro Micro/XIAO/Waveshare boards in the Arduino IDE: , . (u…

Contenu indisponible pour le moment.

  • Errata silicium (RP2040 datasheet, annexe B) — entrées vérifiées dans le texte extrait du datasheet (datasheet) : - E9 : le bootloader ROM UF2 ne peut pas démarrer directement dans le cache XIP utilisé comme SRAM (l'astuce des 16 Ko de cache comme RAM supplémentaire nécessite un contournement depuis la SRAM). - E14 : un binaire flash UF2 creux (sparse) ou mal aligné peut être écrit incorrectement dans la flash par le bootloader UF2 — concerne les images UF2 fabriquées à la main. - E12 / E13 (DMA) : lire DMA WRITE_ADDR/READ_ADDR en cours de séquence donne des valeurs fausses ; après l'abandon d'un canal, le statut ABORT s'efface prématurément et une interruption parasite peut se déclencher. - E7 : registres COUNT du ROSC/XOSC peu fiables (ne pas utiliser pour des délais en µs). - Contrôleur USB périphérique : "two hardware issues … with software workarounds on RP2040B0, RP2040B1, and fixed in hardware on RP2040B2" (la révision de silicium compte — B2 est la version courante actuelle) (§4.1.2.8.5).
  • Risque de glitch du multiplexeur d'horloge : le multiplexeur auxiliaire des générateurs d'horloges « présentera des glitchs lors du changement de la commande de sélection » ; clk_sys/clk_ref disposent d'un multiplexeur sans glitch supplémentaire qui doit être piloté avec la séquence de basculement documentée, sinon un périphérique peut recevoir une horloge glitchée (datasheet, chapitre horloges).
  • Pas de FPU / pas de DSP : le Cortex-M0+ calcule en virgule flottante par logiciel ; les charges lourdes en flottant sont bien plus lentes que sur un M4 (utiliser les routines flottantes accélérées de la ROM ou la virgule fixe) (Adafruit).
  • Résolution réelle de l'ADC : 12 bits nominaux mais 8,7 ENOB, référencée à l'alimentation (sensible au bruit de la carte) — prévoir ~9 bits exploitables (datasheet, chapitre ADC).
  • Blocage XIP pendant les écritures flash : le code s'exécute depuis la même flash QSPI que celle que visent les mises à jour du firmware ; l'effacement/la programmation bloque les préchargements d'instructions (le code multicoeur/interruptions doit être écrit en conséquence — le SDK fournit les aides pico_flash/flash_safe_execute).
  • 3,3 V seulement, aucune tolérance 5 V sur aucun GPIO — niveau-shifté tout ce qui est en 5 V (Adafruit).
  • Pièges des cartes génériques : - Nombre de broches ≠ GPIO de la puce : la Waveshare Zero expose 29 des GPIO de la puce mais seulement 20 sur le brochage de bord — le reste uniquement sur des points à souder (Waveshare) ; la SparkFun Pro Micro n'accède qu'à 20 GPIO / 10 canaux PWM (SparkFun). - Réutilisation de BOOTSEL : sur l'Adafruit Feather RP2040, le bouton de boot est aussi câblé sur GPIO4 et sert donc aussi de bouton utilisateur — une broche dont on ne dispose pas forcément proprement (Adafruit, historique des révisions). - LDO économiques : les cartes de classe Zero utilisent de petits LDO (ME6217, 800 mA) sans convertisseur — pas de buck-boost VSYS 1,8–5,5 V à la Pico ; la plage de tension batterie et la marge 3V3 sont ce que donne le régulateur (Waveshare). - Dérive des définitions de carte : des clones très obscurs peuvent ne pas avoir de définition PICO_BOARD=, de build CircuitPython ou de variante uf2 MicroPython ; vérifier le répertoire des cartes du SDK, les téléchargements CircuitPython et la liste de cartes arduino-pico avant l'achat (pico-sdk README).
  • Piloter la LED RGB embarquée WS2812 d'une carte RP2040 générique debutant Schéma : IMG-rp2040-generic-debutant-1-rp2040-neopixel-ws2812.svg — carte RP2040 générique type Waveshare Zero avec sa LED WS2812 sur GP16 mise en évidence, câble USB-C branché, puce PIO représentée générant le signal
  • Avoir une console série sur une carte sans pont USB (UART0) debutant Schéma : IMG-rp2040-generic-debutant-2-rp2040-console-serie-uart.svg — carte RP2040 générique reliée à un adaptateur USB-TTL : GP0 TX vers RX de l'adaptateur, GP1 RX vers TX, masses communes, terminal série à 115200 bauds
  • Jouer une mélodie avec un buzzer passif et le PWM debutant Schéma : IMG-rp2040-generic-debutant-3-rp2040-buzzer-pwm-melodie.svg — buzzer passif relié à GP8 et GND d'une carte RP2040 générique, forme d'onde carrée 440 Hz annotée, portée avec les notes
  • Afficher sur un OLED I2C SSD1306 et déboguer le bus intermediaire Schéma : IMG-rp2040-generic-intermediaire-1-rp2040-i2c-oled-ssd1306.svg — module OLED 0,96 pouces SSD1306 relié en I2C à une carte RP2040 générique : VCC 3V3, GND, SDA sur GP4, SCL sur GP5, écran affichant température et texte
  • Logger sur carte microSD en SPI (mode carte) intermediaire Schéma : IMG-rp2040-generic-intermediaire-2-rp2040-sdcard-spi.svg — module lecteur microSD relié en SPI à une carte RP2040 générique : GP2 CS, GP3 MOSI, GP4 MISO, GP5 SCK, 3V3 et GND, fichier journal avec horodatages
  • Interruptions GPIO et alarmes matérielles avec le Pico SDK intermediaire Schéma : IMG-rp2040-generic-intermediaire-3-rp2040-interruptions-timer.svg — carte RP2040 avec bouton sur GP2, chronogramme front descendant déclenchant l'IRQ IO_BANK0 puis une alarme du timer 50 ms plus tard, LED de réponse
  • Transformer la carte en clavier USB HID avec TinyUSB avance Schéma : IMG-rp2040-generic-avance-1-rp2040-usb-hid-clavier.svg — carte RP2040 générique branchée en USB sur un PC, icône clavier virtuel, bouton physique GP2 envoyant la lettre A, descripteur de rapport HID représenté
  • Acquisition ADC à haute fréquence avec le DMA sans CPU avance Schéma : IMG-rp2040-generic-avance-2-rp2040-dma-adc.svg — puce RP2040 avec le routeur DMA reliant ADC et SPI à un buffer en SRAM, deux buffers ping-pong, oscilloscope montrant un signal échantillonné, CPU endormi
  • Overclocker le RP2040 à 200 MHz (et au-delà) en toute connaissance avance Schéma : IMG-rp2040-generic-avance-3-rp2040-overclock-200mhz.svg — puce RP2040 avec régulateur VREG et boucle ROSC, clock XOSC 12 MHz multiplié vers 200 MHz, jauge de fréquence 133 vers 200 MHz, thermomètre de la puce

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