RP2040 (carte / puce générique)
⚡ L’essentiel en 60 secondes
- cpu — dual 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_dsp — on 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_extras — integer divider + 2 hardware interpolators each (Wikipedia).
- gpu — none (bit-banged VGA/DVI is done with PIO — see Features).
- ram — 264 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).
- storage — no 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).
- Sur cette fiche : 9 tutoriels · 10 codes
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.



Schéma de brochage (pinout)
| Attr | Specs | vérifié |
|---|---|---|
cpu | dual 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_dsp | on 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_extras | integer divider + 2 hardware interpolators each (Wikipedia). | ✔ |
gpu | none (bit-banged VGA/DVI is done with PIO — see Features). | ? non vérifié |
ram | 264 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). | ✔ |
storage | no 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). | ✔ |
connectivity | no 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). | ✔ |
gpio | 30 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_peripherals | 2 × 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). | ✔ |
clocking | 12 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_varies | Waveshare 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). | ✔ |
temperature | RP2040 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é
- Powering an RP2040-lcd-1.28 with 5V via battery connector? forum.arduino.cc
- Issues with I2C Communication on Waveshare RP2040-Zero forum.arduino.cc
- Rust RP2040 `entry` differences stackoverflow.com
- I like the RP2040 dgroshev.com
- RP2040 Doom kilograham.github.io
Contenu indisponible pour le moment.
- RP2040 datasheet (official, 642 p., incl. PIO instruction set + Appendix B errata)
- pico-sdk README
- Getting Started with Pico-series / C SDK books
- Getting Started with Pico-series / C SDK books
- Pico SDK
- Pico SDK
- general info
- repo
- MicroPython RP2 port
- CircuitPython
- CircuitPython
- Adafruit guide
- Arduino core (community)
- Rust
- Rust
- Adafruit Feather RP2040
- Adafruit ItsyBitsy RP2040
- SparkFun Pro Micro RP2040
- hardware repo
- Waveshare RP2040-Zero
- Wikipedia RP2040 board table
- Raspberry Pi Pico forums
- rp-rs Matrix chat
- 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.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPythoncapteur-dht.pyPythonjournalisation.pyPythonuart-commandes.pyPythontaches-cooperatives.pyPython
Exemples et dépôts trouvés en ligne
- raspberrypi/pico-examples github.com
- raspberrypi/pico-sdk github.com
- micropython/micropython github.com
- earlephilhower/arduino-pico github.com