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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s