We are experiencing an issue with the X gyroscope during burst mode reads on the ADIS16405. It seems to occur only when the X offset register has a negative value. In this scenario, the MSB of the 14-bit XGYRO_OUT register is not set for negative numbers, so they are interpreted as large positive values. We’ve attempted to isolate the issue using the following sequence of commands while the device was stationary on a lab bench:
Factory reset device (write 0xBE02)
Confirm the offset values are 0
Perform a precision calibration (write 0xBE10)
Read offset values (write 0x1A00, 0x1C00, 0x1E00), values were 0xFFC8, 0xFFC8, 0x0030
Read the gyro output registers (write 0x0400, 0x0600, 0x0800), values were 0x8002, 0x8000, 0x8000
Read registers again, values were 0xBFF9, 0x8009, 0xBFFD
Perform a burst read (write 0x3E00), gyro values were 0x8000, 0x8006, 0xBFF7
Perform a burst read again, values were 0x9FF8, 0xBFC6, 0x806B
It seems that the value 0x9FF8 should have been 0xBFF8.
The incorrect XGYRO_OUT values only begin occurring after a burst mode read has been completed. It doesn’t seem to matter if the last read is done as a burst or if the registers are read individually. All subsequent negative X values have the same problem, but the Y and Z values are fine. We are using 5 IMUs right now and this issue occurred on 3 of them. The other 2 devices had positive offset values. As an experiment, we wrote a negative value to the offset register of one of the working devices, and were able to reproduce the problem, so it appears to affect all units.
Does anyone know what is happening here?