Brochage Raspberry Pi : le connecteur GPIO 40 broches
Le connecteur GPIO 40 broches du Raspberry Pi (du B+ au Pi 5 en passant par les Pi 2, 3 et 4, et tous les Zero) porte deux broches 3,3 V, deux broches 5 V, huit masses, 26 GPIO et deux broches d’EEPROM d’identification, en logique 3,3 V non tolérante au 5 V. Le numéro physique (1 à 40) diffère du numéro GPIO BCM utilisé dans le code.
Par Hugues Orgitello · Mis à jour le ·
Connecteur GPIO 40 broches, pas de 2,54 mm
Numéros physiques et GPIO BCM identiques du Pi 1 B+ au Pi 5 et sur les Zero. Colonne Pi 1 à 4 : fonctions alternatives communes au BCM2835 et au BCM2711 (le Pi 4 en ajoute d’autres). Colonne Pi 5 : fonctions du RP1 (aN = FUNCSEL N) sur les mêmes bus. Les pull-ups citées sont celles de la carte.
| Broche | Signal | Sens | GPIO BCM | Fonctions alt. Pi 1 à 4 | Pi 5 (RP1) | Description |
|---|---|---|---|---|---|---|
| 1 | 3V3 | - | - | - | Alimentation 3,3 V fournie par la carte, pour des charges faibles (Alimentation) | |
| 2 | 5V | - | - | - | 5 V de la carte, en sortie ; ou entrée d’alimentation 5 V (HAT d’alimentation, PoE) (Alimentation) | |
| 3 | SDA1 | E/S | 2 | ALT0 SDA1 (I2C1) | a3 I2C1_SDA | Données I2C1 ; pull-up de 1,8 kΩ vers 3,3 V sur la carte (Signal) |
| 4 | 5V | - | - | - | 5 V de la carte, en sortie ; ou entrée d’alimentation 5 V (HAT d’alimentation, PoE) (Alimentation) | |
| 5 | SCL1 | E/S | 3 | ALT0 SCL1 (I2C1) | a3 I2C1_SCL | Horloge I2C1 ; pull-up de 1,8 kΩ vers 3,3 V sur la carte (Signal) |
| 6 | GND | - | - | - | Masse (Masse) | |
| 7 | GPCLK0 | E/S | 4 | ALT0 GPCLK0 | a0 GPCLK[0] | Sortie d’horloge générale 0, ou E/S générale (Signal) |
| 8 | TXD | E/S | 14 | ALT0 TXD0 (UART0), ALT5 TXD1 (mini UART) | a4 UART0_TX, a0 PWM0[2] | Émission de l’UART principal (UART0, ou mini UART sur Pi 3, 4 et Zero W) (Signal) |
| 9 | GND | - | - | - | Masse (Masse) | |
| 10 | RXD | E/S | 15 | ALT0 RXD0 (UART0), ALT5 RXD1 (mini UART) | a4 UART0_RX, a0 PWM0[3] | Réception de l’UART principal (UART0, ou mini UART sur Pi 3, 4 et Zero W) (Signal) |
| 11 | GPIO17 | E/S | 17 | ALT3 RTS0, ALT4 SPI1_CE1_N, ALT5 RTS1 | a0 SPI1_CSn[1], a4 UART0_RTS | E/S générale ; CE1 du bus SPI1 (Signal) |
| 12 | PCM_CLK | E/S | 18 | ALT0 PCM_CLK, ALT4 SPI1_CE0_N, ALT5 PWM0_0 | a0 SPI1_CSn[0], a2 I2S0_SCLK, a3 PWM0[2] | Horloge audio PCM/I2S ; CE0 de SPI1 ; PWM (Signal) |
| 13 | GPIO27 | E/S | 27 | ALT4 ARM_TMS (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 14 | GND | - | - | - | Masse (Masse) | |
| 15 | GPIO22 | E/S | 22 | ALT4 ARM_TRST (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 16 | GPIO23 | E/S | 23 | ALT4 ARM_RTCK (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 17 | 3V3 | - | - | - | Alimentation 3,3 V fournie par la carte, pour des charges faibles (Alimentation) | |
| 18 | GPIO24 | E/S | 24 | ALT4 ARM_TDO (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 19 | SPI0_MOSI | E/S | 10 | ALT0 SPI0_MOSI | a0 SPI0_SIO[0] (MOSI) | Données SPI0 du maître vers l’esclave (Signal) |
| 20 | GND | - | - | - | Masse (Masse) | |
| 21 | SPI0_MISO | E/S | 9 | ALT0 SPI0_MISO | a0 SPI0_SIO[1] (MISO) | Données SPI0 de l’esclave vers le maître (Signal) |
| 22 | GPIO25 | E/S | 25 | ALT4 ARM_TCK (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 23 | SPI0_SCLK | E/S | 11 | ALT0 SPI0_SCLK | a0 SPI0_SCLK | Horloge SPI0 (Signal) |
| 24 | SPI0_CE0_N | E/S | 8 | ALT0 SPI0_CE0_N | a0 SPI0_CSn[0] | Sélection de boîtier 0 de SPI0, active basse (Signal) |
| 25 | GND | - | - | - | Masse (Masse) | |
| 26 | SPI0_CE1_N | E/S | 7 | ALT0 SPI0_CE1_N | a0 SPI0_CSn[1] | Sélection de boîtier 1 de SPI0, active basse (Signal) |
| 27 | ID_SD | E/S | 0 | ALT0 SDA0 (I2C0) | a3 I2C0_SDA | Données I2C de l’EEPROM d’identification du HAT ; rien d’autre sur cette broche (Configuration) |
| 28 | ID_SC | E/S | 1 | ALT0 SCL0 (I2C0) | a3 I2C0_SCL | Horloge I2C de l’EEPROM d’identification du HAT ; rien d’autre sur cette broche (Configuration) |
| 29 | GPCLK1 | E/S | 5 | ALT0 GPCLK1 | a0 GPCLK[1] | Sortie d’horloge générale 1, ou E/S générale (Signal) |
| 30 | GND | - | - | - | Masse (Masse) | |
| 31 | GPCLK2 | E/S | 6 | ALT0 GPCLK2 | a0 GPCLK[2] | Sortie d’horloge générale 2, ou E/S générale (Signal) |
| 32 | PWM0_0 | E/S | 12 | ALT0 PWM0_0 | a0 PWM0[0] | Sortie PWM, canal 0 (Signal) |
| 33 | PWM0_1 | E/S | 13 | ALT0 PWM0_1 | a0 PWM0[1] | Sortie PWM, canal 1 (Signal) |
| 34 | GND | - | - | - | Masse (Masse) | |
| 35 | PCM_FS | E/S | 19 | ALT0 PCM_FS, ALT4 SPI1_MISO, ALT5 PWM0_1 | a0 SPI1_SIO[1] (MISO), a2 I2S0_WS, a3 PWM0[3] | Synchro de trame audio PCM/I2S ; MISO de SPI1 ; PWM (Signal) |
| 36 | GPIO16 | E/S | 16 | ALT3 CTS0, ALT4 SPI1_CE2_N, ALT5 CTS1 | a0 SPI1_CSn[2], a4 UART0_CTS | E/S générale ; CE2 du bus SPI1 (Signal) |
| 37 | GPIO26 | E/S | 26 | ALT4 ARM_TDI (JTAG) | - | Aucune fonction dédiée : E/S générale (Signal) |
| 38 | PCM_DIN | E/S | 20 | ALT0 PCM_DIN, ALT4 SPI1_MOSI, ALT5 GPCLK0 | a0 SPI1_SIO[0] (MOSI), a2 I2S0_SDI[0], a3 GPCLK[0] | Entrée de données audio PCM/I2S ; MOSI de SPI1 (Signal) |
| 39 | GND | - | - | - | Masse (Masse) | |
| 40 | PCM_DOUT | E/S | 21 | ALT0 PCM_DOUT, ALT4 SPI1_SCLK, ALT5 GPCLK1 | a0 SPI1_SCLK, a2 I2S0_SDO[0], a3 GPCLK[1] | Sortie de données audio PCM/I2S ; horloge de SPI1 (Signal) |
Pi 1 modèles A et B : connecteur P1 26 broches, révisions 1 et 2
Seules les broches 3, 5 et 13 changent de GPIO BCM entre la révision 1 (PCB de septembre 2012 ou avant) et la révision 2. Les broches 4, 9, 14, 17, 20 et 25, marquées DNC dans la première documentation, portent bien 5 V, 3,3 V et masse. La révision 2 correspond aux 26 premières broches du connecteur 40 broches.
| Broche | Signal | Sens | Révision 1 (GPIO BCM) | Révision 2 (GPIO BCM) | Description |
|---|---|---|---|---|---|
| 1 | 3V3 | - | - | Alimentation 3,3 V (Alimentation) | |
| 2 | 5V | - | - | 5 V après le polyfuse d’entrée (Alimentation) | |
| 3 | SDA0 / SDA1 | E/S | GPIO0 (SDA0) | GPIO2 (SDA1) | Données I2C : bus I2C0 en révision 1, I2C1 en révision 2 ; pull-up de 1,8 kΩ (Signal) |
| 4 | 5V | - | - | 5 V (marquée DNC en révision 1) (Alimentation) | |
| 5 | SCL0 / SCL1 | E/S | GPIO1 (SCL0) | GPIO3 (SCL1) | Horloge I2C : bus I2C0 en révision 1, I2C1 en révision 2 ; pull-up de 1,8 kΩ (Signal) |
| 6 | GND | - | - | Masse (Masse) | |
| 7 | GPCLK0 | E/S | GPIO4 | GPIO4 | Horloge générale 0, ou E/S générale (Signal) |
| 8 | TXD0 | E/S | GPIO14 | GPIO14 | Émission UART0, console série par défaut (Signal) |
| 9 | GND | - | - | Masse (marquée DNC en révision 1) (Masse) | |
| 10 | RXD0 | E/S | GPIO15 | GPIO15 | Réception UART0 (Signal) |
| 11 | GPIO17 | E/S | GPIO17 | GPIO17 | Aucune fonction dédiée : E/S générale (Signal) |
| 12 | PCM_CLK | E/S | GPIO18 | GPIO18 | Horloge PCM, ou PWM (ALT5) (Signal) |
| 13 | GPIO21 / GPIO27 | E/S | GPIO21 | GPIO27 | E/S générale ; GPIO27 en révision 2, ce qui amène ARM_TMS sur le connecteur (Signal) |
| 14 | GND | - | - | Masse (marquée DNC en révision 1) (Masse) | |
| 15 | GPIO22 | E/S | GPIO22 | GPIO22 | Aucune fonction dédiée : E/S générale (Signal) |
| 16 | GPIO23 | E/S | GPIO23 | GPIO23 | Aucune fonction dédiée : E/S générale (Signal) |
| 17 | 3V3 | - | - | Alimentation 3,3 V (marquée DNC en révision 1) (Alimentation) | |
| 18 | GPIO24 | E/S | GPIO24 | GPIO24 | Aucune fonction dédiée : E/S générale (Signal) |
| 19 | SPI0_MOSI | E/S | GPIO10 | GPIO10 | Données SPI0 du maître vers l’esclave (Signal) |
| 20 | GND | - | - | Masse (marquée DNC en révision 1) (Masse) | |
| 21 | SPI0_MISO | E/S | GPIO9 | GPIO9 | Données SPI0 de l’esclave vers le maître (Signal) |
| 22 | GPIO25 | E/S | GPIO25 | GPIO25 | Aucune fonction dédiée : E/S générale (Signal) |
| 23 | SPI0_SCLK | E/S | GPIO11 | GPIO11 | Horloge SPI0 (Signal) |
| 24 | SPI0_CE0_N | E/S | GPIO8 | GPIO8 | Sélection de boîtier 0 de SPI0, active basse (Signal) |
| 25 | GND | - | - | Masse (marquée DNC en révision 1) (Masse) | |
| 26 | SPI0_CE1_N | E/S | GPIO7 | GPIO7 | Sélection de boîtier 1 de SPI0, active basse (Signal) |
Un HAT ou une carte d’extension à concevoir pour Raspberry Pi, avec EEPROM d’identification, alimentation par le connecteur et protection des E/S ? Nous en assurons la conception électronique et le routage.
Numéro physique ou numéro BCM ?
Le numéro physique suit la position sur le connecteur : impairs sur la rangée intérieure, pairs sur la rangée du bord. Le code, lui, utilise le numéro GPIO du processeur (numérotation BCM) : la broche 11 est GPIO17, la broche 3 est GPIO2. Sur un Raspberry Pi, la commande pinout affiche la correspondance.
Les 26 premières broches reprennent le connecteur P1 des Pi 1 A et B de révision 2 ; la révision 1 diffère sur les broches 3, 5 et 13 (voir le tableau ci-dessus). Sur le Pi 5, le contrôleur d’E/S RP1 remplace le processeur pour le GPIO, mais ses fonctions ont été placées pour retrouver celles du Pi 4 sur le connecteur : les numéros BCM et les bus principaux ne changent pas.
Niveaux logiques et courant
3,3 V, pas 5 V. Les GPIO ne sont pas tolérants au 5 V ; un signal 5 V appliqué directement peut détruire le processeur. Un capteur ou un module 5 V passe par un adaptateur de niveau. Seules les broches 2 et 4 portent du 5 V.
Courant. La documentation Raspberry Pi donne jusqu’à 16 mA par broche et 50 mA au total pour l’ensemble des GPIO. Le réglage de drive n’est pas une limite de courant : c’est le courant jusqu’auquel les niveaux de sortie restent garantis. Sur Pi 4 (BCM2711), le drive par défaut est de 4 mA et le maximum de 8 mA ; sur Pi 5, le RP1 propose 2, 4, 8 ou 12 mA. Une LED passe par une résistance, un moteur ou un relais par un étage de puissance.
Rail 3,3 V. Raspberry Pi indique que l’alimentation 3,3 V a été dimensionnée pour environ 3 mA par GPIO, et ne publie pas de courant disponible sur les broches 1 et 17 dans ces documents : réservez-les à la logique et aux capteurs, et alimentez le reste depuis le 5 V avec votre propre régulateur. Depuis le Pi 4, l’état STANDBY garde le 5 V et coupe le 3,3 V : une carte d’extension doit le supporter. Ne raccordez jamais une source d’alimentation sur les broches 3,3 V.
Pull-ups et état au démarrage
GPIO2 et GPIO3 (broches 3 et 5) ont des pull-ups fixes de 1,8 kΩ vers 3,3 V sur la carte (la spécification HAT+ parle d’environ 2 kΩ). Inutile d’en ajouter sur le module I2C ; elles empêchent aussi d’utiliser ces broches comme entrées tirées au niveau bas.
Au démarrage, toutes les broches sont des entrées avec une pull faible. Sur BCM2835 et BCM2711, GPIO0 à GPIO8 démarrent en pull-up et GPIO9 à GPIO27 en pull-down. La spécification HAT+ demande de tolérer l’un ou l’autre : si une sortie de votre carte doit rester dans un état précis au démarrage (activation d’un étage de puissance, reset), mettez une résistance externe.
Broches 27 et 28 : l’EEPROM d’identification
ID_SD (GPIO0) et ID_SC (GPIO1) sont réservées à l’EEPROM d’identification d’un HAT. Seules connexions autorisées : l’EEPROM et deux pull-ups de 3,9 kΩ vers 3,3 V, sur la carte d’extension. Au démarrage, le firmware lit l’EEPROM et charge l’overlay Device Tree qu’elle désigne.
La spécification HAT+ impose une EEPROM I2C 24Cxx en 3,3 V, à adressage 16 bits, sans étirement d’horloge ni pagination par bit d’adresse, avec une broche WP qui protège toute la mémoire ; 100 kHz suffit. Elle recommande la CAT24C32 et une broche WP tirée au 3,3 V par 1 kΩ, reliée à un point de test pour la programmation en production.
Alimenter le Pi par les broches 5 V
Les broches 2 et 4 peuvent alimenter le Pi (HAT PoE, carte d’alimentation). Le guide HAT d’origine précise que ces broches sont reliées au 5 V après le polyfuse et la diode d’entrée : ce chemin contourne la protection d’entrée. La spécification HAT+ demande qu’une carte d’alimentation fournisse au moins 3 A sous 5,1 V (5 A recommandés), ne fasse que fournir du courant et reste sûre si l’alimentation USB-C est branchée en même temps.
L’ancien guide de conception HAT recommandait une diode idéale côté carte d’extension, d’autant que les Pi 3B+, 4B et Zero n’ont pas de diode idéale sur leur entrée 5 V. Dans le doute, nous la prévoyons.
Quel UART sur les broches 8 et 10 ?
Sur les modèles avec Bluetooth (Pi 3, Pi 4, Zero W, Zero 2 W), l’UART complet PL011 est réservé au Bluetooth et GPIO14/GPIO15 portent par défaut le mini UART, moins robuste (pas de parité, débit lié à l’horloge du VPU). Sur Pi 5, la console passe par le connecteur de débogage 3 broches dédié (UART10) ; l’UART0 de GPIO14/GPIO15 est désactivé par défaut et s’active dans config.txt. Tous les UART sont en 3,3 V.
Ce qui change sur le Pi 5
Mêmes broches, même numérotation BCM, mêmes bus principaux (I2C1, SPI0, SPI1, UART0, PWM, GPCLK), mais tout passe par le RP1. Différences utiles en conception : seuils d’entrée de 0,8 V et 2,0 V, pull-up internes de 37 à 86 kΩ et pull-down de 35 à 98 kΩ, drive réglable à 2, 4, 8 ou 12 mA, quatre canaux PWM (PWM0[2] et PWM0[3] aussi sur GPIO14/15 et GPIO18/19), audio nommé I2S au lieu de PCM, et plus de mini UART.
FAQ
- Les GPIO du Raspberry Pi sont-ils tolérants au 5 V ?
- Non. Les GPIO fonctionnent en 3,3 V et un signal 5 V appliqué directement peut endommager définitivement le processeur. Utilisez un adaptateur de niveau, ou un module ou un câble série prévu pour le 3,3 V.
- Quel courant peut fournir une broche GPIO ?
- La documentation Raspberry Pi indique jusqu’à 16 mA par broche et 50 mA au total pour l’ensemble des GPIO. Le réglage de drive (8 mA maximum sur Pi 4, 12 mA sur Pi 5) fixe le courant jusqu’auquel les niveaux restent garantis, pas une limite. Au-delà d’une LED, passez par un transistor ou un circuit de commande.
- Quelles broches utiliser pour l’I2C ?
- Les broches 3 (GPIO2, SDA1) et 5 (GPIO3, SCL1), qui ont déjà des pull-ups de 1,8 kΩ sur la carte. Les broches 27 et 28 portent aussi un bus I2C, mais il est réservé à l’EEPROM d’identification des HAT : n’y branchez rien d’autre.
- Peut-on alimenter un Raspberry Pi par les broches 5 V du GPIO ?
- Oui, c’est ce que font les HAT PoE et les cartes d’alimentation. Ce chemin contourne la protection d’entrée de la carte : la source doit être régulée, ne fournir que du courant, tenir au moins 3 A sous 5,1 V selon la spécification HAT+, et rester sûre si l’USB-C est branché en même temps.
- Le brochage GPIO du Raspberry Pi 5 est-il différent ?
- Non pour les broches et les bus principaux : mêmes numéros BCM, I2C1, SPI0, SPI1, UART0 et PWM aux mêmes endroits. Les E/S passent par le contrôleur RP1, avec d’autres réglages de drive et de pull, l’audio en I2S, et la console série déplacée sur un connecteur dédié.
- Raspberry Pi documentation, 40-pin GPIO header (pin table, voltage specifications)
- Raspberry Pi documentation, GPIO pads control (drive strength, 3.3 V supply)
- Raspberry Pi documentation, Configure UARTs
- Raspberry Pi documentation, Serial Peripheral Interface (SPI)
- Broadcom, BCM2835 ARM Peripherals, section 6.2 Alternative Function Assignments
- Raspberry Pi, BCM2711 ARM Peripherals, section 5.3 Alternative Function Assignments
- Raspberry Pi, RP1 Peripherals, section 3.1.1 Function select
- Raspberry Pi, HAT+ Specification
- Raspberry Pi, original HAT design guide (deprecated; back-powering section)
- Pinout.xyz, Raspberry Pi GPIO pinout (cross-check)
- Raspberry Pi, Upcoming board revision (2012): revision 2.0 changes to P1 pins 3, 5 and 13
- eLinux.org, RPi Low-level peripherals: P1 header, revision 1 and revision 2 (cross-check)
- Raspberry Pi 4 Model B mechanical drawing
- Raspberry Pi 5 mechanical drawing
- Raspberry Pi Zero 2 W mechanical drawing
Tableaux établis à partir de ces documents et recoupés avec les fiches techniques des fabricants. Vérifiez toujours la fiche technique du connecteur que vous utilisez : certains fabricants numérotent différemment.
- Bus I2C : adressage et dimensionnement des pull-ups
- Bus SPI : modes, MISO/MOSI et chip select
- Bus UART : liaison série en embarqué
- Choisir une distribution Linux embarqué
- Conception électronique de cartes sur mesure
Autres brochages
- USB-C
- USB-A, USB-B, Mini et Micro
- RJ45 Ethernet
- M12 industriel
- DB9 (DE-9)
- JTAG et SWD
- HDMI
- M.2 (clés M, B et E)
- Carte SD et microSD
- PCI Express (connecteur de carte)
- SATA
- DDR4 DIMM et SO-DIMM
- DDR5 DIMM et SO-DIMM
- OBD2 (OBD-II, J1962)
- ESP32, S3, C3 et C6
- Calculateurs Bosch EDC15P+, EDC16C34, MD1CS006
- RJ11, RJ14, RJ12 (6P6C)
- VGA (DE-15) et DVI
- RS-485 (Modbus)
- Arduino Uno, Nano et Mega