Monthly Archives: October 2018

UART on the Raspberry Pi 3

The Raspberry Pi 3 has two UARTs, which are hardware devices providing services for serial ports. One of the two UARTs is provided by a hardware component and the second of the two UARTs is provided partially by software.

By default, the hardware UART provides communication to and from the Bluetooth radio. Thus, if an add-on board uses a serial port to communicate to the Raspberry Pi, the serial port used by the add-on board must be provided by the software UART.

The Digital Transceiver for the Raspberry Pi does NOT use a serial port for communication to the Raspberry Pi. So why do we care about serial ports? It turns out enabling the software serial port modifies the clock speed of the Raspberry Pi. The change in clock speed appears to impact the other interfaces on the Raspberry Pi, including the interface used by the Digital Transceiver for the Raspberry Pi.

Does this mean using the Digital Transceiver for the Raspberry Pi prevents us from adding other board to the Raspberry Pi if that board uses a serial port? No, it doesn’t. If we’re not using Bluetooth, we can disable Bluetooth on the Raspberry Pi, which frees up the hardware UART. We can then direct the Raspberry Pi to use the hardware UART to communicate to the add-on board. In this manner, we can use an add-on board that might user a serial port along with the Digital Transceiver for the Raspberry Pi because the add on board is using the hardware UART rather than the software UART.

Refer to https://www.raspberrypi.org/documentation/configuration/uart.md for background and instructions to configure the Raspberry Pi.