The following modes in each table are mutually exclusive on the Raspberry Pi 3.
The Raspberry Pi has a single full-speed UART (UART0) and a mini UART (MINIUART); see the official docs for information on their differences. These UARTs are multiplexed between various board functions and cannot be used simultaneously. The following modes are supported:
|Mode||Activated By||Bluetooth||Pin Functions|
|Debug console||Default mode; no PIO connections||Enabled||Pins BCM14/BCM15 expose RX/TX of the serial debug console|
|UART0||UART0 opened by PIO||Disabled||Pins BCM14/BCM15 expose RX/TX of UART0|
|MINIUART||MINIUART opened by PIO||Enabled||Pins BCM14/BCM15 expose RX/TX of MINIUART|
|BCM14 or BCM15||Pin opened by PIO||Enabled||Named pin (BCM14 or BCM15) is GPIO, other pin is idle|
IOException error is thrown if you try to open an active pin (from above)
using a different UART mode.
The Raspberry Pi shares hardware resources between Peripheral I/O and the audio subsystem (I2S and analog). Analog audio is transmitted through the 3.5mm audio jack. The following modes are supported:
|Mode||Activated By||Audio Routes||Pin Functions|
|Audio||Default mode; no PIO connections||I2S + Analog||N/A|
|PWM||PWM0 opened by PIO||Disabled||Pin BCM18 enabled as PWM|
|GPIO||Pin1 opened by PIO||Analog only||Named pin is GPIO|
1 Includes pins BCM18, BCM19, BCM20, and BCM21