Click the image for an enlarged version:
Here is the Raspberry Pi 4 default GPIO pinout for the 40 pin J8 header. This is the configuration of the pins as you'll receive it when you first boot up Raspbian, or NOOBS with Raspbian. However, did you know that they are configurable? Yes, you can change the allocation of the Serial Peripheral Interface BUS on the pins, or decide that you don't want two Inter-Integrated Circuit (I2C) Serial BUS after all.
In the diagram you'll see that the layout is colour coded with a legend; these are pins which are associated with one another purely by function (or not, in case of the green), and so they are a 'family' of pins that are useful together. But what if your project actually requires that you don't need SPI, or that you require two sets of SPI pins?
There are alternative functions for almost all of the pins. Here's a chart that helps to demonstrate what the alternative functions of the pins can be, and in bold and highlighted are what the defaults are for these pins:
Using these pins, they are referred to as 'ARM Peripherals', because after all, we're using an ARM processor by Broadcom. If you want to read into these in detail, you can look at the attached document. You'll find it pretty heavy going if you are not used to the technical information.
There are also useful libraries and websites which can help you to understand more about this information, such as The GPIO Utility by Wiring Pi and Gadgetoid and RogueHAL13's pinout.xyz - be careful not to be caught out though, as the GPIO pins are also referenced as 'BCM' pins (meaning Broadcom) to help reduce confusion from the physical pins.
Changing the default configuration is considered advanced, and isn't for the faint of heart, so enjoy going down the rabbit hole for your project!
Want to know more?
Want to buy the new Raspberry Pi 4 Model B?
|RASPBERRY PI 4 MODEL B, 1GB||Raspberry Pi|
|RASPBERRY PI 4 MODEL B, 2GB||Raspberry Pi|
|RASPBERRY PI 4 MODEL B, 4GB||Raspberry Pi|