Si5351A/B/C Configuration Software
Version
0.2, April 2019
by Électro-Bidouilleur (electro@bidouilleur.ca)
This software allows to configure Silicon Laboratories Si5351A/B/C Synthesizer chips when supervised by an Arduino Uno or Nano board. Once the Arduino has received a configuration from this software, it will re-load the Si5351 chip with that same configuration at every power up or reset. The Arduino (properly configured by this software) is required as the Si5351 chip does not retain its configuration when power is removed; it must be re-configured at power up.
The software is written in Python 2.7 programming language. Thus it is fully compatible with the Linux and Windows (7, 8, 10) operating systems. Although it has not been tested, the software should also run properly on the Mac OS.
This software covers a superset of functions offered by the Si5351 family of chips. The user must understand the limits imposed by the Si5351 model (A, B or C), such as the number of channels available or the support for an external reference input. A good comprehension of the Silicon Labs' Si5351A/B/C Datasheet document is recommended.
This software was designed with the objective of exploiting the most common Si5351 features. Thus, it allows to configure the chip for most applications, but not all of them. Examples of features that are not implemented are VCXO support, phase adjustment (other than simple inversion) and support for output channels 6 and 7. In an application where one or more of the missing features is required, the user can still use the proposed hardware by programming the Arduino Nano using the "Raw data Transfer" program. That Python script is included along with this one. In such case, various Si5351 registers will need to be programmed separately, which is more tedious.
An accompanying Arduino software (sketch) must be used in conjunction with this software, otherwise the latter will not function.
The Arduino sketch uses Jason Mildrum's Etherkit Si5351Arduino library (https://github.com/etherkit/Si5351Arduino). That library must be installed in the Arduino IDE via the Library Manager (Menu: Sketch -> Include Library -> Manage Libraries...).
Access must be granted to the virtual serial port associated with the Arduino's serial-USB adapter, otherwise an error message will be displayed.
The Python 2.7.x environment must be installed in Windows prior to executing this Python script. Download the proper MSI Installer from https://www.python.org/download/releases/2.7/ and run it. It is recommended that you leave the installed software location as suggested: "C:\Python27".
The
PySerial (Python Serial) library is required to run this software.
The best way to add it is to follow the instructions detailed on the
Adafruit website:
https://learn.adafruit.com/arduino-lesson-17-email-sending-movement-detector/installing-python-and-pyserial
. That PySerial installation folder is also included with this
sortware; this will save time and eliminate the need to download and
un-archive the tar.gz file. In a nutshell, change the path
environment variable to add the
"C:\Python27" path,
open a command prompt window, change directory to the supplied
PySerial folder, and execute the "python
setup.py install"
command.
The proper Arduino USB-Serial virtual port driver must be installed prior to using this software. This is normally the case with Windows versions prior to Windows 10. Note that this driver is typically installed during the Arduino IDE installation.
Once the above requirements are met, executing this script is just a matter of double-clicking on the .py file. If the script window does not show up, launch the script from a command prompt window: change directory to the script directory and issue the "python ______.py" command (replace “______” with the exact script name). An error message should reveal the nature of the problem.
Most Linux distributions include the Python 2.7.x environment. So there is no need to install Python.
The PySerial (Python Serial) library is required to run this software. The easiest way to install the PySerial library is to install it from the Linux package manager (apt, zypp, yum, etc.). For Debian-based distributions (Debian, Ubuntu, mint, elementary, Zorin), execute the following commands at a terminal window:
sudo apt-get update
sudo apt-get install python-serial
An alternate way is to install it from the downloaded installation folder. That PySerial installation folder is also included with this software; this will save time and eliminate the need to download and un-archive the tar.gz file. In a nutshell, open a terminal window, change directory to the supplied PySerial folder, and execute the "sudo python setup.py install" command.
The Tkinter window library must also be installed. Install it from the Linux package manager (apt, zypp, yum, etc.). For Debian-based distributions (Debian, Ubuntu, mint, elementary, Zorin), execute the following commands at a terminal window:
sudo apt-get update
sudo apt-get install python-tk
The Arduino USB-Serial virtual port driver is typically included with most Linux distributions. The Arduino Nano virtual port should automatically be detected.
Once the above requirements are met, executing this script is just a matter of launching the script from a console window: change directory to the script directory and issue the "python ______.py" command (replace “______” with the exact script name). If the script window does not show up, an error message should reveal the nature of the problem.
All frequencies must be entered in Hertz, for example 24.4 MHz is entered as "24400000".
Input Reference Selection: The Si-5351 synthesizer must be configured to retrieve its timebase from one of the possible input clocks.
If a Si-5351C is used, the "Input Select" can be:
an external reference (With a corresponding "Input Frequency" ranging from 10000000 Hz to 40000000 Hz), or
the onboard crystal ("Input Frequency" must be set to 25000000 Hz, or alternately to 27000000 Hz).
With an Si-5351A, the "Input Select" must be the onboard crystal and the "Input Frequency" must be 25000000 Hz or 27000000 Hz.
The invert checkbox, when checked, will produce a clock signal on the corresponding output channel that is 180 degrees out of phase compared to the channels that are not inverted.
The Output Drive pull-down menu selects the drive strength (the current) that the corresponding output will push its output with. The selection will have some impact on the output power. Typical power numbers at 10 MHz are: 2mA -> +2.3 dBm, 4mA -> +7.3 dBm, 6mA -> +9.6 dBm, 8mA -> +10.8 dBm.
Serial Port Configuration
Windows: The syntax used in the Serial Port field is "COMx", for example "COM6". The user shall find out which COM port is associated with the USB-serial adapter on the Arduino board by consulting the Windows Device Manager or the Arduino IDE (Menu: Tools -> Port).
Linux: The syntax used in the Serial Port field is "/dev/ttyUSBx", for example "/dev/ttyUSB0". The user shall find out which serial port is associated with the USB-serial adapter on the Arduino board by consulting the "/dev" device directory, or the Arduino IDE (Menu: Tools -> Port).
The software saves the various field values and the window position in a text file named "saved_settings.cfg" in the same directory as the Python script. This is performed at program exit. Reloading of the field values is done at program launch by reading the file. The absence of that file in the directory will force the program to revert to default values at program launch.
This software is “Free software” (as defined by the Free Software Foundation), which means it respects users' freedom and community. The users have the freedom to run, copy, distribute, study, change and improve this software.
This text is extracted from the About.html file provided with this software.