Category Archives: Digital Transceiver for Raspberry Pi

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 for background and instructions to configure the Raspberry Pi.

Simulation of the AX5043 Reference Baluns

I wanted to understand the characteristics of the baluns included in the AX5043 datasheet. So, I did a bit of research with QUCS (Quite Universal Circuit Simulator). If I properly created the simulations for the AX5043 reference baluns in the AX5043 datasheet, the results are helpful.

These simulations provide information on which frequencies can be used with each reference design.

Frequency Band 868/915 MHz:


Frequency Band 470 MHz:


Frequency Band 433 MHz:


Frequency Band 169 MHz:


KiCad Design Files

The KiCad design files for the Digital Transceiver for the Raspberry Pi have been posted to GitHub. Admittedly, there are some tweaks I’d like to make:

  • Eliminate the current need for the cache libraries after upgrading the files to KiCad 5.0
  • Eliminate the traces used to get the ground plane stitching to work
  • Reduce the size of the crystal solder pads

But, these design files demonstrably work! You can find them in the Brandenburg Tech GitHub repository.

X.25 Frames with AFSK Modulation

A code sample is now available in the Brandenburg Tech GitHub repository. This sample generates simple AX.25 frames modulated using AFSK (Audio Frequency Shift Keying). While AFSK is usually used at VHF frequencies, this example uses a UHF frequency as that is how the matching network is configured on the Digital Transceiver for the Raspberry Pi.

AX5043 Code Generator

If you want to understand the AX5043 transceiver on the Transceiver Board for the Raspberry Pi, it sometimes helps to examine sample code. To this end, ON Semiconductor has released AX-RadioLab.

AX-RadioLab is a configuration and firmware source code generation tool for the AX5043 transceiver. While the generated code is for ON Semiconductor’s AX8052F100 microcontroller, you can use that code to understand how the AX5043 functions. In addition, if you also have the DVK-2 Evaluation Kit this generated code runs on that board.

To obtain the software and documentation, check out:

Be sure to observe the license placed on the generated code. While you are not prevented from using the code to learn the functions of the AX5043, the license does prohibit porting the software to processors other than the AX8052F100. (Editorial: Why would ON Semiconductor place this barrier in the way of using their AX5043 transceiver?!?)