EVAL-AD5370 Setup and Getting Started

Hello ADI Community,

Background

I am brand new to AD, and AD DAC's I came here to use 5370 to create 40 analog out device to control 40 channels of different 1000Hz signals. I bought the EVAL board in order to avoid working on the chip and use the pinouts to my advantage.

Board

EVAL-AD5370 | Rev A

What I have tried

  1. Windows Machine (Desktop)
    Software: Used the software (AD536x_7x) provided by analog devices to control the pins
    Jumpers: All jumpers are in place LK3, LK8 and LK1, and LK4 is set to 3V (optionA)
    Probes: V0 and AGND (T12) 
    Result: DMM showed zero volts, Oscciloscope could not pick up anything other than stray noise, Note that the the software on "Output Voltages" tab showed Vout0 = -3.0001V
  2. Ubuntu Machine - 1  (Desktop)
    Software: Ubuntu 19.04 / Loaded AD5360 driver using modprobe ad5360 (enabled IIO via kernel)
    Jumpers: All jumpers are in place LK3, LK8 and LK1, and LK4 is set to 3V (optionA)
    Probes: V0 and AGND (T12) 
    Result: Cannot find IIO device, in /sys/bus/iio/devices/
  3. Ubuntu Machine - 2  (Desktop)
    Software: Ubuntu 19.04 / Loaded AD5360 driver using modprobe ad5360 (enabled IIO via kernel) / also setup libiio
    Jumpers: All jumpers are in place LK3, LK8 and LK1, and LK4 is set to 3V (optionA)
    Probes: V0 and AGND (T12) 
    Result: Cannot find IIO device via lsiio or even iio_info
  4. Rasbian - Raspberry Pi 3
    Jumpers: All jumpers are in removed LK3, LK8 and LK1, except LK4 is set to 3V (optionA)
    Software: Used AD5370_rpi_control.py from https://github.com/filiplindau/AD5370 , enabled SPI communcation on RPi, installed python2 spidev and rpigpio support
    Power: Since the jumpers are out, i reasoned USB can be used to just power the device and not control it.
    Probe: V0 and AGND (T12) 
    Cables: (as described by the code in python) 
    1. LDAC_pin = 17
      BUSY_pin = 22
      CLR_pin = 27
      RESET_pin = 4
    Result: Code does not give any error, ive been "successfully" able to run write_value_volt() without any error and pulse ldac, 
                No significant output is observable by DMM or oscilloscope. 

I have additionally tried to probe a wide variety set of pins and i still get no significant result. Another observation that I have is that pressing the reset button does nothing to the power LED, my usual expectation is that at least the power LED flashes. Hopefully there is nothing fundamentally flawed in my approach. or i hope the dac is not DOA for me.

Any help and guidance would be deeply appreciated. 

Parents
  • 0
    •  Analog Employees 
    on Mar 9, 2020 3:30 AM 11 months ago

    Hi,


    Let's focus on making things work using the evaluation software in a Windows machine, may I know what Windows version you are using? Have you tried using Windows 7? Did you follow the User Guide?

    After powering up the board, please measure VREF0, VREF1, DVCC and VDD pins and check if they are at correct voltage levels.

    And when using the evaluation software, every time you send commands, please monitor the SPI lines (DIN, SCLK and SYNC).

    The commands you see in the scope should be the exact command issued thru the evaluation software.

    Cheers,

    Ivan

  • Thankyou isantos,

    1. I am using windows 10, i have also tried windows 7 compatibility mode as well, and followed the instructions as you mentioned.

    2. I tried to probe for voltages across these following pins and i got the following values

    DGND - DVCC : 0.483 V
    AGND - VDD : 0.005 V
    AGND - VSS : 0.153 V
    AGND - VREF1(T64) : 0.006 V
    AGND - VREF0(T63) : 0.007 V

    VREF0 and VREF1  being very close to zero make me wonder if the board is DOA.

    Is there any other test i could do ?

  • +1
    •  Analog Employees 
    on Mar 10, 2020 2:00 AM 11 months ago in reply to sandeepzgk

    Hi,

    Looks like supplies were not provided through J2.

    Please make sure that the supplies are at correct levels. 

    Cheers,

    Ivan

  • .Sorry for the extremely delayed response. Under the current situations, I have been relocating my "lab" to a "home" lab. I have to reach out and thank you again for your help.

    Updates: YES, your guidance was precious. Apparently, I have not been giving the appropriate voltages at VSS, VCC and other supplies. Once I got that amounts in the board started working correctly.

    I have also been able to use the code https://github.com/lightningviper/lightningstools (i am not sure who the author of this code) to work on windows with the board using libusb driver to push data to it by holding LDAC low, and pumping data as fast as I can. I created a timed loop to do so. I have been able to push data at a sample rate of one per millisecond, or 1000 Hz. I have also validated this by using an oscilloscope.

    However, I am attempting to push the frequency even higher. The documentation says that each register takes up to 1500 ns for the update, which implies I can theoretically get a 666 Khz signal through. Although my aims are not that high, I would love to get the audio level sampling rate at 44.1 Khz through each channel. 

    1. do you think the eval board is the right one to do so?

    2. is there any other limitations I should be aware of?

    3. although I have a timer loop running at 10/20 microseconds I believe I am hitting some bottlenecks that need to be evaluated, i.e. could it be USB, could it be the API, Windows 10  or something else.

    Any advice in this direction would be greatly appreciated, I hope you are doing okay in these trying times.

  • 0
    •  Analog Employees 
    on Apr 6, 2020 3:13 AM 10 months ago in reply to sandeepzgk

    Hi,

    Apologies I am not very familiar with the code you shared.

    Have you tried monitoring the SPI signals going into the AD5370? If the update rate is too slow then it might be due to the USB controller.

    Have you also tried using RP3 at the same rates?

    Cheers,

    Ivan

  • Unfortunately, i am still struggling to find a reasonable and stable code base to start off with, is there any github links or some code that you think would make my life easier?

    i.e. i want to output data as fast as i can from the device, preferably using USB (hence the eval board), rest of the conditions dont matter, i.e. OS/Device etc.

  • I have been looking into the forums, and I found  adiddseval.dll and adiddseval.h file that is used for DDS products of ADI, is there a similar DLL and H file for DACs? If so where can I find it?

Reply Children
  •  Thankyou Ivan for your help. So I developed an entire application library to talk to EVAL board using C++ and windows. It works. But I am very concerned about the performance. I used ADI_CYUSB_PDA_x64.inf driver (as provided by the link), along with the HEX file also provided in the link with the specific DLL ADI_CYUSB_USB4.dll, with almost zero overhead.  https://github.com/sandeepzgk/EVAL-AD5370 

    I tried to evaluate the performance of AD5370 using this driver provided by AD. I could not send SPI commands any faster than 1130 microseconds (on average for 1000 calls). I tried a different library/driver(libusb-win32) which helped me go a bit faster to 950 microseconds (on average for 1000 calls)

    I am nowhere near the nanosecond scales promised in the datasheet of 600 ns for a single-channel update time. Although the register update time per the documentation states that two stages take 600 ns, the third stage takes 300 ns per one channel update, i.e. 900 ns or 0.9 microseconds. Adding say 200% overhead, it should take about 2.7 microseconds, per update. 

    Is the evaluation board broken? From my understanding, as per the documentation it is supposed to be Full-Featured Evaluation Board for the AD5370/AD5372/AD5373 ?

    Questions:
    ** Did I misunderstand of how fast AD5370 can update? 
    ** How can I get the board to work as fast as possible (i.e EVAL-AD5370)?
    ** Is there a newer driver that can work faster (the driver from that link is pretty old, i.e 2012)?
    ** Is there another board similar to this which can do faster updates, i.e. ~100 microseconds / 10 kHz?