Solaris Software
Loading...
Searching...
No Matches
icm20948.h File Reference

ICM20948 IMU driver and SPP service. More...

Include dependency graph for icm20948.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  ICM20948_RegBankSel_t
 REG_BANK_SEL register bit layout. More...
union  ICM20948_RegUserCtrl_t
 USER_CTRL register bit layout. More...
union  ICM20948_RegLpConf_t
 LP_CONFIG register bit layout. More...
union  ICM20948_RegPwrMgmt1_t
 PWR_MGMT_1 register bit layout. More...
union  ICM20948_RegPwrMgmt2_t
 PWR_MGMT_2 register bit layout. More...
union  ICM20948_RegIntEnable_t
 INT_ENABLE register bit layout. More...
union  ICM20948_RegIntEnable2_t
 INT_ENABLE_2 register bit layout. More...
union  ICM20948_RegIntStatus_t
 INT_STATUS register bit layout. More...
union  ICM20948_RegDmpIntStatus_t
 DMP_INT_STATUS register bit layout. More...
union  ICM20948_RegSingleFifoPrioritySel_t
 SINGLE_FIFO_PRIORITY_SEL register bit layout. More...
union  ICM20948_RegFifoEn1_t
 FIFO_EN_1 register bit layout. More...
union  ICM20948_RegFifoEn2_t
 FIFO_EN_2 register bit layout. More...
union  ICM20948_RegFifoRst_t
 FIFO_RST register bit layout. More...
union  ICM20948_RegFifoMode_t
 FIFO_MODE register bit layout. More...
union  ICM20948_RegFifoCfg_t
 FIFO_CFG register bit layout. More...
union  ICM20948_RegHwFixDisable_t
 HW_FIX_DISABLE register bit layout. More...
union  ICM20948_RegGyroConfig_t
 GYRO_CONFIG_1 register bit layout. More...
union  ICM20948_RegAccelConfig_t
 ACCEL_CONFIG register bit layout. More...
union  ICM20948_RegAccelConfig2_t
 ACCEL_CONFIG_2 register bit layout. More...
union  ICM20948_RegI2cCtrl_t
 I2C_MST_CTRL register bit layout. More...
union  ICM20948_RegI2cSlvAddr_t
 I2C_SLVx_ADDR register bit layout. More...
union  ICM20948_RegI2cSlvCtrl_t
 I2C_SLVx_CTRL register bit layout. More...
union  ICM20948_RegI2cMstOdrConfig_t
 I2C_MST_ODR_CONFIG register bit layout. More...
struct  ICM20948_SensorData_t
 Parsed sensor sample from the DMP FIFO. More...
struct  ICM20948_Data_t
 ICM20948 interrupt and GPIO context. More...
struct  ICM20948_t
 ICM20948 sensor instance. More...

Macros

#define K_ICM20948_TASK_PRIORITY   4U
#define K_ICM20948_CONFIG_TASK_PRIORITY   5U
#define K_ICM20948_READ_SENSORS_PRIORITY   4U
#define K_ICM20948_TASK_TIMEOUT_MS   5000U
#define K_ICM20948_SERVICE_APID   (0x0002U)
#define K_ICM20948_SPI_HOST_USED   (1U)
#define K_ICM20948_PIN_NUM_CS   21U
#define K_ICM20948_PIN_NUM_CIPO   47U
#define K_ICM20948_PIN_NUM_COPI   38U
#define K_ICM20948_PIN_NUM_CLK   48U
#define K_ICM20948_READ_OP   0x80U
#define K_ICM20948_WRITE_OP   0x00U
#define K_ICM20948_EMPTY_MESSAGE   0x00U
#define K_ICM20948_INT_PIN_NUM   4U
#define K_ICM20948_INT_INTR_TYPE   1U
#define K_ICM20948_INT_PULL   0U
#define K_ICM20948_REG_BANK_SEL   0x7FU
#define K_ICM20948_REG_WHO_AM_I   0x00U
#define K_ICM20948_REG_USER_CTRL   0x03U
#define K_ICM20948_REG_LP_CONF   0x05U
#define K_ICM20948_REG_PWR_MGMT_1   0x06U
#define K_ICM20948_REG_PWR_MGMT_2   0x07U
#define K_ICM20948_REG_INT_ENABLE   0x10U
#define K_ICM20948_REG_INT_ENABLE_1   0x11U
#define K_ICM20948_REG_INT_ENABLE_2   0x12U
#define K_ICM20948_REG_DMP_INT_STATUS   0x18U
#define K_ICM20948_REG_INT_STATUS   0x19U
#define K_ICM20948_REG_SINGLE_FIFO_PRIORITY_SEL   0x26U
#define K_ICM20948_REG_PERIPH_SENS_DATA_00   0x3BU
#define K_ICM20948_REG_FIFO_EN_1   0x66U
#define K_ICM20948_REG_FIFO_EN_2   0x67U
#define K_ICM20948_REG_FIFO_RST   0x68U
#define K_ICM20948_REG_FIFO_MODE   0x69U
#define K_ICM20948_REG_FIFO_COUNTH   0x70U
#define K_ICM20948_REG_FIFO_COUNTL   0x71U
#define K_ICM20948_REG_FIFO_R_W   0x72U
#define K_ICM20948_REG_HW_FIX_DISABLE   0x75U
#define K_ICM20948_REG_FIFO_CFG   0x76U
#define K_ICM20948_REG_TIMEBASE_CORRECTION_PLL   0x28U
#define K_ICM20948_REG_GYRO_SMPLRT_DIV   0x00U
#define K_ICM20948_REG_GYRO_CONFIG   0x01U
#define K_ICM20948_REG_ACCEL_SMPLRT_DIV_1   0x10U
#define K_ICM20948_REG_ACCEL_SMPLRT_DIV_2   0x11U
#define K_ICM20948_REG_ACCEL_CONFIG   0x14U
#define K_ICM20948_REG_ACCEL_CONFIG_2   0x15U
#define K_ICM20948_REG_DMP_ADDR_MSB   0x50U
#define K_ICM20948_REG_DMP_ADDR_LSB   0x51U
#define K_ICM20948_I2C_MST_ODR_CONFIG   0x00U
#define K_ICM20948_REG_I2C_CTRL   0x01U
#define K_ICM20948_REG_SLV0_ADDR   0x03U
#define K_ICM20948_REG_SLV0_REG   0x04U
#define K_ICM20948_REG_SLV0_CTRL   0x05U
#define K_ICM20948_REG_SLV0_DO   0x06U
#define K_ICM20948_I2C_SLV1_ADDR   0x07U
#define K_ICM20948_I2C_SLV1_REG   0x08U
#define K_ICM20948_I2C_SLV1_CTRL   0x09U
#define K_ICM20948_I2C_SLV1_DO   0x0AU
#define K_ICM20948_REG_MEM_START_ADDR   0x7CU
#define K_ICM20948_REG_MEM_R_W   0x7DU
#define K_ICM20948_REG_MEM_BANK_SEL   0x7EU
#define K_ICM20948_DMP_LOAD_START   0x0090U
#define K_ICM20948_DMP_DATA_OUT_CTL1   (4U * 16U)
#define K_ICM20948_DMP_DATA_OUT_CTL2   (4U * 16U + 2U)
#define K_ICM20948_DMP_DATA_INTR_CTL   (4U * 16U + 12U)
#define K_ICM20948_DMP_MOTION_EVENT_CTL   (4U * 16U + 14U)
#define K_ICM20948_DMP_DATA_RDY_STATUS   (8U * 16U + 10U)
#define K_ICM20948_DMP_ODR_QUAT6   (10U * 16U + 12U)
#define K_ICM20948_DMP_ODR_QUAT9   (10U * 16U + 8U)
#define K_ICM20948_DMP_ODR_GYRO   (11U * 16U + 10U)
#define K_ICM20948_DMP_ODR_CPASS   (11U * 16U + 6U)
#define K_ICM20948_DMP_ODR_ACCEL   (11U * 16U + 14U)
#define K_ICM20948_DMP_CPASS_TIME_BUFFER   (29U * 16U + 8U)
#define K_ICM20948_DMP_GYRO_SF   (19U * 16U)
#define K_ICM20948_DMP_ACC_SCALE   (30U * 16U)
#define K_ICM20948_DMP_FIFO_WATERMARK   (31U * 16U + 14U)
#define K_ICM20948_DMP_BAC_RATE   (48U * 16U + 10U)
#define K_ICM20948_DMP_B2S_RATE   (48U * 16U + 8U)
#define K_ICM20948_DMP_ACCEL_ONLY_GAIN   (16U * 16U + 12U)
#define K_ICM20948_DMP_ACC_SCALE2   (79U * 16U + 4U)
#define K_ICM20948_DMP_CPASS_MTX_00   (23U * 16U)
#define K_ICM20948_DMP_CPASS_MTX_01   (23U * 16U + 4U)
#define K_ICM20948_DMP_CPASS_MTX_02   (23U * 16U + 8U)
#define K_ICM20948_DMP_CPASS_MTX_10   (23U * 16U + 12U)
#define K_ICM20948_DMP_CPASS_MTX_11   (24U * 16U)
#define K_ICM20948_DMP_CPASS_MTX_12   (24U * 16U + 4U)
#define K_ICM20948_DMP_CPASS_MTX_20   (24U * 16U + 8U)
#define K_ICM20948_DMP_CPASS_MTX_21   (24U * 16U + 12U)
#define K_ICM20948_DMP_CPASS_MTX_22   (25U * 16U)
#define K_ICM20948_DMP_GYRO_FULLSCALE   (72U * 16U + 12U)
#define K_ICM20948_DMP_ACCEL_ALPHA_VAR   (91U * 16U)
#define K_ICM20948_DMP_ACCEL_A_VAR   (92U * 16U)
#define K_ICM20948_DMP_ACCEL_CAL_INIT   (94U * 16U + 4U)
#define K_ICM20948_DMP_B2S_MTX_00   (208U * 16U)
#define K_ICM20948_DMP_B2S_MTX_01   (208U * 16U + 4U)
#define K_ICM20948_DMP_B2S_MTX_02   (208U * 16U + 8U)
#define K_ICM20948_DMP_B2S_MTX_10   (208U * 16U + 12U)
#define K_ICM20948_DMP_B2S_MTX_11   (209U * 16U)
#define K_ICM20948_DMP_B2S_MTX_12   (209U * 16U + 4U)
#define K_ICM20948_DMP_B2S_MTX_20   (209U * 16U + 8U)
#define K_ICM20948_DMP_B2S_MTX_21   (209U * 16U + 12U)
#define K_ICM20948_DMP_B2S_MTX_22   (210U * 16U)
#define K_ICM20948_MAG_WR_ADDR   0x0CU
#define K_ICM20948_MAG_RD_ADDR   0x8CU
#define K_ICM20948_MAG_CTRL_2   0x31U
#define K_ICM20948_REG_ACCEL_X_H   0x2DU
#define K_ICM20948_REG_ACCEL_X_L   0x2EU
#define K_ICM20948_REG_ACCEL_Y_H   0x2FU
#define K_ICM20948_REG_ACCEL_Y_L   0x30U
#define K_ICM20948_REG_ACCEL_Z_H   0x31U
#define K_ICM20948_REG_ACCEL_Z_L   0x32U
#define K_ICM20948_REG_GYRO_X_H   0x33U
#define K_ICM20948_REG_GYRO_X_L   0x34U
#define K_ICM20948_REG_GYRO_Y_H   0x35U
#define K_ICM20948_REG_GYRO_Y_L   0x36U
#define K_ICM20948_REG_GYRO_Z_H   0x37U
#define K_ICM20948_REG_GYRO_Z_L   0x38U
#define K_ICM20948_REG_MAGNETO_X_L   0x3CU
#define K_ICM20948_REG_MAGNETO_X_H   0x3DU
#define K_ICM20948_REG_MAGNETO_Y_L   0x3EU
#define K_ICM20948_REG_MAGNETO_Y_H   0x3FU
#define K_ICM20948_REG_MAGNETO_Z_L   0x40U
#define K_ICM20948_REG_MAGNETO_Z_H   0x41U

Enumerations

enum  ICM20948_RegBank_t { K_ICM20948_REG_BANK_0 = 0x00U , K_ICM20948_REG_BANK_1 = 0x10U , K_ICM20948_REG_BANK_2 = 0x20U , K_ICM20948_REG_BANK_3 = 0x30U }
 ICM20948 register bank selector. More...
enum  ICM20948_ClockSel_t { K_ICM20948_CLK_INTERNAL_20MHZ = 0U , K_ICM20948_CLK_AUTO = 1U , K_ICM20948_CLK_STOP = 7U }
 Clock source selection for PWR_MGMT_1. More...
enum  ICM20948_GyroFsSel_t { K_ICM20948_GYRO_FS_250DPS = 0U , K_ICM20948_GYRO_FS_500DPS = 1U , K_ICM20948_GYRO_FS_1000DPS = 2U , K_ICM20948_GYRO_FS_2000DPS = 3U }
 Gyroscope full-scale range selection. More...
enum  ICM20948_AccelFsSel_t { K_ICM20948_ACCEL_FS_2G = 0U , K_ICM20948_ACCEL_FS_4G = 1U , K_ICM20948_ACCEL_FS_8G = 2U , K_ICM20948_ACCEL_FS_16G = 3U }
 Accelerometer full-scale range selection. More...

Functions

const SPP_SERVICE_ProducerContract_t * SPP_SERVICES_ICM20948_getProducerContract (void)
 Returns a pointer to the ICM20948 producer contract.

Detailed Description

ICM20948 IMU driver and SPP service.

Provides SPI register access, DMP firmware loading and sensor data acquisition for the TDK InvenSense ICM20948 9-axis IMU. Supports data-ready interrupt via GPIO event groups.

The driver follows a three-step workflow:

  1. Call SPP_SERVICES_ICM20948_getProducerContract() and register the result with SPP_SERVICES_PUBSUB_registerProducer().
  2. The service framework calls init (GPIO/SPI setup + DMP firmware load).
  3. On each DRDY interrupt acquireData reads the DMP FIFO and publishes a 9-axis data packet.

Hardware pin configuration is encoded in K_ICM20948_INT_* and K_ICM20948_SPI_HOST_USED constants; no external instance is needed.

Naming conventions used in this file:

  • Constants/macros: K_ICM20948_*
  • Types: ICM20948_*_t
  • Public functions: SPP_SERVICES_ICM20948_*()
  • Pointer params: p_*

Definition in file icm20948.h.

Macro Definition Documentation

◆ K_ICM20948_TASK_PRIORITY

#define K_ICM20948_TASK_PRIORITY   4U

FreeRTOS task priority for the ICM20948 service task.

Definition at line 38 of file icm20948.h.

◆ K_ICM20948_CONFIG_TASK_PRIORITY

#define K_ICM20948_CONFIG_TASK_PRIORITY   5U

Priority for the DMP configuration task.

Definition at line 39 of file icm20948.h.

◆ K_ICM20948_READ_SENSORS_PRIORITY

#define K_ICM20948_READ_SENSORS_PRIORITY   4U

Priority for the sensor read task.

Definition at line 40 of file icm20948.h.

◆ K_ICM20948_TASK_TIMEOUT_MS

#define K_ICM20948_TASK_TIMEOUT_MS   5000U

Timeout in ms for the acquire task.

Definition at line 41 of file icm20948.h.

◆ K_ICM20948_SERVICE_APID

#define K_ICM20948_SERVICE_APID   (0x0002U)

APID produced by the ICM20948 module (bitmask scheme).

Definition at line 42 of file icm20948.h.

Referenced by SPP_SERVICES_SX1262_consumeData().

◆ K_ICM20948_SPI_HOST_USED

#define K_ICM20948_SPI_HOST_USED   (1U)

SPI host identifier (SPI2_HOST = 1 on ESP32).

Definition at line 45 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_init().

◆ K_ICM20948_PIN_NUM_CS

#define K_ICM20948_PIN_NUM_CS   21U

SPI chip-select GPIO pin.

Definition at line 46 of file icm20948.h.

◆ K_ICM20948_PIN_NUM_CIPO

#define K_ICM20948_PIN_NUM_CIPO   47U

SPI CIPO (MISO) GPIO pin.

Definition at line 47 of file icm20948.h.

◆ K_ICM20948_PIN_NUM_COPI

#define K_ICM20948_PIN_NUM_COPI   38U

SPI COPI (MOSI) GPIO pin.

Definition at line 48 of file icm20948.h.

◆ K_ICM20948_PIN_NUM_CLK

#define K_ICM20948_PIN_NUM_CLK   48U

SPI clock GPIO pin.

Definition at line 49 of file icm20948.h.

◆ K_ICM20948_READ_OP

#define K_ICM20948_READ_OP   0x80U

SPI read flag: set MSB to signal a read transaction.

Definition at line 50 of file icm20948.h.

◆ K_ICM20948_WRITE_OP

#define K_ICM20948_WRITE_OP   0x00U

SPI write marker (zero).

Definition at line 51 of file icm20948.h.

◆ K_ICM20948_EMPTY_MESSAGE

#define K_ICM20948_EMPTY_MESSAGE   0x00U

Dummy byte clocked out during SPI reads.

Definition at line 52 of file icm20948.h.

◆ K_ICM20948_INT_PIN_NUM

#define K_ICM20948_INT_PIN_NUM   4U

GPIO interrupt pin.

Definition at line 55 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_init().

◆ K_ICM20948_INT_INTR_TYPE

#define K_ICM20948_INT_INTR_TYPE   1U

Interrupt trigger type (1=rising).

Definition at line 56 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_init().

◆ K_ICM20948_INT_PULL

#define K_ICM20948_INT_PULL   0U

Pull resistor: 0=none, 1=up, 2=down.

Definition at line 57 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_init().

◆ K_ICM20948_REG_BANK_SEL

#define K_ICM20948_REG_BANK_SEL   0x7FU

Register bank select register address.

Definition at line 60 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_setBank().

◆ K_ICM20948_REG_WHO_AM_I

#define K_ICM20948_REG_WHO_AM_I   0x00U

WHO_AM_I register; expected value 0xEA.

Definition at line 63 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_USER_CTRL

#define K_ICM20948_REG_USER_CTRL   0x03U

User control register.

Definition at line 64 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_LP_CONF

#define K_ICM20948_REG_LP_CONF   0x05U

Low-power configuration register.

Definition at line 65 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_PWR_MGMT_1

#define K_ICM20948_REG_PWR_MGMT_1   0x06U

Power management 1 register.

Definition at line 66 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit(), and SPP_SERVICES_ICM20948_lpWakeCycle().

◆ K_ICM20948_REG_PWR_MGMT_2

#define K_ICM20948_REG_PWR_MGMT_2   0x07U

Power management 2 register.

Definition at line 67 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_INT_ENABLE

#define K_ICM20948_REG_INT_ENABLE   0x10U

Interrupt enable register.

Definition at line 68 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_INT_ENABLE_1

#define K_ICM20948_REG_INT_ENABLE_1   0x11U

Interrupt enable 1 register.

Definition at line 69 of file icm20948.h.

◆ K_ICM20948_REG_INT_ENABLE_2

#define K_ICM20948_REG_INT_ENABLE_2   0x12U

Interrupt enable 2 register.

Definition at line 70 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_DMP_INT_STATUS

#define K_ICM20948_REG_DMP_INT_STATUS   0x18U

DMP interrupt status register.

Definition at line 71 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_checkFifoData().

◆ K_ICM20948_REG_INT_STATUS

#define K_ICM20948_REG_INT_STATUS   0x19U

Interrupt status register.

Definition at line 72 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_checkFifoData().

◆ K_ICM20948_REG_SINGLE_FIFO_PRIORITY_SEL

#define K_ICM20948_REG_SINGLE_FIFO_PRIORITY_SEL   0x26U

FIFO single-stream priority select register.

Definition at line 73 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_PERIPH_SENS_DATA_00

#define K_ICM20948_REG_PERIPH_SENS_DATA_00   0x3BU

External sensor data register 0.

Definition at line 74 of file icm20948.h.

◆ K_ICM20948_REG_FIFO_EN_1

#define K_ICM20948_REG_FIFO_EN_1   0x66U

FIFO enable 1 register.

Definition at line 75 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_FIFO_EN_2

#define K_ICM20948_REG_FIFO_EN_2   0x67U

FIFO enable 2 register.

Definition at line 76 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_FIFO_RST

#define K_ICM20948_REG_FIFO_RST   0x68U

FIFO reset register.

Definition at line 77 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_resetFifo().

◆ K_ICM20948_REG_FIFO_MODE

#define K_ICM20948_REG_FIFO_MODE   0x69U

FIFO mode register.

Definition at line 78 of file icm20948.h.

◆ K_ICM20948_REG_FIFO_COUNTH

#define K_ICM20948_REG_FIFO_COUNTH   0x70U

FIFO byte count high register.

Definition at line 79 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_checkFifoData().

◆ K_ICM20948_REG_FIFO_COUNTL

#define K_ICM20948_REG_FIFO_COUNTL   0x71U

FIFO byte count low register.

Definition at line 80 of file icm20948.h.

◆ K_ICM20948_REG_FIFO_R_W

#define K_ICM20948_REG_FIFO_R_W   0x72U

FIFO read/write data register.

Definition at line 81 of file icm20948.h.

Referenced by readFifoBurst().

◆ K_ICM20948_REG_HW_FIX_DISABLE

#define K_ICM20948_REG_HW_FIX_DISABLE   0x75U

Hardware fix disable register.

Definition at line 82 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_FIFO_CFG

#define K_ICM20948_REG_FIFO_CFG   0x76U

FIFO configuration register.

Definition at line 83 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_TIMEBASE_CORRECTION_PLL

#define K_ICM20948_REG_TIMEBASE_CORRECTION_PLL   0x28U

PLL timebase correction register (bank 1).

Definition at line 86 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_GYRO_SMPLRT_DIV

#define K_ICM20948_REG_GYRO_SMPLRT_DIV   0x00U

Gyroscope sample-rate divider register (bank 2).

Definition at line 89 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_GYRO_CONFIG

#define K_ICM20948_REG_GYRO_CONFIG   0x01U

Gyroscope configuration register (bank 2).

Definition at line 90 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_ACCEL_SMPLRT_DIV_1

#define K_ICM20948_REG_ACCEL_SMPLRT_DIV_1   0x10U

Accelerometer sample-rate divider high register (bank 2).

Definition at line 91 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_ACCEL_SMPLRT_DIV_2

#define K_ICM20948_REG_ACCEL_SMPLRT_DIV_2   0x11U

Accelerometer sample-rate divider low register (bank 2).

Definition at line 92 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_ACCEL_CONFIG

#define K_ICM20948_REG_ACCEL_CONFIG   0x14U

Accelerometer configuration register (bank 2).

Definition at line 93 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_ACCEL_CONFIG_2

#define K_ICM20948_REG_ACCEL_CONFIG_2   0x15U

Accelerometer configuration 2 register (bank 2).

Definition at line 94 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_DMP_ADDR_MSB

#define K_ICM20948_REG_DMP_ADDR_MSB   0x50U

DMP program start address MSB (bank 2).

Definition at line 95 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_DMP_ADDR_LSB

#define K_ICM20948_REG_DMP_ADDR_LSB   0x51U

DMP program start address LSB (bank 2).

Definition at line 96 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_I2C_MST_ODR_CONFIG

#define K_ICM20948_I2C_MST_ODR_CONFIG   0x00U

I2C master ODR configuration register (bank 3).

Definition at line 99 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_I2C_CTRL

#define K_ICM20948_REG_I2C_CTRL   0x01U

I2C master control register (bank 3).

Definition at line 100 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_SLV0_ADDR

#define K_ICM20948_REG_SLV0_ADDR   0x03U

I2C slave 0 address register (bank 3).

Definition at line 101 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_SLV0_REG

#define K_ICM20948_REG_SLV0_REG   0x04U

I2C slave 0 register address (bank 3).

Definition at line 102 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_SLV0_CTRL

#define K_ICM20948_REG_SLV0_CTRL   0x05U

I2C slave 0 control register (bank 3).

Definition at line 103 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_SLV0_DO

#define K_ICM20948_REG_SLV0_DO   0x06U

I2C slave 0 data out register (bank 3).

Definition at line 104 of file icm20948.h.

◆ K_ICM20948_I2C_SLV1_ADDR

#define K_ICM20948_I2C_SLV1_ADDR   0x07U

I2C slave 1 address register (bank 3).

Definition at line 105 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_I2C_SLV1_REG

#define K_ICM20948_I2C_SLV1_REG   0x08U

I2C slave 1 register address (bank 3).

Definition at line 106 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_I2C_SLV1_CTRL

#define K_ICM20948_I2C_SLV1_CTRL   0x09U

I2C slave 1 control register (bank 3).

Definition at line 107 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_I2C_SLV1_DO

#define K_ICM20948_I2C_SLV1_DO   0x0AU

I2C slave 1 data out register (bank 3).

Definition at line 108 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_MEM_START_ADDR

#define K_ICM20948_REG_MEM_START_ADDR   0x7CU

DMP memory start address register.

Definition at line 111 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_dmpWriteBytes(), and SPP_SERVICES_ICM20948_loadDmp().

◆ K_ICM20948_REG_MEM_R_W

#define K_ICM20948_REG_MEM_R_W   0x7DU

DMP memory read/write register.

Definition at line 112 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_dmpWriteBytes(), and SPP_SERVICES_ICM20948_loadDmp().

◆ K_ICM20948_REG_MEM_BANK_SEL

#define K_ICM20948_REG_MEM_BANK_SEL   0x7EU

DMP memory bank select register.

Definition at line 113 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_dmpWriteBytes(), and SPP_SERVICES_ICM20948_loadDmp().

◆ K_ICM20948_DMP_LOAD_START

#define K_ICM20948_DMP_LOAD_START   0x0090U

Start address in DMP memory for firmware load.

Definition at line 114 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_loadDmp().

◆ K_ICM20948_DMP_DATA_OUT_CTL1

#define K_ICM20948_DMP_DATA_OUT_CTL1   (4U * 16U)

DMP output control 1 address.

Definition at line 117 of file icm20948.h.

Referenced by ICM20948_dmpWriteOutputConfig().

◆ K_ICM20948_DMP_DATA_OUT_CTL2

#define K_ICM20948_DMP_DATA_OUT_CTL2   (4U * 16U + 2U)

DMP output control 2 address.

Definition at line 118 of file icm20948.h.

Referenced by ICM20948_dmpWriteOutputConfig().

◆ K_ICM20948_DMP_DATA_INTR_CTL

#define K_ICM20948_DMP_DATA_INTR_CTL   (4U * 16U + 12U)

DMP interrupt control address.

Definition at line 119 of file icm20948.h.

Referenced by ICM20948_dmpWriteOutputConfig().

◆ K_ICM20948_DMP_MOTION_EVENT_CTL

#define K_ICM20948_DMP_MOTION_EVENT_CTL   (4U * 16U + 14U)

DMP motion event control address.

Definition at line 120 of file icm20948.h.

Referenced by ICM20948_dmpWriteOutputConfig().

◆ K_ICM20948_DMP_DATA_RDY_STATUS

#define K_ICM20948_DMP_DATA_RDY_STATUS   (8U * 16U + 10U)

DMP data ready status address.

Definition at line 121 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ODR_QUAT6

#define K_ICM20948_DMP_ODR_QUAT6   (10U * 16U + 12U)

DMP quaternion6 output data rate address.

Definition at line 122 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ODR_QUAT9

#define K_ICM20948_DMP_ODR_QUAT9   (10U * 16U + 8U)

DMP quaternion9 output data rate address.

Definition at line 123 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ODR_GYRO

#define K_ICM20948_DMP_ODR_GYRO   (11U * 16U + 10U)

DMP gyroscope output data rate address.

Definition at line 124 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ODR_CPASS

#define K_ICM20948_DMP_ODR_CPASS   (11U * 16U + 6U)

DMP compass output data rate address.

Definition at line 125 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ODR_ACCEL

#define K_ICM20948_DMP_ODR_ACCEL   (11U * 16U + 14U)

DMP accelerometer output data rate address.

Definition at line 126 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_TIME_BUFFER

#define K_ICM20948_DMP_CPASS_TIME_BUFFER   (29U * 16U + 8U)

DMP compass time buffer address.

Definition at line 127 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_GYRO_SF

#define K_ICM20948_DMP_GYRO_SF   (19U * 16U)

DMP gyroscope scale factor address.

Definition at line 128 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACC_SCALE

#define K_ICM20948_DMP_ACC_SCALE   (30U * 16U)

DMP accelerometer scale address.

Definition at line 129 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_FIFO_WATERMARK

#define K_ICM20948_DMP_FIFO_WATERMARK   (31U * 16U + 14U)

DMP FIFO watermark address.

Definition at line 130 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_BAC_RATE

#define K_ICM20948_DMP_BAC_RATE   (48U * 16U + 10U)

DMP basic activity classifier rate address.

Definition at line 131 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_RATE

#define K_ICM20948_DMP_B2S_RATE   (48U * 16U + 8U)

DMP bring-to-see rate address.

Definition at line 132 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACCEL_ONLY_GAIN

#define K_ICM20948_DMP_ACCEL_ONLY_GAIN   (16U * 16U + 12U)

DMP accel-only mode gain address.

Definition at line 133 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACC_SCALE2

#define K_ICM20948_DMP_ACC_SCALE2   (79U * 16U + 4U)

DMP accelerometer scale 2 address.

Definition at line 134 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_00

#define K_ICM20948_DMP_CPASS_MTX_00   (23U * 16U)

Compass mount matrix [0][0].

Definition at line 135 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_01

#define K_ICM20948_DMP_CPASS_MTX_01   (23U * 16U + 4U)

Compass mount matrix [0][1].

Definition at line 136 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_02

#define K_ICM20948_DMP_CPASS_MTX_02   (23U * 16U + 8U)

Compass mount matrix [0][2].

Definition at line 137 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_10

#define K_ICM20948_DMP_CPASS_MTX_10   (23U * 16U + 12U)

Compass mount matrix [1][0].

Definition at line 138 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_11

#define K_ICM20948_DMP_CPASS_MTX_11   (24U * 16U)

Compass mount matrix [1][1].

Definition at line 139 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_12

#define K_ICM20948_DMP_CPASS_MTX_12   (24U * 16U + 4U)

Compass mount matrix [1][2].

Definition at line 140 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_20

#define K_ICM20948_DMP_CPASS_MTX_20   (24U * 16U + 8U)

Compass mount matrix [2][0].

Definition at line 141 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_21

#define K_ICM20948_DMP_CPASS_MTX_21   (24U * 16U + 12U)

Compass mount matrix [2][1].

Definition at line 142 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_CPASS_MTX_22

#define K_ICM20948_DMP_CPASS_MTX_22   (25U * 16U)

Compass mount matrix [2][2].

Definition at line 143 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_GYRO_FULLSCALE

#define K_ICM20948_DMP_GYRO_FULLSCALE   (72U * 16U + 12U)

DMP gyroscope full-scale address.

Definition at line 144 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACCEL_ALPHA_VAR

#define K_ICM20948_DMP_ACCEL_ALPHA_VAR   (91U * 16U)

DMP accel alpha variance address.

Definition at line 145 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACCEL_A_VAR

#define K_ICM20948_DMP_ACCEL_A_VAR   (92U * 16U)

DMP accel A variance address.

Definition at line 146 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_ACCEL_CAL_INIT

#define K_ICM20948_DMP_ACCEL_CAL_INIT   (94U * 16U + 4U)

DMP accel calibration init address.

Definition at line 147 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_00

#define K_ICM20948_DMP_B2S_MTX_00   (208U * 16U)

Body-to-sensor matrix [0][0].

Definition at line 148 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_01

#define K_ICM20948_DMP_B2S_MTX_01   (208U * 16U + 4U)

Body-to-sensor matrix [0][1].

Definition at line 149 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_02

#define K_ICM20948_DMP_B2S_MTX_02   (208U * 16U + 8U)

Body-to-sensor matrix [0][2].

Definition at line 150 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_10

#define K_ICM20948_DMP_B2S_MTX_10   (208U * 16U + 12U)

Body-to-sensor matrix [1][0].

Definition at line 151 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_11

#define K_ICM20948_DMP_B2S_MTX_11   (209U * 16U)

Body-to-sensor matrix [1][1].

Definition at line 152 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_12

#define K_ICM20948_DMP_B2S_MTX_12   (209U * 16U + 4U)

Body-to-sensor matrix [1][2].

Definition at line 153 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_20

#define K_ICM20948_DMP_B2S_MTX_20   (209U * 16U + 8U)

Body-to-sensor matrix [2][0].

Definition at line 154 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_21

#define K_ICM20948_DMP_B2S_MTX_21   (209U * 16U + 12U)

Body-to-sensor matrix [2][1].

Definition at line 155 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_DMP_B2S_MTX_22

#define K_ICM20948_DMP_B2S_MTX_22   (210U * 16U)

Body-to-sensor matrix [2][2].

Definition at line 156 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_MAG_WR_ADDR

#define K_ICM20948_MAG_WR_ADDR   0x0CU

AK09916 magnetometer write address (I2C).

Definition at line 159 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_MAG_RD_ADDR

#define K_ICM20948_MAG_RD_ADDR   0x8CU

AK09916 magnetometer read address (I2C).

Definition at line 160 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_MAG_CTRL_2

#define K_ICM20948_MAG_CTRL_2   0x31U

AK09916 control 2 register address.

Definition at line 161 of file icm20948.h.

Referenced by SPP_SERVICES_ICM20948_configDmpInit().

◆ K_ICM20948_REG_ACCEL_X_H

#define K_ICM20948_REG_ACCEL_X_H   0x2DU

Accelerometer X high byte register.

Definition at line 164 of file icm20948.h.

◆ K_ICM20948_REG_ACCEL_X_L

#define K_ICM20948_REG_ACCEL_X_L   0x2EU

Accelerometer X low byte register.

Definition at line 165 of file icm20948.h.

◆ K_ICM20948_REG_ACCEL_Y_H

#define K_ICM20948_REG_ACCEL_Y_H   0x2FU

Accelerometer Y high byte register.

Definition at line 166 of file icm20948.h.

◆ K_ICM20948_REG_ACCEL_Y_L

#define K_ICM20948_REG_ACCEL_Y_L   0x30U

Accelerometer Y low byte register.

Definition at line 167 of file icm20948.h.

◆ K_ICM20948_REG_ACCEL_Z_H

#define K_ICM20948_REG_ACCEL_Z_H   0x31U

Accelerometer Z high byte register.

Definition at line 168 of file icm20948.h.

◆ K_ICM20948_REG_ACCEL_Z_L

#define K_ICM20948_REG_ACCEL_Z_L   0x32U

Accelerometer Z low byte register.

Definition at line 169 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_X_H

#define K_ICM20948_REG_GYRO_X_H   0x33U

Gyroscope X high byte register.

Definition at line 170 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_X_L

#define K_ICM20948_REG_GYRO_X_L   0x34U

Gyroscope X low byte register.

Definition at line 171 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_Y_H

#define K_ICM20948_REG_GYRO_Y_H   0x35U

Gyroscope Y high byte register.

Definition at line 172 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_Y_L

#define K_ICM20948_REG_GYRO_Y_L   0x36U

Gyroscope Y low byte register.

Definition at line 173 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_Z_H

#define K_ICM20948_REG_GYRO_Z_H   0x37U

Gyroscope Z high byte register.

Definition at line 174 of file icm20948.h.

◆ K_ICM20948_REG_GYRO_Z_L

#define K_ICM20948_REG_GYRO_Z_L   0x38U

Gyroscope Z low byte register.

Definition at line 175 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_X_L

#define K_ICM20948_REG_MAGNETO_X_L   0x3CU

Magnetometer X low byte register.

Definition at line 176 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_X_H

#define K_ICM20948_REG_MAGNETO_X_H   0x3DU

Magnetometer X high byte register.

Definition at line 177 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_Y_L

#define K_ICM20948_REG_MAGNETO_Y_L   0x3EU

Magnetometer Y low byte register.

Definition at line 178 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_Y_H

#define K_ICM20948_REG_MAGNETO_Y_H   0x3FU

Magnetometer Y high byte register.

Definition at line 179 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_Z_L

#define K_ICM20948_REG_MAGNETO_Z_L   0x40U

Magnetometer Z low byte register.

Definition at line 180 of file icm20948.h.

◆ K_ICM20948_REG_MAGNETO_Z_H

#define K_ICM20948_REG_MAGNETO_Z_H   0x41U

Magnetometer Z high byte register.

Definition at line 181 of file icm20948.h.

Enumeration Type Documentation

◆ ICM20948_RegBank_t

ICM20948 register bank selector.

Enumerator
K_ICM20948_REG_BANK_0 
K_ICM20948_REG_BANK_1 
K_ICM20948_REG_BANK_2 
K_ICM20948_REG_BANK_3 

Definition at line 189 of file icm20948.h.

◆ ICM20948_ClockSel_t

Clock source selection for PWR_MGMT_1.

Enumerator
K_ICM20948_CLK_INTERNAL_20MHZ 
K_ICM20948_CLK_AUTO 
K_ICM20948_CLK_STOP 

Definition at line 241 of file icm20948.h.

◆ ICM20948_GyroFsSel_t

Gyroscope full-scale range selection.

Enumerator
K_ICM20948_GYRO_FS_250DPS 
K_ICM20948_GYRO_FS_500DPS 
K_ICM20948_GYRO_FS_1000DPS 
K_ICM20948_GYRO_FS_2000DPS 

Definition at line 430 of file icm20948.h.

◆ ICM20948_AccelFsSel_t

Accelerometer full-scale range selection.

Enumerator
K_ICM20948_ACCEL_FS_2G 
K_ICM20948_ACCEL_FS_4G 
K_ICM20948_ACCEL_FS_8G 
K_ICM20948_ACCEL_FS_16G 

Definition at line 452 of file icm20948.h.

Function Documentation

◆ SPP_SERVICES_ICM20948_getProducerContract()

const SPP_SERVICE_ProducerContract_t * SPP_SERVICES_ICM20948_getProducerContract ( void )

Returns a pointer to the ICM20948 producer contract.

Returns
Pointer to the static producer contract.

Definition at line 106 of file icm20948.c.

References s_icm20948ProducerContract, and SPP_SERVICES_ICM20948_getProducerContract().

Referenced by SPP_SERVICES_ICM20948_getProducerContract().

Here is the call graph for this function:
Here is the caller graph for this function: