AD9222 SPI


I'm having some trouble with using the AD9222 SPI. My setup is a folloows:

- I have an AD9222 evaluation board connected to an Altera Stratix-III development board. I designed an adapter board to interface

  between the AD9222 evaluation board HM-ZD connector and Altera's HSMC connector.

- I'm able to read all the addresses correctly listed (on pages 37-38) in the AD9222 datasheet. Meaning I can read the listed default values.

- I can write/read address 0x04 and 0x05 without any problems; however, when I try to write/read other addresses, the default value

  is returned and not the one I wrote. For example, I'll try and write 0x55 to address 0x19 (user_patt1_lsb). but will read 0x00 (default value).

  I've tried writing a 0x01 to address 0xFF (device update) but the default value is read back.

- Also, I can see the correct signals on an oscilloscope.

So, what am I doing wrong?

Please advise,thanks in advance.

Message was edited by: dkline

  • 0
    •  Analog Employees 
    on Jun 29, 2011 8:55 PM

    Hi dkline,

    Sorry to hear you are having trouble.

    Let me give you a few things to investigate.

    1) Have you successfully programed the part through the ADI eval board chain connected to your computer?

    Details on the needed boards and software can be found here . In addition to the AD9222-65EB1 (or whichever verstion you have), you'll need HSC-ADC-EVALCZ  as well as HSC-ADC-FIF05-INTZ adapter board

    and software - Visual Analog and the SPI controller.

    This will help you to make sure you can consistantly program the part.

    2) Next - what we sometimes see is that gound system and ground loops can cause inconsistant reads and writes when using the 2 boards.

    3) Make sure your logic levels are correct and noise or ground bounce aren't causing greif (at the ADC).

    4) Check your power supplies.

    5) CHeck connection integrety. We often find that problems are in the customers adapter boards (high resistance/capacitance, and cross coupled signals and noise).

    6) Have you looked with a logic analyser in addition to the scope?

    Hope these ideas help.

    - Chris

  • hello chris,

    thanks for your reply.

    - in general, should i be able to read the addresses i wrote?

    - is there a suggested amount of time should i should wait

      between read/write operations? (fyi: my sclk is @ 1mhz.)

    - why would some writes work and not others? i could understand

      if there was an intermittent problem, but wouldn't i be reading

      garbled data and not zeros, always? again, i was able to query all the

      addresses and read the default values correctly.

    - is there a recommended sequence of writes that are required for some

      addresses, such as for the ones (i.e. 0x19) i'm having problems with?

    - i only have the ad9222 evaluation board. i'll look into the other boards

      too. (i may not have the budget.)

    - to date, i've only used the scope. i will have to look around to find a logic

      analyzer. i'm using a 4-channel scope to view the spi lines. how would

      a logic analyzer be better?

    - off topic: does analog devices sell a similar adc to the ad9222 (lvds) with

      only 2 or 4 channels and at a slower sampling rate (i.e. khz range)? (for a

      different project.)



  • 0
    •  Analog Employees 
    on Jul 22, 2011 1:09 AM

    Currently, this issue is being worked on off line. The customer is using a custom setup to drive/control the SPI lines independent of the standard data capture platform Analog Devices offers today. Once the issue has been resolved a formal response will be posted for other end users to see.



  • All,

    Has anything become of this issue? I'm actually having the exact same problem. I’ve written several SPI masters for ADI parts in the past and this one seems pretty similar to the rest. I am able to read the default values from the register memory map (pages 37, 38 of the datasheet, rev D), but I am having trouble writing to most of them. The exceptions are register addresses 0x04 and 0x05. I can write and read those two registers with any values. For example, if I write 0x00 to address 0x09 or 0x06 to address 0x0D, when I read back the registers I get their default values, so what I’m writing isn’t sticking. I would suspect either timing or the write algorithm of my VHDL, but neither of these error causes explains how I’m able to write and read correctly to addresses 0x04 and 0x05. I've viewed the interface in ChipScope and do not see any problems.

    If any resolution was made after July of 2011, please let me know.


  • 0
    •  Analog Employees 
    on Jun 5, 2012 12:04 AM


    This sounds like it could be a different problem.  Are you writing the software transfer bit (a 0x01 to register 0XFF)?