ICM-42688-P resets itself occasionally

By crheinlaenderw… , 29 January 2024

Hi @ all,

We just designed an electronic system that consists of multiple interconnected PCBs (all units with identical hardware and software), of which each is equipped with a ICM-42688-P, a microcontroller (nRF52) and a local memory. This system records raw data (Accelerometer and Gyroscope, always at same ODR) and saves it locally onto ints memory, of which it is later transferred to a PC via UART.
The embedded software employs the smartmotion lib/driver (smartmotion-dkexamples-atmel-cm4-fpu-2.0.9), and we talk to the IMU via SPI. For synchronized sampling, we use the FSYNC functionality according to the EIS example of the smartmotion lib.

In general, this system works quite well at our customers place, however, our customer reported occasional issues with the IMU data, of which 80% occur on 10% of all PCBs.
All issues occur after some time of proper operation with all PCBS lying on the table without being moved.
The following "types of issues" occur (screenshots attached, Note: different FSR settings):
1) The values of all 6 Axes seem to double their values. From that time on the ODR seems to be reduced, but the respective register settings stayed the same. Despite, the sensor still reacts on movements.
2) All Accelerometer axes deliver only "invalid values", whereas the other axes act normal. Some time later, the "invalid axis" value goes to zero.
3) One axis delivers max values, others double their values and others stay normal. Some time later, all values stay constant.

During the last month, we have been debugging and testing for a bunch of hours. We found out, that in case of issue 3), the ICM-42688-P reports a "SoftwareReset Done", i.e., BIT_INT_STATUS_RESET_DONE in INT_STATUS is set. After this which all further values stay constant. Sometimes BIT_INT_STATUS_AGC_RDY is set as well.
The questions, to wich I found nothing in the documentation are:
1) Under which circumstances does the ICM-42688-P issue a SoftReset by itself?
2) What functionality is affected by the SoftReset? The configuration registers (ODR, FSR, ...) seemed not to be corrupted.
3) What does AGC_RDY mean?

Another thing that we found:
Occasionally, during initialization of the ICM-42688-P, the smartmotion API throws an ERROR_API.
This is caused by the ICM-42688-P when the API doesn't get a BIT_INT_STATUS_RESET_DONE after issuing a SoftReset (inv_icm426xx_device_reset()). Calling the initialization again solves this issue.

Right now, we don't know what to test anymore, I hope you can help us out or have some hints for further tests...

Thanks and best Regards,
Crhein

phpbb Topic ID
45487