Post Go back to editing

ADF4382A SPI 3.3V 4 Wire Mode

Category: Hardware
Product Number: ADF4382A

I am having difficulty communicating with ADF4382A on its eval board using SPI 4 wire mode, or even 3 wire mode in 3.3V setting (CMOS_OV). The only configuration that works is 3 wire mode in 1.8V setting.

If I try and use 3 wire mode in 3.3V setting, or 4-wire mode, the data that I get back does not agree with what's written to the scratch register 0x0A, or read-only register 0x0C 0x0D.

I use oscilloscope to capture what's going through the SPI lines. In 3 wire 1.8V mode, I can see the correct data, for example, 0x0C register will return 0x56 as expected. But in 3.3V 3-wire mode or 4-wire SPI mode, the waveform shows inconsistent data, sometimes 0x01, sometimes 0x07 or simply 0, if I try to read the read-only register 0x0C. Similar inconsistencies if I try other registers or the scratch register 0x0A.

I wonder if this issue is similar to that of ADF4368's eval board that someone had question with:  SPI Communication with the ADF4368. 4-wire mode not working 

Any ideas?

Thanks.

Parents
  • Hi mmWaver, 

    Is it possible to read the revision number of the board written on the top layer top?  It is written on the copper top layer.  If it is early revisions of the board, (Before Rev D if I am not mistaken) the issue that ADF4368 has is also present in the ADF4382 board.  

    Thanks,
    Emrecan

  • Yes our version says Rev C.

    In addition to adding the series resistor closer to MDO pin, what else should we watch out for?

    I've also noticed that the resistance is important, only 1.5k seems to work. Something much smaller such as 33 Ohm wouldn't. Why is that?

  • Hi mmWaver, 

    Sorry, I missed this. But you said, the board is not working on 4-Wire SPI mode even if CMOS_OV is set to 1.8V write.

    That is not the case with the ADF4368 and this might cause the other issues as well. Did you set the Register 0x00 to 0x18? 

    Additionally, in our tests, we observed that the resistor value is not critical. Depending on the SPI speed, 30- 50-100Ohm can be used. 

    What is your controller and SPI Speed? 

    Thanks,

    Emrecan

Reply
  • Hi mmWaver, 

    Sorry, I missed this. But you said, the board is not working on 4-Wire SPI mode even if CMOS_OV is set to 1.8V write.

    That is not the case with the ADF4368 and this might cause the other issues as well. Did you set the Register 0x00 to 0x18? 

    Additionally, in our tests, we observed that the resistor value is not critical. Depending on the SPI speed, 30- 50-100Ohm can be used. 

    What is your controller and SPI Speed? 

    Thanks,

    Emrecan

Children
  • We used ADI's SDP-S USB interface with ADI's ACE software to program and read the eval board.

  • Hi mmWaver, 

    SDP-S USB bridge and ACE Software work in 4-Wire mode with CMOS_OV= 1.8V by default.  

    Can you communicate the with the chip in the default configuration? 

    What is the current consumption of the chip at power up and after your settings?

    Oscilloscope screenshots would help us to see the chips behavior. Can you probe the SPI lines?

    Thanks,
    Emrecan

  • Hi Emrecan,

    Thank you for your reply.

    Initially I had difficulty communicate with the chip in default configuration, until I added the 1.5k resistor in MDO line.

    Anyways after some trial and error we hypothesized that our whole set up may be noisy such that the SPI port was picking up extra pulses and misinterpreting the data or clock. Even though our oscilloscope probing showed good clock and data waveforms. We were able to quiet down the signals on the line to get reliable transmissions to go through, both write and read. So the chip is behaving now.

    However I do have a follow-on question, during chip initialization, we write to address 0x1A with value 0x10. However read back returns 0x00. (All other registers returned expected values) Is this expected? Should we have attempted read-back of address 0x0A after writing to address 0x10 to start cal?

    Thanks!

  • Hi, 

    Thanks for the update. 

    About the Register 0x1A, 

    PLL parameters, N_IN, FRAC1, MOD1, MOD2, are double buffered. So even you update the register 0x1A with value, unless you write register 0x10 to trigger the register update, you will be reading the previous value of the register 0x1A. 

    So you are right, you should have written register 0x10 to update the PLL parameters and then you can read the register values and verify if they are correctly written. 

    Thanks,

    Emrecan