I am using an ADIS16228 with the following settings:
REC_CTRL1 = 0x1180 (Hanning Window, SR0, Power Down between records, no storage, Manual FFT Mode)
REC_CTRL2 = 0x0002 (SR0 = 10g Range)
AVG_CNT = 0x9634 (SR0 = 1280 SPS)
DIO_CTRL = 0x2F (DIO1 = busy, DIO2 = Trigger Input)
The settings are stored in flash (i.e., by writing 0x20 to GLOB_CMD).
I noticed that when I power up the device, it seems like the settings have not been stored in flash (i.e., toggling the DIO2 line does not start an FFT). I also noticed that if I read one of the above registers, it returns 0x00 (reading just the low address), but only the first time I read it. If I read it again, it returns the expected value which I stored earlier.
Also, if I do a register read immediately after power up (ignoring the result), then the device behaves as though my settings are stored correctly.
The above behavior seems to be independent of how long I wait after powering up. It can be 100ms or 10 seconds -- the first register read is always 0x00. I am looking at the data both with a logic analyzer and with an SPI host, and as far as I can tell, there is no difference in how I'm doing the first vs subsequent reads. Also, I verified the SPI signals meet the timing specs in the datasheet.
There is an easy workaround for the issue, but I'd really like to understand what, if any, I could be doing to cause this behavior