What GPIO Interfaces and Protocols Are Documented on pinout.xyz?

Updated

pinout.xyz documents the Raspberry Pi 40-pin GPIO header as an interactive reference, and its legend groups every pin into a small set of interfaces and alternate functions: I2C, SPI, UART, PCM, PWM, GPCLK, 1-WIRE, DPI, JTAG, and SDIO, plus power and ground. If you need to know which physical pin carries a given protocol, the site's pinout diagram and its filter legend are the intended way to find it.

The interfaces listed in the legend

The site's legend defines the following categories, each with its own colour coding on the diagram:

  • GPIO (General Purpose IO) — plain digital input/output pins.
  • SPI (Serial Peripheral Interface) — shown on the diagram with the SPI0 signal names MOSI, MISO, SCLK, CE0 and CE1.
  • I2C (Inter-integrated Circuit) — shown as I2C1 SDA and I2C1 SCL, and separately as the EEPROM ID pins SDA/SCL.
  • UART (Universal Asynchronous Receiver/Transmitter) — shown as UART0 TX and UART0 RX.
  • PCM (Pulse Code Modulation) — shown as PCM CLK, PCM FS, PCM DIN and PCM DOUT.
  • Ground, 5v (Power) and 3.3v (Power) — the non-signal pins.

The legend also lists 1-WIRE, DPI, GPCLK, JTAG, PWM, SDIO and WiringPi as selectable categories, so these are treated as first-class entries in the reference rather than footnotes.

Alternate functions attached to specific pins

The pin list on the page shows the multiplexed function in brackets next to the GPIO number, which is how you tell what a pin can do beyond plain IO:

Physical pin GPIO Documented function
3 GPIO 2 I2C1 SDA
5 GPIO 3 I2C1 SCL
7 GPIO 4 GPCLK0
8 GPIO 14 UART0 TX
10 GPIO 15 UART0 RX
12 GPIO 18 PCM CLK
19 GPIO 10 SPI0 MOSI
21 GPIO 9 SPI0 MISO
23 GPIO 11 SPI0 SCLK
24 GPIO 8 SPI0 CE0
26 GPIO 7 SPI0 CE1
27 GPIO 0 EEPROM SDA
28 GPIO 1 EEPROM SCL
32 GPIO 12 PWM0
33 GPIO 13 PWM1
35 GPIO 19 PCM FS
38 GPIO 20 PCM DIN
40 GPIO 21 PCM DOUT

Two practical points follow from this table. First, I2C1, SPI0 and UART0 each appear on a fixed pair or group of pins, so a board that uses one of those buses occupies those pins. Second, the EEPROM SDA/SCL pins (GPIO 0 and GPIO 1) are listed separately from I2C1, which matters when you are checking whether an add-on board's ID EEPROM conflicts with your own I2C devices.

How to look up a protocol on the diagram

The page orients the header with the GPIO on the right and the HDMI port(s) on the left, and the excerpt notes the diagram can be mirrored for the underside view or rotated 180 degrees. To find the pins for a protocol:

  1. Open the pinout diagram and locate the legend.
  2. Select or highlight the interface you care about — for example SPI, I2C, UART, PCM, PWM, GPCLK, 1-WIRE, DPI, JTAG or SDIO.
  3. Read off the physical pin numbers that remain highlighted; the diagram keeps the physical numbering (1–40) alongside the GPIO/BCM numbers.
  4. Cross-check the bracketed function on each pin against the table above, since a pin can carry more than one label.

The expected result is a short list of physical pins you can wire to, plus the knowledge of which other interfaces those pins are shared with.

Beyond the 40-pin header

pinout.xyz is not limited to the standard header. The page states it also includes hundreds of pinouts for Raspberry Pi add-on boards, HATs and pHATs, reachable through its board explorer. It additionally publishes pinouts for the Pico range (Pico, Pico W, Pico 2, Pico 2 W), chip planners for the RP2350A (QFN-60) and RP2350B (QFN-80), and experimental pinouts including a minimal 40-pin pinout, Espressif ESP32 C5 and C3 DevKitC, and the PJRC Teensy 4.0.

That matters if your project uses a HAT: the add-on board's own pinout page tells you which header pins it claims, which is the quickest way to spot a clash with the I2C, SPI, UART or PCM pins you planned to use.