Close

UART speed issues

A project log for Raspberry Pi Retro Gaming LED Display

20x10 WS2812 LEDs driven by Raspberry Pi/Arduino to play games like Tetris in the living room

maketveemakeTVee 01/26/2019 at 05:070 Comments

After discussing this issue with several people who want to build their own matrix, I decided to sum up the main points in a project log.

In the newer versions of the Raspberry Pi with integrated Bluetooth like Pi3B/B+, ZeroW and the new 3A+, the hardware UART is used for the Bluetooth module. The second UART, which is connected to the extension header, is a software UART implementation. This second UART seems to be limited to 250kBaud. You can read more details on this website:

https://www.raspberrypi.org/documentation/configuration/uart.md

This project uses 500kBaud for transferring the LED data between Pi and Arduino. I am using an old, non-Bluetooth Pi A+. The only thing, I have changed, was adding this line at the end of the /boot/config.txt :

 init_uart_clock=64000000

There is an option to change the UART configuration on newer Pis by connecting the hardware UART to the extension header and the software UART to Bluetooth:

https://blog.adafruit.com/2016/03/07/raspberry-pi-3-uart-speed-workaround/

I didn't have time to test this, but it looks quite straight forward. Also if there are other solutions, I will update this post.

Of course, it is also possible to reduce display update timings to reduce the UART speed to 250k. 

Discussions