Comment se répètent les fonctions des broches du RP2040
Contrairement à l’ESP32, le RP2040 n’a pas de matrice GPIO : chaque signal d’un périphérique ne peut apparaître que sur certaines broches. La bonne nouvelle, c’est que le tableau suit un motif régulier : on peut le retrouver sans datasheet.
L’I²C alterne toutes les deux broches : GP0 et GP1 sont SDA et SCL d’I²C0, GP2 et GP3 ceux d’I²C1, GP4 et GP5 de nouveau ceux d’I²C0, et ainsi de suite. SDA est toujours sur une broche paire et SCL sur une impaire, et les deux doivent appartenir au même contrôleur : GP4 avec GP5 fonctionne, GP4 avec GP9 aussi.
Le SPI va par groupes de quatre broches, dans l’ordre RX (MISO), CSn, SCK et TX (MOSI). GP0 à GP7 appartiennent à SPI0, GP8 à GP15 à SPI1, GP16 à GP23 de nouveau à SPI0. L’UART suit un schéma similaire, avec TX sur la première broche de chaque groupe de quatre et RX sur la deuxième.
Le PWM compte 8 slices de deux sorties chacune, A sur les broches paires et B sur les impaires. GP0 et GP16 sont tous deux reliés à la sortie A de la slice 0 : si vous utilisez les deux, ils portent le même signal. Deux broches de la même slice, comme GP2 et GP3, partagent la fréquence mais peuvent avoir des rapports cycliques différents.
Les broches que la carte garde pour elle
Quatre GPIO du RP2040 ne sont pas sur le connecteur. GP23 commande le mode économie d’énergie du convertisseur à découpage, GP24 détecte l’alimentation USB, GP25 pilote la LED de la carte et GP29 mesure VSYS via un pont diviseur sur l’ADC3. Sur le Pico W, GP23 à GP25 sont utilisés par la puce sans fil, GP29 est partagé entre son horloge et la mesure de VSYS, et la LED se commande via la puce sans fil.
Tableau complet des GPIO du Raspberry Pi Pico
| GPIO | Broche | I²C | SPI | UART | PWM | ADC |
|---|---|---|---|---|---|---|
| GP0 | 1 | I2C0 SDA | SPI0 RX | UART0 TX | PWM0 A | — |
| GP1 | 2 | I2C0 SCL | SPI0 CSn | UART0 RX | PWM0 B | — |
| GP2 | 4 | I2C1 SDA | SPI0 SCK | UART0 CTS | PWM1 A | — |
| GP3 | 5 | I2C1 SCL | SPI0 TX | UART0 RTS | PWM1 B | — |
| GP4 | 6 | I2C0 SDA | SPI0 RX | UART1 TX | PWM2 A | — |
| GP5 | 7 | I2C0 SCL | SPI0 CSn | UART1 RX | PWM2 B | — |
| GP6 | 9 | I2C1 SDA | SPI0 SCK | UART1 CTS | PWM3 A | — |
| GP7 | 10 | I2C1 SCL | SPI0 TX | UART1 RTS | PWM3 B | — |
| GP8 | 11 | I2C0 SDA | SPI1 RX | UART1 TX | PWM4 A | — |
| GP9 | 12 | I2C0 SCL | SPI1 CSn | UART1 RX | PWM4 B | — |
| GP10 | 14 | I2C1 SDA | SPI1 SCK | UART1 CTS | PWM5 A | — |
| GP11 | 15 | I2C1 SCL | SPI1 TX | UART1 RTS | PWM5 B | — |
| GP12 | 16 | I2C0 SDA | SPI1 RX | UART0 TX | PWM6 A | — |
| GP13 | 17 | I2C0 SCL | SPI1 CSn | UART0 RX | PWM6 B | — |
| GP14 | 19 | I2C1 SDA | SPI1 SCK | UART0 CTS | PWM7 A | — |
| GP15 | 20 | I2C1 SCL | SPI1 TX | UART0 RTS | PWM7 B | — |
| GP16 | 21 | I2C0 SDA | SPI0 RX | UART0 TX | PWM0 A | — |
| GP17 | 22 | I2C0 SCL | SPI0 CSn | UART0 RX | PWM0 B | — |
| GP18 | 24 | I2C1 SDA | SPI0 SCK | UART0 CTS | PWM1 A | — |
| GP19 | 25 | I2C1 SCL | SPI0 TX | UART0 RTS | PWM1 B | — |
| GP20 | 26 | I2C0 SDA | SPI0 RX | UART1 TX | PWM2 A | — |
| GP21 | 27 | I2C0 SCL | SPI0 CSn | UART1 RX | PWM2 B | — |
| GP22 | 29 | I2C1 SDA | SPI0 SCK | UART1 CTS | PWM3 A | — |
| GP26 | 31 | I2C1 SDA | SPI1 SCK | UART1 CTS | PWM5 A | ADC0 |
| GP27 | 32 | I2C1 SCL | SPI1 TX | UART1 RTS | PWM5 B | ADC1 |
| GP28 | 34 | I2C0 SDA | SPI1 RX | UART0 TX | PWM6 A | ADC2 |
Broches par défaut du Pico SDK : I²C0 sur GP4/GP5, SPI0 de GP16 à GP19, UART0 sur GP0/GP1. MicroPython et les cores Arduino peuvent utiliser d’autres valeurs par défaut : vérifiez la documentation de celui que vous utilisez.
Questions fréquentes
Le Raspberry Pi Pico tolère-t-il le 5 V ?
Non. Les GPIO du RP2040 fonctionnent en 3,3 V et ne tolèrent pas le 5 V. Pour les signaux 5 V, utilisez un convertisseur de niveaux logiques ou un pont diviseur résistif. VSYS accepte jusqu’à 5,5 V, mais c’est une entrée d’alimentation, pas une broche de signal.
Quelles broches du Pico sont analogiques ?
GP26, GP27 et GP28, sur les broches physiques 31, 32 et 34, sont les trois entrées ADC du connecteur. Un quatrième canal, GP29, mesure VSYS sur la carte, et un cinquième lit le capteur de température interne.
Peut-on utiliser n’importe quelles broches pour l’I2C sur le Pico ?
Pas n’importe lesquelles, mais beaucoup : les fonctions I²C alternent toutes les deux broches entre I²C0 et I²C1. Choisissez SDA sur une broche paire et SCL sur une broche impaire du même contrôleur, par exemple GP4 et GP5 pour I²C0, GP6 et GP7 pour I²C1, ou GP4 et GP9, toutes deux sur I²C0.
Pourquoi deux broches PWM changent-elles ensemble ?
Les broches dont les numéros diffèrent de 16, comme GP0 et GP16, sont reliées à la même slice et à la même sortie PWM. Régler l’une change l’autre. Choisissez des broches sur des slices différentes, ou les sorties A et B d’une même slice si la même fréquence vous convient.
Ce brochage vaut-il aussi pour le Pico W et le Pico 2 ?
Le Pico W a la même disposition de connecteur ; seules les broches internes GP23 à GP25 et GP29 changent de rôle, car elles sont reliées à la puce sans fil. Le Pico 2 garde lui aussi la même disposition, mais sa puce RP2350 ajoute des fonctions : consultez sa datasheet pour les détails.