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?

I.e. 

address - 0x01C

data - FF

address - 0x021

data - 35 

Thanks

Parents
  • +1
    •  Analog Employees 
    on Feb 22, 2021 6:40 PM 1 month ago

    All write modes are listed in the datasheet.  If the address was non-consecutive, then the part would not know which address to write the 2nd data byte to.  It seems like the only way to achieve this is to have that 2nd register's address already loaded into another register and have an enable bit asserted for this sort of non-consecutive write mode. 

  • I actually have another question regarding block write mode. If I have a 4 ADAR1000's in a CSB group, will the address of the chips increment as well? Or do I need to rewrite for each chip in the group?

  • 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.  

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

    Yes, you can always write 16 bit address followed by 8 bit data value. 

    Block write would be in the following:

    Address_1, data_1, data_2, data_3, etc.

    where address_1 is 16 bits and each data value is 8 bits.  Data_1 is put into Address_1's location, data_2 is (Address_1 + 1) location, data_3 is put into (Address_1+2) location, etc.

    Assuming address ascension. 

  • Great! One last question. 

    Say I am writing in block write mode where I have Addres_1 then data1-4  (address_1-4) for the 3 registers after the first address. Can I stop block write mode by writing a new address? Or do I have to stop block write mode by raising CSB?

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

    You have to stop Block Write mode by raising the CSB. 

    If you didn't do this, and kept the CSB  low, and just wrote the new_address value after data values 1 -4, the new_address value would be interpreted by the SPI as data_5 and data_6, as it has no way to know that those 16 bits are an address value.  During block write mode, after the first 16 bits of address are clocked in, the SPI always interprets the next whole 8 bit chunk as data. 

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

    You have to stop Block Write mode by raising the CSB. 

    If you didn't do this, and kept the CSB  low, and just wrote the new_address value after data values 1 -4, the new_address value would be interpreted by the SPI as data_5 and data_6, as it has no way to know that those 16 bits are an address value.  During block write mode, after the first 16 bits of address are clocked in, the SPI always interprets the next whole 8 bit chunk as data. 

Children