Many modern microwave frequency synthesisers such as the ADF4XXX devices from AD, the LMX devices from TI and the surplus Elcom units that are available on Ebay, use serial programming to load frequency data into them to set their output frequency and also set up many of their operating parameters. Mostly they require that the data is loaded into individually addressed registers over a serial peripheral interface bus (SPI bus). Until now it has been customary amateur practice to use Microchip PICs programmed with code from Andy G4JNT[1] and Dave G4FRE [2].

An alternative approach is to use an Arduino microcontroller to do the job. Arduino’s are a series of pre-built PCBs based on various Atmel chips. These boards come with a freely down loadable integrated development environment (IDE), available at [3], that is simple to use, with code that is a variant of “C”. They originated as a hobby/educational tool so they are ideal for amateur use. They also have the advantage that they can be obtained at a cost of around £1.50 which is comparable to a PIC chip before you start to build it up on a PCB.  There is also a huge volume of software for them available on the internet to do all manner of jobs and you can usually find something that is close to your requirements. (Writing code is not my forte!). Additionally they do not require a special programmer to “flash” them. This is done directly over the USB interface from the IDE.

The variants that I have found most useful for programming synthesisers are the Pro-Mini and the Nano, pictured below in figure 1.


Figure 1: The Pro-Mini  and the Nano

The I/O connections are made with 0.1 inch pin headers and generally these have to be soldered into the PCB, but are supplied. The PCBs can be plugged into a prototyping board or connected directly with “Dupont” type jumpers. The Nano comes with a USB interface and can communicate directly with the IDE package. The Pro-Mini is a more stripped down version that has a serial (5V RS232) interface and requires a USB to TTL converter. I find the Nano useful for developing and debugging the code and when happy with it can be programmed into a Pro-Mini. When buying the Arduinos I also recommend ordering some Dupont jumpers to connect from the headers to the synthesiser. In the case of the Elcom units these attach directly.

The sketch (Arduino-speak for programme) I used to program an Elcom DFS1201 frequency synthesiser to 11810 MHz is on my website, [4]. The same code works with the other Elcom synths I have come across, if you alter the hex numbers appropriately. The DFS1301 needs the frequency divided by 2 or multiplied by 5 to get the hex numbers, as I discovered from trawling on Google. For the DFS1201 multiply by 0.3. There is a series of library functions for controlling an SPI device and these are called at the start of the sketch.

The code is heavily based in the Arduino SPI example sketches. I have been using similar code with some of the Analog Devices ADF4XXX series synthesisers and there are also a couple of examples on this website, [4]. The main advantage of the Arduinio route is that you can get all the hardware pre-built very cheaply and once you get the Arduino IDE set up it is very easy to "twiddle" with the frequency.  Arduino Mini clones can be obtained from your favourite Chinese gadget site such as Banggood and the like for about the price of a PIC chip, before you get the veroboard and soldering iron out!

One thing to watch is that there are different interpretations of the SPI bus "standard" by differnet manufacturers. Some clock data in on rising edges and others use the falling edge. This issue is dealt with by setting the SPI mode using the “SPI.setDataMode” line in the code. Wikipedia gives a useful definition of the different SPI modes. Note they are different for the Elcoms and the AD devices!



1. G4JNT website: Last accessed 28/07/2015

2.G4FRE website:     Last accessed 28/07/2015

3. Arduino IDE:  Last accessed 28/07/2015

4. Some sample sketches