Controlling The Si5351 Via USB

This project is actually a repackaging and expansion of a previous one, the I2CStick. It’s intended to provide a USB interface for control of an Si5351. I put it together as part of another project and thought it might be of interest to others.


The interface schematic is shown below. The original I2CStick was a USB to I2C interface based on SparkFun’s AVR Stick. However, SparkFun has retired this product and I no longer have any on hand.

Instead I used a 3.3V AdaFruit Trinket. Since the Trinket hardware is so similar to that of the AVR Stick I was able to port the firmware with little trouble. Mostly it involved redefining the pins used for the USB interface and updating the firmware so it could be built using the Arduino compiler.

Si5351 USB Interface Schematic

Control Software

The control software consists of two parts, both written in Python. The first is a port of the original .NET I2CStick software.

The second is module I’ve named Py5351, which provides basic control of the Si5351. Clocks 0 and 1 are connected to PLLA. They’re intended to provide quadrature signals at a common frequency. Clock 2 is connected to PLLB to provide an independent signal source.

Using The Interface

There’s really not much to explain. The picture below shows the prototype build on a small piece of stripboard.

Updated Controller Schematic

All software is available in my GitHub repository. Once you’ve pulled down the project, start the Arduino IDE and load the Arduuino library and code. Compile, and push the firmware to a 3.3V Trinket. Be sure to use a 3.3V Trinket since it’s providing the voltage for the Si5351, which is a 3.3V part.

Close the Arduino IDE, reset the Trinket, and wait for it to complete the bootloader sequence. Once the LED stops blinking you can issue commands to the Si5351 using the Py5351 module or directly read and write registers via the I2C module.

While the focus here is on providing a USB interface for the Si5351, the Trinket code along with the I2C control software (either the Python or original .NET version) can be adapted for any project requiring a USB to I2C interface. I think the extra power provided by control from a laptop and the convenience of a USB interface will lend itself to more complex projects, so I hope you find it useful.


Comments are closed.

Tabula Candida

Doodles of a distracted historian

A blog about RTL-SDR (RTL2832) and cheap software defined radio

DuWayne's Place

Computers, Electronics, and Amateur Radio from KC3XM

QRP HomeBuilder - QRPHB -

Computers, Electronics, and Amateur Radio from KC3XM

Open Emitter

Computers, Electronics, and Amateur Radio from KC3XM

Ripples in the Ether

Emanations from Amateur Radio Station NT7S

m0xpd's 'Shack Nasties'

Computers, Electronics, and Amateur Radio from KC3XM

%d bloggers like this: