SPI Write to ADAR1000

Are there any writing modes besides block write mode and write all mode for the ADAR1000?

Is it possible to write the register address and then write the byte value to be applied to that address, and then follow up with a non consecutive address?


address - 0x01C

data - FF

address - 0x021

data - 35 


Parents Reply
  • 0
    •  Analog Employees 
    on Feb 23, 2021 12:27 AM 1 month ago in reply to Claff231

    You can use the chip address pins (ADDR1 and ADDR0) to set each chips hardware address, and then access each chip individually with their hardware address via the SPI address bits [14:13].  See the chip addresses section on page 27 of the Revision A datasheet.

    And then just block write the gain and phase data to each chip.

  • Got it, thanks! I am still a bit confused on the block write mode though. When looking at the example program in table 20 not all the address are consecutive. Why is it that after the first write to 0x00, the next address being written to is 0x401 and then 0x400? 

  • 0
    •  Analog Employees 
    on Feb 24, 2021 6:34 PM 1 month ago in reply to Claff231

    Table 20 is not an example of a SPI block write, but rather individual SPI writes.

  • Huh, doesn't this directly conflict with my first question regarding other write modes since this is is a direct SPI write where the first byte is address and the second byte is data? Neither a block write or write all.

    And if table 20 isn't a block write program then why does the first line "Reset whole chip, use SDO line for readback, address auto incrementing in block write mode" ? 

  • 0
    •  Analog Employees 
    on Feb 24, 2021 7:29 PM 1 month ago in reply to Claff231

    Perhaps I misunderstood your original question.

    The individual register SPI write is the standard SPI write.  There is always 16 address bits, followed by 8 data bits clocked in, while the CSB is low.  You can perform this SPI transaction as many times as you need to.

    I thought you originally wanted to know if you could write the following in a block write style:

    [address1, data1, data2]

    but data2 would not be written to the next consecutive address, but some other arbitrary address.

    As far as table 20 goes, just because you setup address auto incremented (aka address ascension), does not mean you will actually perform a block write (that uses the address ascension).  You can always perform a Block Write, regard of the address ascension setting.  You can have either address ascension or descension in block write mode, i.e. next address data is written to is either n + 1 or n -1, respectively.  This is controlled with Bits 2 and 5 in Register 0x00; 0 = descension, 1 = ascension.   

    Hope this clears up the confusion.

  • Ahh okay, that helps a lot. 

    From what I can understand, and please correct me if I'm wrong. I can always write the 16 bit address followed by an 8 bit data value, and this can be repeated indefinitely provided I always give the new 16bit address before the 8 bit data value. If I want to block write, I would leave out the address, but the data must be for the register immediately after the initial address.