You forgot the second byte of the address. Your data byte (I assume the 0x00 is your data byte even though you didn't say so) is being taken as the second byte of the address and since nothing follows it, nothing is written.

Thanks so much for your help. There was a couple of accidental typos in there, my fault. Looking at the data sheet for this micro chip though, it appears to be a 24 bit shift so I've adapted the code a little with what you have said but it only delivers a 'Read Data = 0' every time... Any clues?

// set up to match device datasheet SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); SPI.setClockDivider(SPI_CLOCK_DIV2); // max clock is 20MHz, so can set high speed SPI.begin(); // sets up pin modes etc.

There is no way this can work because in order to shift out the data the chip needs the full address. Since the same clock is use for input and output it won't have the full address until this transaction is done, at which time it has already sent the output bits. In Figure 2-1 you see that all 24 address bits go in before the data bits start to come out.