It has been a while since my last blog update, work has been keeping me busy so having found some quality time to kick off the next radio project I went back to the VFO design, which to me is the heart of any SSB transceiver.
Following on from my last experiment with the Analogue Device AD9959 Direct Digital Synthesiser I gave up pursuing the project due to poor reliability and used the SI5351 in all other VFO circuit designs, which to be fair has proven to be very good.
Couple of drawbacks with the SI5351 Clock Generator which pushed me to re-visit the AD9959 DDS, the first was the lack of external clock reference input on the SI5351 board, although Jack Zimmermann over in Sweden produces a very high quality module using the SI5351C which gives eight independent clock outputs and has both on-board and external clock reference oscillators and I can say from experience these boards are very good indeed to which I highly recommend but the SI5351C breakout board is only available direct from Jacken – website: https://www.jackenhack.com/si5351c-i2c-frequency-clock-generator-breakout-board/
Since my last project using the AD9959 I found a new version of the PCB module from China, which is built on a high quality PCB, all four DDS channels are filtered and terminated into 50 Ohms and there is an additional SMA jack for an external clock reference such as a GPS Disciplined Oscillator.
Another point on this module is that is uses a single rail 5V DC supply, unlike many of the older AD9959 boards from China which are dual-rail supply and quite frankly a pain in the arse to work with. I currently have the new version on a beadboard and I am controlling it with 3V3 Sparkfun Pro Micro ATMEL 32U4 based Micro controller – note that this AD9959 module is 3V3 tolerant, do not drive it with 5V logic unless you are prepared to level shift the I/O from 5V to 3V3 otherwise you WILL kill the AD9959 DDS Chip. Also, do not apply more than 5V DC to the supply port of the AD9959 module, if you do your dollar will go up in a big poof of magic smoke!
So, lets skip all of the waffle and sale pitch and head on straight to the meat and potatoes of the AD9959 module, what you get, what it will do and of course how to hook it up – it took me several months of experimenting and researching to eventually get the AD9959 to give me an output using an Arduino ATMEGA device.
What you get for your $28:
- AD9959 Chip with 200MHz Low Pass Filter on each channel.
- On-board power supply for the chip.
- Four independent DDS output channels.
- External Reference Clock input channel.
- 20 way pin header interface.
- SPI control.
- Works out the box with 3V3 logic (5V logic will need level shifting).
- Small foot print – only 85mm X 50mm.
Communicating with the AD9959:
- 3V3 Compliant Micro Controller such as the Sparkfun Pro Micro, Arduino Due, MKRZERO, M0 Cortex.
- Control and communication pin map – see table.
|AD9959 Pin||Pro Micro Pin||Notes|
|GND||GND||Make sure power supplies are common on MCU and DDS|
|UPD||Any Digital Pin||IO Update, used to write all buffers to registers.|
|CSB||Any Digital Pin||SPI Cable Select or Slave Select.|
|IO0||SPI MOSI||SPI Data Output|
|IO2||SPI MISO||SPI Data Input|
|PDC||GND||DDS Power down - low for run, high for off.|
|SCK||SPI Clock||SPI Serial Clock|
|IO3||GND||For some reason, this pin MUST be grounded or the AS9959 will not run.|
|RST||Any Digital Pin||AD9959 Reset active low.|
Here is a short video tape of the AD9959 being swept from 150KHz to 200MHz, my Spectrum Analyser will only go down to 150KHz but the AD9959 will do DC-200Mhz.
I shall prepare a release of the test software that will run in the Arduino environment, any questions just ask.