ADF5610 Registers For SPI Control

We have the ADF5610 eval board and we probed the SPI lines while setting a new frequency using the control software on the laptop. Using our logic analyzer, we captured a total of 19 words on the SPI line (Each is 32 bits as described in the datasheet). From our analysis of the logic analyzer output, there are 19 separate words sent tot he ADF5610 and they are for the following registers which are listed in order they appear on the logic analyzer (by extracting the register value from each word):

Register 0x01

Register 0x02

Register 0x04

Register 0x05

Register 0x05

Register 0x05

Register 0x05

Register 0x05

Register 0x05

Register 0x06

Register 0x07

Register 0x08

Register 0x09

Register 0x0A

Register 0x0B

Register 0x0C

Register 0x0F

Register 0x10

Register 0x03

QUESTIONS:

1) Why is Register 0x05 written to six times?

2) We noticed that the data in four of the Register 0x05 writes is exactly the same. Namely, the data for four of the 0x05 register writes is 0x0. This seems to be an error or inefficiency in the control software, or what am I missing? Just want to make sure I am not missing something important.

3) Are Register 0x0D and 0x0E not used? I did not see them in the register list in the datasheet, but maybe I just missed it.

  • Hi, 

    To answer questions 1. & 2:

    One of the requirements of writing to any of the VCO registers is that the last write to register 5 (VCO SPI register) must be 0x0. This ensures that the address pointer of the VCO SPI register is pointing to VCO register 0 so that autocalibration is performed correctly. See table 22 on page 41 and VCO Subsystem register map on page 47 for details.

    Within the customer eval software, each time a write to register 5 is performed, a 0x0 is written to register 5 automatically. Since the init sequence writes all 3 VCO subsystem registers, these are then interleaved with writes of 0x0 after each VCO write as follows: 

    VCO subsystem write sequence:

    1. Write Reg 0 (Both bitfields should be 0x0. So this register will be '0')

    2. Write Reg 0 (Performs a 0x0 write automatically afterwards)

    3. Write Reg 1 (Performs writes to Reg 1 accordingly. This won't be 0, as it controls output power etc). 

    4. Write Reg 0 (Performs a 0x0 write automatically afterwards)

    5. Write Reg 2 (Performs writes to Reg 2 accordingly. This controls the divider ratio and power up of buffer amp)

    6. Write Reg 0 (Performs a 0x0 write automatically afterwards).

    This is just the way it was implemented in our software. You are correct in thinking this not the most efficient way to write these registers. For the initialization sequence you can just ensure that 0x0 is the last write to register 5. i.e. 

    1. Write Reg 1. 

    2. Write Reg 2.

    3. Write Reg 0. (This will be 0x0)

    This will ensure that data is written correctly. For an updated customer software interface that uses this method, please download the latest version of ACE where the ADF5610 board plugin can be downloaded within. https://www.analog.com/ACE


    To answer question 3: Yes you are correct, there are no register 0x0D and 0x0E in the ADF5610. 

    Regards,

    Kieran