AD9578 SPI Readings

Hi all,

I'm having problems during readback of AD9578 registers through SPI interface, reading continuously all the registers I get different values without writing to registers, specifically I obtain different values from register 0x0C and 0x0E (factory configuration registers bits), sometimes different values even if I never write to registers.

I'm using a 12kHz clock with about 47% duty cycle, between readings the enable signal si up for 160us, between the enable falling edge and the first clock rising edge 130us, so I think there's no signal violation of the SPI protocol.

regards

  • 0
    •  Analog Employees 
    on Oct 29, 2019 6:16 PM

    Hi,

    the registers 11 through 14 contain factory programmed calibrations. Please send me an oscilloscope picture of reading the register 11 that I hope you can read correct all the time. Then please send me two pictures while reading the register 12 and obtaining two different results.

     I do not believe the duty cycle of SCK is a problem. The edges are important because the sampling happens on the edges.

    Petre

  • Hi ,

    to write/read the AD9578 I have a level translator made by logic mosfet, I saw that my edges were really "slow" with rise time about 1us, now I changed the circuit and I have rise and fall time of 50ns, seems that the error rate has reduced but not disappeared.

    In the pictures I repeat reading the register 12, I can't trigger my scope to the SPI, I used a logic analyzer to check the sequences.

    After many correct readings 0x02 0xAA 0xAA 0xAB, I read 0x02 0x95 0x55 0x56

    I must read this register as I have to set the msb to 1

    Regards

  • 0
    •  Analog Employees 
    on Oct 30, 2019 8:46 PM in reply to acm45

    Hi,

    I compared the value 0x02 AA AA AB against 0x02 95 55 56. You can see that the bit 21 of the first word is missing from the second word and replaced by a 0 bit at the end.  It is as if the bit 21 (which is a 1) is missing (not put on the bus by the AD9578). So I believe that somehow the AD9578 does recognize a clock edge or level, does not put a bit on the bus and this bit is captured by the signal analyzer as 0. 

    It is good you improved the edge. The levels of the SPI seem to be OK based on the photo you provided.

    These are the values I read from the AD9578 on the eval board when I load it with the setup from the eval board page:

    Bottom line is that I do not know why a bit is missing some times. Do you always read this word? Or the erroneous value you read back changes? Does this happen on other registers? 

    Petre

  • Hi 

    yes, it's always like the AD9578 reads an extra clock edge, it not only happens reading the register 12, it happens randomly reading all registers, the problem is that if I read and write the calibration registers il will corrupt the device settings and read a wrong lock or non lock pll will give me problems to with my device. Toggle the master reset bit did not load the default values in factory programmed calibrations registers.

    With the oscilloscope I tried to find glitches on SDO signal to try find some data change not revealed by the logic analyzer but without success.

    I noticed that sometimes after the CS line goes low, the SDO signal do not go low during the command and address input cycles, what to do in that condition?


    I noticed that in the datasheet the loop capacitor is about 220nF, in the evaluation board is 22nF, what's the right value?

    Regards

  • 0
    •  Analog Employees 
    on Nov 1, 2019 1:23 PM in reply to acm45

    Hi,

    I propose to first obtain a good configuration. Then you can write it into the AD9578 registers and you then make a program that reads back all the registers in one operation. Then you can repeat this operation as many times you want and verify the content.

    You can do the same for a second board, to see if this problem repeats or not.

    I do not know why SDO does not go low when you send the control and address byte. Maybe the CS was not seen by the chip.

    I believe the data sheet more than the eval board, so I would use 220 nF capacitors. As the eval board has 22 nF capacitors, and people have been using the board without complaining, this value should also be OK. 

    The best thing is always to use first an evaluation board, get your configuration going, and then design your custom board.

    Petre