Manual and code for AD9854 ebay board - Page 1
Forum section: electronics / projects

author: g4dbn
author_rank: Newbie
timestamp: November 16, 2020, 09:03:43 pm
content: Does anyone have a copy of the docs and programs that are supposed to come with the Chinese AD9854 boards like this:https://www.ebay.co.uk/itm/New-1HZ-100MHz-AD9854-DDS-Function-Signal-Generator-Module-PC-Control-Software/252894495304?I've asked the vendor, but not has a reply yet and I'm impatient!Neil

author: coromonadalix
author_rank: Super Contributor
timestamp: November 16, 2020, 10:50:05 pm
content: if your that impatient : you have code snippets using google fuuuAt the Analog website you have windows softwares and sdk ....https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad9854.html#eb-overviewI dont think you'll ever find the shown software, its an VB application, it's a teaser to buy theses boards and i never saw any download location(s)better buy the one with an touch screen frontend interfacethere are some links on taobao website for the ad9854 board about a v4 and a v5 versions, links are dead, send a message to the seller

author: HB9EVI
author_rank: Frequent Contributor
timestamp: November 16, 2020, 11:21:27 pm
content: that's the code I wrote already quite a while ago; if I find time, I'd like to rewrite it e.g. eliminating the float, using non-blocking interrupt routine for the SPI a.s.o.Code:void ad9854_write(uint8_t addr, uint8_t * data, uint8_t count) {uint8_t i;SPI1->CR1 = 0;SPI1->CR1 = 0x354;GPIOA->BRR = UPCLK;GPIOA->BRR = CS_D;delay_us(100);SPI1->DR = addr;while(!(SPI1->SR & 0x2));for(i=0;i<count;i++) {SPI1->DR = data;while(!(SPI1->SR & 0x2));}delay_us(100);GPIOA->BSRR = CS_D;delay_us(100);GPIOA->BSRR = UPCLK;delay_us(100);GPIOA->BRR = UPCLK;SPI1->CR1 = 0;SPI1->CR1 = 0x344;}uint8_t ad9854_set_freq(uint32_t * frequency, uint8_t reg, uint8_t * control, uint32_t mclk) {uint8_t i,s=40;uint64_t dataword;float factor;uint8_t data;if(frequency!=0) {factor=(mclk/(float)0x1000000000000);dataword = frequency/factor;if(reg==2) {dataword= ~(dataword);}data=dataword>>40;data=dataword>>32;data=dataword>>24;data=dataword>>16;data=dataword>>8;data=dataword;control=0x10;ad9854_write(0x7, control, 4);if(!reg) {ad9854_write(0x2, data, 6);}else if (reg==1) {ad9854_write(0x3, data, 6);}else {ad9854_write(0x4, data, 6);}return 1;}else {control=0x17;ad9854_write(0x7, control, 4);return 0;}}

author: g4dbn
author_rank: Newbie
timestamp: November 17, 2020, 12:34:57 am
content: Thanks for the snippet. This board has a CH340G USB-serial chip and an ATMega32A. I installed a driver, but although it is now recognised as a USB serial CH340, I can't elicit any response at any serial port speed. Perhaps there isn't a bootloader? Powering it on doesn't result in any characters being sent either. I might get lucky and get something through from the vendor tomorrow. If I don't get anywhere, I'll just rip the CPU off the board and talk to the DDS directly - assuming there IS a real 9854 under that fetching yellow heatsink.Neil

author: cncjerry
author_rank: Unknown
timestamp: November 17, 2020, 04:52:52 am
content: I have that board. there is specific software for it. some of the boards on eBay use the standard manufacturers eval board software. If I remember correctly, that one doesn't. The hardest part of getting it running was getting the ch340 running. that took standard drivers but you had to force load them from the windows driver vendor screen. I was never able to get that board to work on anything other than WinXp and I spent a lot of time on it. I finally setup a small notebook just to run that board and one other that did use the Analog Devices Eval board software. I might have had it running on Windows 7 but maybe it was only on one computer. It did work, though, and worked well. I'll look for the software tomorrow. I've been thinking about that board lately but then I purchased the 9910, which blows it away except for the I/Q signals, and then the 9912 which is even much, much better. Neither have I/Q like the 9854 or 9954. If you only need CW (not I/Q) I would set that aside and get the 9912 as the SFDR, noise etc on the 9912 with the Spurkiller facility is just amazing for a DDS. I did a listing last night of all the SFDR of the HP and other high-end signal generators and the 9912 met or exceeded all of them.Jerry

author: cncjerry
author_rank: Unknown
timestamp: November 17, 2020, 06:40:35 am
content: I forgot to mention that I used an active amp/filter on the output of that board.

author: g4dbn
author_rank: Newbie
timestamp: November 17, 2020, 06:36:41 pm
content: The vendor sent me the code and exes and drivers and schematics, and I got it working, then sniffed the comms to the serial port and started working out what the application needs. The set frequency command for 18 MHz was:$WR02D66EBBD05C0F3D*and I could set other frequencies from my serial program as well as from the supplied application.Then I went for a walk. Never a good idea. When I fired the board up next time, it refused to recognise the device and is reporting a USB hardware fault. I think I'm sick of this crappy USB interface chip, so I might just graft on an FTDI board. It looks like I just need to remove a zero ohm jumper and the series resistors between the CH340 and the CPU, and connect up and FTDI board with the right polarities and voltage and I should be back in business.I only want this for a quick demo of an interface I've coded up to get WSJT-X to output DDS values instead of baseband tones, so I can generate micro-stepped GFSK tones at 10 MHz that can be used to lock a 122 GHz PLL in a Silicon Radar TRA120 board, and a separate solution, mixing the DDS with a source around 12 GHz then multiplying to 47, 76, 122, 134 and 241 GHz but ending up with correct-spacing tones after multiplication. That means I'm able to avoid using transmit mixers and should be able to get much more power, but still retain the advantage of weak-signal detection via WSJT-X. Using a DDS board with a CPU was *supposed* to make things simple for the proof of concept. Ha ha ha ha ha.At least that's the plan, but without a working 48-bit DDS, I'm screwed. Soon as I get the PoC working, I'll change to a proper DDS solution driven from separate CPU.Neil

author: cncjerry
author_rank: Unknown
timestamp: November 17, 2020, 07:31:00 pm
content: I don't know why my message from early this morning didn't post. I have this board and the software. It runs on XP only from what I remember. I think I got it to run on Win7 once but not sure, can't remember. I have to look for the software. If you do get it to run, you need a better filter on the output and a buffer amp of some kind.If you don't have much invested in that board, and don't need the I/Q that it provides, then give it the elbow (as John Lennon used to say) and get an AD9912. The 9912 far, far exceeds the 9854 (except I don't think it has I/Q output)>I'll look for the software.Jerry

author: g4dbn
author_rank: Newbie
timestamp: November 17, 2020, 07:54:50 pm
content: Thanks Jerry, I'm just working through the source code to see how the checksum works, looks like it is a simple char sum plus 1. This has already taken ten times as long as I was prepared to waste, but if I can just prove that the concept is sound and that I can decode the signal after some stages of multiplication, and I get an idea of how bad the phase noise is with this one, I'll get a better chip ordered and lay out a PCB. It looks very easy to graft in an FTDI USB-serial board.Neil

author: cncjerry
author_rank: Unknown
timestamp: November 17, 2020, 09:57:09 pm
content: I found their code but I think I rewrote it, pretty sure I did. They had a driver and then some examples in VB and VC and I remember now writing a VB app to run the board. The tricky part was the amplitude I remember, but don't remember there being a checksum. Just something like, send a command and get a reply or ack. Let me look for the VB code and maybe that will help.

author: HB9EVI
author_rank: Frequent Contributor
timestamp: November 17, 2020, 11:31:02 pm
content: I'd forget about the onboard uC and its obviously crappy piece of firmware in it. The AD9854 datasheet gives you all you need to write an own code.Sure, the AD9912 is a much better DDS, but if you use the onchip PLL, you're not going to use all its power; I'd supply the MCLK from a SI570, if no readily available 1GHz clock source would be by hand.

author: cncjerry
author_rank: Unknown
timestamp: November 18, 2020, 01:21:42 am
content: g4dbn,I just reread your note. The 9854, for a DDS, has exceptionally good phase noise compared to other DDS chips. It has a 14bit DAC which makes all the difference. The phase noise specs and charts are in the datasheet. What you have to watch for and program around, is certain frequencies will cause a spur whereas the next adjacent frequency within it resolution, will not. So if your application allows for it, you just move the output a little and the signal is much cleaner.I've been programming the AD DDS chips for 20yrs and the 9854 was the leader because of the I/Q output but then the AD9910 came along and now the 9912, both of those improve the phase noise successively by 5 to 10dB. If you are worried about phase noise and don't need I/Q (that you can get with a twisted wire quadrature anyway) then give the 9854 or 9954 the elbow and get a 9912.Jerry

author: g4dbn
author_rank: Newbie
timestamp: November 19, 2020, 01:04:09 am
content: If anyone is interested, I have copies of the software from two different vendors now. The files are too large to post here, so I've put them on google drive. They are RAR files, I used 7-Zip to unzip them. You'll get warnings about the files being too large to scan for viruses. The SHA1 digest of the files are included after the links if you want to check that they have not been tampered with. If you don't have a facility to show the SHA1 hash of a file, you can use "certutil -hashfile <filename>" from a cmd prompt or Get-FileHash in powershell v4 or later.see later message for the correct download link...AD9854_Kit_For_V4V5.rarhttps://drive.google.com/file/d/1aC7t_De2iyY4VVYt2I_8PgmptoKD3uBv/view?usp=sharing47,151,380 bytesSHA1 baac5eb997d63d59bffe8e6d1215fd5dd105355eAD9854_Module.rarhttps://drive.google.com/file/d/1UNy2QANCpuj28uSAoWqcibFj5jl5Nu4E/view?usp=sharing34,858,341 bytesSHA1 e35546bf39f3b5f6e00111d4ba9b85948ef55ed0The drivers are terrible.I've removed the USB chip from this board and it now in the bin in several pieces.I'm hoping to get a couple of 9912 boards shipped express, as they are quoting January for the free delivery service. With the state of UK ports at the moment, I think even that that might be optimistic.Neil

author: coromonadalix
author_rank: Super Contributor
timestamp: November 19, 2020, 01:16:54 am
content: thnks a lotEDITThe first one ask a password for un-rar ??The second one is removed for terms violations ??

author: g4dbn
author_rank: Newbie
timestamp: November 19, 2020, 01:40:08 am
content: Right, I'll try again.... Different approach, this is a zip with password 123456https://drive.google.com/file/d/1mQRpMBa5nr7Quz5vqBJTpobPM4D3V9GZ/view?usp=sharingOne of the other files inside has the same password.Neil

author: cncjerry
author_rank: Unknown
timestamp: November 19, 2020, 05:20:37 am
content: I wish I had seen the 9912 before I bought the 9910 kit... But I have the 9912 on the way. the datasheet lists some very impressive specs for SFDR, spurs, etc. I was trying to measure the 2nd and 3rd on the 9910 and I can't see it unless I use a very narrow RBW and center on the harmonic frequency. That's a decent board. 9912 is supposedly much better.