Post Go back to editing

AD5758 can't read or use it


I am currently trying to test my first circuit base on the AD5758. I am currently an electronics designer trainee. I have written my code base on the example found in the woboq website (a linux base code). I can see with my oscilloscope the Logic analyser and I can confirm I write by SPI the right data within the timing diagram constraint.

What I am trying to do is read registers, but when I check the NOP, nothing comes out on the SDO line. I really don't understand what is going on and I have check pretty much everything. Can someone help me or give me some insight to what I can check? 

Feel free to ask any informations needed to answer me, I don't really know what more I can say to have help.

Thanks for anyone helping me ! 

A student trying to learn Slight smile

  • Hi Antoine,

    Can you give me a bit more detail?

    1. Are you using the evaluation board?
    2. What logic level are the AD0 and AD1 pins on the AD5758?
    3. What exactly are you writing to get data? You can tell me the hex data you are sending before the NOP.
    4. What condition is the RESET pin in?
    5. Are the writes working? E.G. Have you tried configuring the part and checking the output?


  • Hi Valerie !

    Thanks for your answer.

    1. No, I am using my design, base on the recommended design in the data sheet of the chip AD5758 (at the end).

    2. I am using 0 for both AD0 and AD1 (so they are connect to the ground).

    3. I am trying to use the two stage readback mode. First of all, I am doing these steps:

    • Desactivate the CRC by writing 0x90005c3a on the SDI line.
    • Perform a reset with the two reset keys by writing 0x8815fa00 and 0x88af5100.
    • Desactivate the CRC again with the same Hex from above.
    • Perform a calibration memory refresh by writing 0x88fcba00 on the SDI line.
    • Finally, it is at this point that I am trying to read from a register. I am writing: 0x93000200 before writing the NOP.

    4. I don't use the RESET pin, it is not connect to anything, so floating.

    5. I don't know if the writes work. I was not at this point and was trying to concentrate myself on why I can't read register after the calibration memory refresh (as the linux code do).

    Don't hesitate if you need anything more !

    Thanks again,


  • Hi Antoine,

    There is an internal pull down on the RESET pin which means if it is floating it will be pulled down to ground. The device will never respond in this scenario, I would suggest pulling it up to VLDO with a 10k resistor and checking your code again. 


Reply Children
  • Hi Valerie,

    I am finally able to read from a register !! Thanks very much for your help, that was indeed the RESET pin... Do I need to do the same with the LDAC pin ? Currently it is connected to ground. 

    Now I can see in register 0x14, that I have a CRC error. I don't really understand why, because I desactivate it correctly with the correct CRC code at the end which is 0x3a...



  • Hi Antoine,

    No, the LDAC is used to update the DAC. So, if you are using the LDAC pin to update the DAC then you would pull the LDAC pin high, write to the DAC Input register and when the LDAC pin is strobed or a software LDAC command is written to the part then the DAC will update. Tying it to ground just means that the DAC will update immediately after writing to the DAC input register.


  • Good morning Valerie,

    Thanks for the answer. I can finally read and write to the registers. ! Now, I have another problem and that is the output. I am currently using the 0-5V DC mode. When I write to the 0x01 register and write the max (0xFFFF), the output is only 3.3V max and do no go to 5V DC. I am thinking that it is my supply, but can't figure why and who cause that.

    I am using 15V for the AVDD1, 5V for the AVDD2, -15V for the AVSS and 3.3V for the LVDO.

    Thanks again for your big help !


  • Hi Antoine,

    I think you are correct it sounds like a supply issue. Are you using the DPC functionality? If so this needs to be enabled for DPC voltage mode in the DC-DC Config1 register address 0x0B.

    You  can check this voltage by measuring the VDPC+ pin, if the DPC voltage is enabled correctly you should measure ~15V. Although your AVDD should be ~15.75V to generate 15V on the VDPC+ pin. 

    Also, just to note that the VLDO is a 3.3V output from the AD5758, VLOGIC must be supplied with a voltage from 1.71V - 5.5V or it can be connected to VLDO. 



  • Hi Valerie,

    It works fine now, was clearly the DPC mode that was not set correctly. Now the voltage work fine, but the current don't...

    I have checked the register 0x15 and saw that it was an IOUT_OC_ERR (bit 7) that was set. I don't understand, because I have a 100 ohms connected at the output...

    I am really sorry for bothering you with my hundred errors/questions Disappointed

    You are very helpfull !



  • Hi Antoine,

    For the current output mode the DPC mode should be set to DPC current in the DCDC Config1 register. Make sure the 100ohm is connected between the VIOUT pin and the ground of the AD5758. If you want to post a snippet of the schematic I can review.


  • When I use the DPC current mode, it set the bit 9 and 7 in the register 0x15. It is like AVDD1 don't have enough voltage to supply VDPC, but I am using 27V for AVDD1...

  • Then the load isn't configured correctly. The VDPC+ voltage will change dynamically to supply the load, if the load isn't there the supply will continue to rise until it hits the AVDD limit. Can you share a snippet of your load configuration?


  • You need my altium schematic or my physical configuration with the Rload ? As I can see, I change my resistance to a 1K and nothing change. The Vout supply 26.36V and the VDPC+ is 26.36V too. I don't understand, because I am trying to send 20mA max, that should not supply that much output voltage.

  • Okay, I finally got everything to work. I am very gratefull for all your help !

    The problem was because my multimeter was broken, so I changed it and it worked.

    It help me so much! Thanks again,