ICM42670P IMU - “Device not ready” on nRF5340 DK

Platform:

  • Board: nRF5340 DK (Application core)

  • SDK & Toolchain version: 3.0.2 

  • Toolchain: west + Zephyr SDK

  • Sensor: ICM42670P (connected via SPI4)

Problem Description:

I am integrating the ICM42670P IMU sensor with my nRF5340 DK using Zephyr RTOS over the SPI4 peripheral. I’ve created a board overlay where the sensor is defined under &spi4, I’ve also configured the CS and SPI pins as follows:



The corresponding SPI pinctrl block is:


I’m using DEVICE_DT_GET(DT_NODELABEL(icm42670p)) In the application, and at runtime, I get the following log:


Enabled required Kconfig flags in prj.conf:



Question:
What could be the root cause of this “device not ready” issue for the ICM42670P on SPI4? Are there any extra steps required for nRF5340 or SPI4 in Zephyr?

Any suggestions for debugging or confirming SPI4 peripheral activation would be greatly appreciated.



Parents Reply Children
  • Details, please. We have no idea what you tried or what the results look like.

    Also try to look into the dts files in build/zephyr that have the complete device tree. Pin cfg are at least partly decoded at this point unfortunately but are still somewhat readable.

    If you also look into the board definitions you can see which pins are in use.

    As a last resort you can try writing to SPIM registers directly with a debugger (like Segger Ozone, NRF5340DK seems to have a license in it). Its annoying but it should work.

Related