4. General Purpose Input Output#
GPIOs are nothing but digital input/output pins, the state of which can be controlled directly by the software running on the processors, or by a number of other peripherals available in the μC. As discussed in previous chapters, the RP2040 μC has 30 GPIOs, out of which 4 can also be used as inputs to the chip’s Analogue to Digital Converter (ADC). Each GPIO in RP2040 can perform a specific function of a specific peripheral. Following table lists the function that each GPIO can perform for each peripheral that we may discuss throughout this course. Full table is available here.
GPIO\Func  | 
1  | 
2  | 
3  | 
4  | 
5  | 
|---|---|---|---|---|---|
0  | 
SPI0 RX  | 
UART0 TX  | 
I2C0 SDA  | 
PWM0 A  | 
SIO  | 
1  | 
SPI0 CSn  | 
UART0 RX  | 
I2C0 SCL  | 
PWM0 B  | 
SIO  | 
2  | 
SPI0 SCK  | 
UART0 CTS  | 
I2C1 SDA  | 
PWM1 A  | 
SIO  | 
3  | 
SPI0 TX  | 
UART0 RTS  | 
I2C1 SCL  | 
PWM1 B  | 
SIO  | 
4  | 
SPI0 RX  | 
UART1 TX  | 
I2C0 SDA  | 
PWM2 A  | 
SIO  | 
5  | 
SPI0 CSn  | 
UART1 RX  | 
I2C0 SCL  | 
PWM2 B  | 
SIO  | 
6  | 
SPI0 SCK  | 
UART1 CTS  | 
I2C1 SDA  | 
PWM3 A  | 
SIO  | 
7  | 
SPI0 TX  | 
UART1 RTS  | 
I2C1 SCL  | 
PWM3 B  | 
SIO  | 
8  | 
SPI1 RX  | 
UART1 TX  | 
I2C0 SDA  | 
PWM4 A  | 
SIO  | 
9  | 
SPI1 CSn  | 
UART1 RX  | 
I2C0 SCL  | 
PWM4 B  | 
SIO  | 
10  | 
SPI1 SCK  | 
UART1 CTS  | 
I2C1 SDA  | 
PWM5 A  | 
SIO  | 
11  | 
SPI1 TX  | 
UART1 RTS  | 
I2C1 SCL  | 
PWM5 B  | 
SIO  | 
12  | 
SPI1 RX  | 
UART0 TX  | 
I2C0 SDA  | 
PWM6 A  | 
SIO  | 
13  | 
SPI1 CSn  | 
UART0 RX  | 
I2C0 SCL  | 
PWM6 B  | 
SIO  | 
14  | 
SPI1 SCK  | 
UART0 CTS  | 
I2C1 SDA  | 
PWM7 A  | 
SIO  | 
15  | 
SPI1 TX  | 
UART0 RTS  | 
I2C1 SCL  | 
PWM7 B  | 
SIO  | 
16  | 
SPI0 RX  | 
UART0 TX  | 
I2C0 SDA  | 
PWM0 A  | 
SIO  | 
17  | 
SPI0 CSn  | 
UART0 RX  | 
I2C0 SCL  | 
PWM0 B  | 
SIO  | 
18  | 
SPI0 SCK  | 
UART0 CTS  | 
I2C1 SDA  | 
PWM1 A  | 
SIO  | 
19  | 
SPI0 TX  | 
UART0 RTS  | 
I2C1 SCL  | 
PWM1 B  | 
SIO  | 
20  | 
SPI0 RX  | 
UART1 TX  | 
I2C0 SDA  | 
PWM2 A  | 
SIO  | 
21  | 
SPI0 CSn  | 
UART1 RX  | 
I2C0 SCL  | 
PWM2 B  | 
SIO  | 
22  | 
SPI0 SCK  | 
UART1 CTS  | 
I2C1 SDA  | 
PWM3 A  | 
SIO  | 
23  | 
SPI0 TX  | 
UART1 RTS  | 
I2C1 SCL  | 
PWM3 B  | 
SIO  | 
24  | 
SPI1 RX  | 
UART1 TX  | 
I2C0 SDA  | 
PWM4 A  | 
SIO  | 
25  | 
SPI1 CSn  | 
UART1 RX  | 
I2C0 SCL  | 
PWM4 B  | 
SIO  | 
26  | 
SPI1 SCK  | 
UART1 CTS  | 
I2C1 SDA  | 
PWM5 A  | 
SIO  | 
27  | 
SPI1 TX  | 
UART1 RTS  | 
I2C1 SCL  | 
PWM5B  | 
SIO  | 
28  | 
SPI1 RX  | 
UART0 TX  | 
I2C0 SDA  | 
PWM6 A  | 
SIO  | 
29  | 
SPI1 CSn  | 
UART0 RX  | 
I2C0 SCL  | 
PWM6 B  | 
SIO  | 
The actual working of a GPIO pin requires understanding of how a transistor works. Thus, this chapter will attempt to explain working of a GPIO in a much simpler way. However, keep in mind that this simplified explanation is not really true.