Adafruit Si5351A 3-Channel Clock Generator

DSC00553_scaledThe other day, I received a breakout board for this critter from Adafruit. I want to experiment with RF applications, in particular an Arduino-controlled VFO. For this purpose, I need to be able to set the PLL and divider parameters in real time on the fly in response to, for instance, the turn of a rotary encoder, or direct keypad entry. The Arduino library provided by Adafruit is good for firm-programed parameters, but not for run-time settings.

I’ve done a pretty-good search through the Silicon Labs site and all I found was their Windows app for calculating those parameters for static programing–not for on-the-fly applications. I was hoping to find some formula or algorithm for determining the parameters given a specific frequency to be generated.

After what Lady Ada (Limor Fried) calls “noodling around,” I found a number of Arduino libraries for the 5351 at GitHub. Except for Adafruit’s own respository there, everything else is RF/Ham radio focused. So far,  I’ve experimented with a library developed by Jason Milldrum NT7S for his IndieGoGo Si5351A breakout-board campaign. I found it works flawlessly with the Adafruit breakout as well.

The nice thing about Jason’s library is that it will calculate the PLL and divider frequencies from an output frequency specified by a variable. This is exactly what I wanted. With a few buttons and a rotary encoder or keypad, I can dial in the frequency I want.

Here’s Jason’s GitHub respository:

Adafruit Si5351A Breakout Board w/ArduinoI have yet to explore all the features of the library, but so far I’ve used a variable that allows the xtal-load capacitance to be entered–no doubt to fine-tune the calculation of PLL and divider frequencies. According to the Adafuit document, 10pF is the nominal figure. That’s what I used and it got the closest to the specified output frequency of those I tried.

Another feature I’ve noticed but not yet tried is a variable to enter a correction factor to compensate for manufacturing tolerances of the 25MHz reference xtal. Before I try that, I need to setup a GPS-disciplined frequency standard to properly calibrate my gear.

One odd thing I’ve found is that the official Silicon Labs datasheet for the Si5351A/B/C series lacks information on pinouts–by pin number, that is. They show pin names but no numbers. Strange! I finally found them, though, on Lady Ada’s drawing.

The cool thing about the Si5351 is that it can generate both the VFO and the BFO frequencies for a receiver/transceiver at the same time. If the rig needs a digital clock for other purposes, the 5351 can provide that as well.

As you can see from the waveform on the ‘scope screen, it’s not a perfect sine wave. This is to be expected, and a simple low-pass filter (LPF) can clean it right up.



Here’s the link to Adfafruit’s page for the breakout board:

At $7.95USD, it’s an excellent buy, especially considering it includes pull-ups and a LDO regulator so either 5V or 3.3V can be used for power and pin-high levels.

I’ll report more on the Si5351A in general and the Adafruit breakout in particular in subsequent postings.



!!! THIS JUST IN: I also just received my “perk” for my contribution to NT7S’s IndieGoGo campaign for his Si5351A breakout board. It’s comes as a kit, so I’ll assemble it and post a preliminary report soon.

Leave a Reply

Your email address will not be published. Required fields are marked *