Hello,
I am designing a device utilizing the InvenSense ICM-42688-P 6-axis IMU. We are currently targeting two SoCs for our product line: the nRF52832 and the newer nRF54L15.
Since the ICM-42688-P lacks an on-chip hardware DMP (unlike older chips like the ICM-20948), we must process the raw gyro and accelerometer data in software on the host MCU to extract clean Quaternions/Euler angles.
I have a few questions regarding implementation and optimization in the Nordic ecosystem:
1. Filter Selection & Performance: For a 6-axis setup running at a high ODR (e.g., 200Hz+), what are the performance impacts of running software filters like Madgwick or Mahony on the nRF52832 (Cortex-M4) versus the nRF54L15 (Cortex-M33)? Are there any recommended, highly optimized sensor fusion libraries natively supported or widely used within the nRF Connect SDK (NCS)?
2. 9-Axis Integration: If we supplement the ICM-42688-P with an external I2C magnetometer down the line, would a lightweight EKF (Extended Kalman Filter) run reliably on the nRF54L15 without significantly draining power or bottlenecking the BLE stack?
3. Data Acquisition Strategy: To minimize CPU wakeups, should we utilize the ICM-42688-P's internal FIFO buffer to burst-read sensor data via SPI/I2C, or is it better to stream data using pin interrupts for real-time filter feeding?
Environment Details:
* nRF52832: Running nRF Connect SDK
* nRF54L15: Running nRF Connect SDK
* Interface: SPI / I2C
Any examples, code snippets, or architecture advice for handling high-rate IMU software filtering on these SoCs would be highly appreciated.
Best regards,
Pavanreddy