I'm working in building a basic prototype for an Inertial Navigation System for an university's project, using an ADIS16305 I have available in the laboratory.
I have the SPI working, and I'm obtaining readings from the IMU without issues, but I have run into an odd problem when trying to write the offset registers for compensate sensor bias. The odd thing is that I can write successfully the registers except for some specific values.
For example, the datasheet has an example for write -10LSB gyro offset (page 13) with the SPI sequence DIN=0x9B1F,0x9AF6, this should write 0x1FF6 at address 0x1A, but in my case upon reading the register I get 0x00F6 as result. I have tested writing all possible values and found out that I'm unable to write the values 0x1C, 0x1D, 0x1E, 0x1F in either the upper or lower byte of the offset registers of the accelerometers and gyroscope, in such cases the registers just keep the previous successfully written value.
I don't believe there's an issue with the SPI since I'm able to write those values in other registers such as the alarm thresholds, but here is a capture of the sequence DIN=0xA01F, that should write 0x1F at address 0x20 and fails to.
CH1 is SCLK (781250Hz) and CH2 is DIN.
This is the /CS (CH2) of the same sequence, t_read and t_stall limits are respected (not shown).
Either way there's something specific to the offset registers that I'm missing or the sensor unit I have is faulty, unfortunately I don't have another one for rule that out.