Or maybe we can collaborate? One thing I think people will find about my code is that I write it as someone would like to read it I don’t use fancy shortcuts that a novice may not understand if I can help it.
Why am I releasing this then? Because there’s probably some poor soul who is just as overwhelmed as I am trying to figure out this chip so by seeing how I am implementing things, they may understand the chip a little better. This release is very much a beta release and is completely untested since I don’t yet have a shield. It took me about an hour to write a basic library that would give the user as much flexibility as possible, but I’d like to improve the library so that more automatic functions are available. Here are some screenshots of the board courtesy of OSHPark. On April 16, 2014, I sent off the shield final design to the fabricator.
Arduino 1.8.5 ad9951 full#
Know that I will post my full findings and explanation about each of the registers as they exist in real life. In other words, if I set this register to 127, what does 127 mean? Does it mean that it will take 127uS to ramp? Does it mean I will eat 127 donuts this year? Who knows? There are so many questions, which only makes me want to get this shield completed so that I can experiment and learn more about this chip. For example, the datasheet describes the Amplitude Ramp Rate with “ The ARR register stores the 8-bit amplitude ramp rate used in the auto OSK mode“, but it doesn’t provide an example of what the ARR is. The datasheet is not written as well as the datasheets for some of the other chips from this company, in my opinion, so a lot of experimentation will need to take place in order to understand this chip more fully. Reading over the datasheet for the AD9951 DDS chip by Analog Devices Inc., one can become both overwhelmed and confused.
Arduino 1.8.5 ad9951 serial#
Having a faster serial clock means that the phase offset word and frequency tuning word can be updated quicker so faster phase modulation and faster frequency hopping, or even frequency modulation, which translates to more data transfer, if that is the goal. I can see where it may benefit an end user to use a CPLD or FPGA in lieu of the slow Arduino, especially to take advantage of the 25MHz maximum clock on the serial interface of the AD9951–the maximum serial clock available on the Arduino Mega 2560 R3 is 8MHz. While using an Arduino with the AD9951 shield is not the best way to do this, the shield is intended to be an introduction to these chips. In lieu of that, and in an effort to provide the open source community with something to work with, and further my portfolio here, I’ve decided to create a general Arduino shield and library for the AD9951 that I can release. I have a specific application that I’d like to use a DDS VFO in, but due to the nature of it, I cannot release that project right now.
I have heard a lot of great things about DDS chips and my research on them shows that, over the recent years, these chips have become more advanced to the point where they can work well as a low noise, good spurious-free dynamic range, variable frequency oscillator.