Saturday, July 14, 2018

DIY Open Source 4.4Ghz RF Signal Generator AD4351 USB Cross Platform QT 5

A little while ago i was working a project for which i needed signal source in Ghz range , but my Arb Generator goes only upto 120Mhz. so i looked around a found many people having tiny little boards based on analog devices AD4351.

From AD4351 Datasheet

"The ADF4351 allows implementation of fractional-N or integer-N phase-locked loop (PLL) frequency synthesizers when used with an external loop filter and external reference frequency. The ADF4351 has an integrated voltage controlled oscillator (VCO) with a fundamental output frequency ranging from 2200 MHz to 4400 MHz. In addition, divide-by-1/-2/-4/-8/-16/-32/-64 circuits allow the user to generate RF output frequencies as low as 35 MHz. For applications that require isolation, the RF output stage can be muted. The mute function is both pin- and software-controllable. An auxiliary RF output is also available, which can be powered down when not in use. Control of all on-chip registers is through a simple 3-wire interface. The device operates with a power supply ranging from 3.0 V to 3.6 V and can be powered down when not in use  "

its basically a PLL which take a normal crystal oscillator frequency range of clock and can produce really high frequency in the range of 35 Mhz to 4.4 Ghz.

Hardware.




Hardware consist of a usb controller and AD4351 Board purchased off ebay .
I had made little USB board based on the PIC16F1459 , this board has nothing but a usb microcontroller , fuse and passives. this little board is part 3 of the USB IO boards i did in the past. More details  about this board are published in other post.



schematic of the board connected to AD4351 Module is give as , you can download High resolution PDF from github 



Firmware

Firmware Only handle USB Task and re-transmitting data received over USB over to SPI into AD4351 Module. Firmware do no calculation of frequency. Firmware receive already calculated register value for each register and hand over to the AD4351 module using hardware SPI module of PIC16F1459.
As Device is HID Raw class so there no need to supply any specific driver to windows , all the support is already available in almost all the different OS platform.

Firmware written for MPLAB XC8 compiler on MPLAX X ide.

Firmware needs Bootloader support . so i have also made a bootloader for PIC16F1459. Source and hex of bootloader also available on my github account , 

Although i supply hex with and without bootloader in same hex file . so if you don't want to mess with bootloader   you can simply flash hex file which already have application and bootloader in same hex.

here you can find both the hex files. 

There is a control firmware available from Analog device for this board based on cypress usb microcontroller i did not opt for that solution because i did not had cypress microcontroller in stock and its fun to build my own.

PC Application.

PC Application is written in QT and here is quick look , qt application depend to HIDAPI to access USB HID device , application auto detect USB device based on USB VID PID . As i do not own and use VID so i have got my free PID from pidcode github account ,

PID assigned to this project is 7877 and VID is 1209

PC application do all the calculation required to get the value of 6 configuration register of the chip.

PC application has quite few features , you can configure the chip all possible way. frequncy , ouput power , phase and everything what ever possible to configure.


PC application also provide sweep and hop frequency as shown in the image blow.


As PC application is written in QT , it is by default cross platform , you can get source from my github account and compile source for the plate form of your choice.

Analog devices also provide application but its close source and written in C# which basically limits all the possibility.

Github source repo

https://github.com/circuitvalley/ad4351_usb_rf_gen_qt

Test
Here are few snapshot of the different frequency on he MDO3000 spectrum analyzer











No comments:

Post a Comment