freematics-traccar-encrypted/esp32/libraries/FreematicsPlus/utility/ICM_20948_ENUMERATIONS.h

263 lines
6.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
This file contains a useful c translation of the datasheet register map values
*/
#ifndef _ICM_20948_ENUMERATIONS_H_
#define _ICM_20948_ENUMERATIONS_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
// // Generalized
// REG_BANK_SEL = 0x7F,
// // Gyroscope and Accelerometer
// // User Bank 0
// AGB0_REG_WHO_AM_I = 0x00,
// // Break
// AGB0_REG_USER_CTRL = 0x03,
// // Break
// AGB0_REG_LP_CONFIG = 0x05,
typedef enum{
ICM_20948_Sample_Mode_Continuous = 0x00,
ICM_20948_Sample_Mode_Cycled,
}ICM_20948_LP_CONFIG_CYCLE_e;
// AGB0_REG_PWR_MGMT_1,
typedef enum{
ICM_20948_Clock_Internal_20MHz = 0x00,
ICM_20948_Clock_Auto,
ICM_20948_Clock_TimingReset = 0x07
}ICM_20948_PWR_MGMT_1_CLKSEL_e;
// AGB0_REG_PWR_MGMT_2,
// // Break
// AGB0_REG_INT_PIN_CONFIG = 0x0F,
// AGB0_REG_INT_ENABLE,
// AGB0_REG_INT_ENABLE_1,
// AGB0_REG_INT_ENABLE_2,
// AGB0_REG_INT_ENABLE_3,
// // Break
// AGB0_REG_I2C_MST_STATUS = 0x17,
// // Break
// AGB0_REG_INT_STATUS = 0x19,
// AGB0_REG_INT_STATUS_1,
// AGB0_REG_INT_STATUS_2,
// AGB0_REG_INT_STATUS_3,
// // Break
// AGB0_REG_DELAY_TIMEH = 0x28,
// AGB0_REG_DELAY_TIMEL,
// // Break
// AGB0_REG_ACCEL_XOUT_H = 0x2D,
// AGB0_REG_ACCEL_XOUT_L,
// AGB0_REG_ACCEL_YOUT_H,
// AGB0_REG_ACCEL_YOUT_L,
// AGB0_REG_ACCEL_ZOUT_H,
// AGB0_REG_ACCEL_ZOUT_L,
// AGB0_REG_GYRO_XOUT_H,
// AGB0_REG_GYRO_XOUT_L,
// AGB0_REG_GYRO_YOUT_H,
// AGB0_REG_GYRO_YOUT_L,
// AGB0_REG_GYRO_ZOUT_H,
// AGB0_REG_GYRO_ZOUT_L,
// AGB0_REG_TEMP_OUT_H,
// AGB0_REG_TEMP_OUT_L,
// AGB0_REG_EXT_SLV_SENS_DATA_00,
// AGB0_REG_EXT_SLV_SENS_DATA_01,
// AGB0_REG_EXT_SLV_SENS_DATA_02,
// AGB0_REG_EXT_SLV_SENS_DATA_03,
// AGB0_REG_EXT_SLV_SENS_DATA_04,
// AGB0_REG_EXT_SLV_SENS_DATA_05,
// AGB0_REG_EXT_SLV_SENS_DATA_06,
// AGB0_REG_EXT_SLV_SENS_DATA_07,
// AGB0_REG_EXT_SLV_SENS_DATA_08,
// AGB0_REG_EXT_SLV_SENS_DATA_09,
// AGB0_REG_EXT_SLV_SENS_DATA_10,
// AGB0_REG_EXT_SLV_SENS_DATA_11,
// AGB0_REG_EXT_SLV_SENS_DATA_12,
// AGB0_REG_EXT_SLV_SENS_DATA_13,
// AGB0_REG_EXT_SLV_SENS_DATA_14,
// AGB0_REG_EXT_SLV_SENS_DATA_15,
// AGB0_REG_EXT_SLV_SENS_DATA_16,
// AGB0_REG_EXT_SLV_SENS_DATA_17,
// AGB0_REG_EXT_SLV_SENS_DATA_18,
// AGB0_REG_EXT_SLV_SENS_DATA_19,
// AGB0_REG_EXT_SLV_SENS_DATA_20,
// AGB0_REG_EXT_SLV_SENS_DATA_21,
// AGB0_REG_EXT_SLV_SENS_DATA_22,
// AGB0_REG_EXT_SLV_SENS_DATA_23,
// // Break
// AGB0_REG_FIFO_EN_1 = 0x66,
// AGB0_REG_FIFO_EN_2,
// AGB0_REG_FIFO_MODE,
// // Break
// AGB0_REG_FIFO_COUNT_H = 0x70,
// AGB0_REG_FIFO_COUNT_L,
// AGB0_REG_FIFO_R_W,
// // Break
// AGB0_REG_DATA_RDY_STATUS = 0x74,
// // Break
// AGB0_REG_FIFO_CFG = 0x76,
// // Break
// AGB0_REG_MEM_START_ADDR = 0x7C, // Hmm, Invensense thought they were sneaky not listing these locations on the datasheet...
// AGB0_REG_MEM_R_W = 0x7D, // These three locations seem to be able to access some memory within the device
// AGB0_REG_MEM_BANK_SEL = 0x7E, // And that location is also where the DMP image gets loaded
// AGB0_REG_REG_BANK_SEL = 0x7F,
// // Bank 1
// AGB1_REG_SELF_TEST_X_GYRO = 0x02,
// AGB1_REG_SELF_TEST_Y_GYRO,
// AGB1_REG_SELF_TEST_Z_GYRO,
// // Break
// AGB1_REG_SELF_TEST_X_ACCEL = 0x0E,
// AGB1_REG_SELF_TEST_Y_ACCEL,
// AGB1_REG_SELF_TEST_Z_ACCEL,
// // Break
// AGB1_REG_XA_OFFS_H = 0x14,
// AGB1_REG_XA_OFFS_L,
// // Break
// AGB1_REG_YA_OFFS_H = 0x17,
// AGB1_REG_YA_OFFS_L,
// // Break
// AGB1_REG_ZA_OFFS_H = 0x1A,
// AGB1_REG_ZA_OFFS_L,
// // Break
// AGB1_REG_TIMEBASE_CORRECTION_PLL = 0x28,
// // Break
// AGB1_REG_REG_BANK_SEL = 0x7F,
// // Bank 2
// AGB2_REG_GYRO_SMPLRT_DIV = 0x00,
/*
Gyro sample rate divider. Divides the internal sample rate to generate the sample
rate that controls sensor data output rate, FIFO sample rate, and DMP sequence rate.
NOTE: This register is only effective when FCHOICE = 1b1 (FCHOICE_B register bit is 1b0), and
(0 < DLPF_CFG < 7).
ODR is computed as follows:
1.1 kHz/(1+GYRO_SMPLRT_DIV[7:0])
*/
// AGB2_REG_GYRO_CONFIG_1,
typedef enum{ // Full scale range options in degrees per second
dps250 = 0x00,
dps500,
dps1000,
dps2000,
}ICM_20948_GYRO_CONFIG_1_FS_SEL_e;
typedef enum{ // Format is dAbwB_nXbwZ - A is integer part of 3db BW, B is fraction. X is integer part of nyquist bandwidth, Y is fraction
gyr_d196bw6_n229bw8 = 0x00,
gyr_d151bw8_n187bw6,
gyr_d119bw5_n154bw3,
gyr_d51bw2_n73bw3,
gyr_d23bw9_n35bw9,
gyr_d11bw6_n17bw8,
gyr_d5bw7_n8bw9,
gyr_d361bw4_n376bw5,
}ICM_20948_GYRO_CONFIG_1_DLPCFG_e;
// AGB2_REG_GYRO_CONFIG_2,
// AGB2_REG_XG_OFFS_USRH,
// AGB2_REG_XG_OFFS_USRL,
// AGB2_REG_YG_OFFS_USRH,
// AGB2_REG_YG_OFFS_USRL,
// AGB2_REG_ZG_OFFS_USRH,
// AGB2_REG_ZG_OFFS_USRL,
// AGB2_REG_ODR_ALIGN_EN,
// // Break
// AGB2_REG_ACCEL_SMPLRT_DIV_1 = 0x10,
// AGB2_REG_ACCEL_SMPLRT_DIV_2,
// AGB2_REG_ACCEL_INTEL_CTRL,
// AGB2_REG_ACCEL_WOM_THR,
// AGB2_REG_ACCEL_CONFIG,
typedef enum{
gpm2 = 0x00,
gpm4,
gpm8,
gpm16,
}ICM_20948_ACCEL_CONFIG_FS_SEL_e;
typedef enum{ // Format is dAbwB_nXbwZ - A is integer part of 3db BW, B is fraction. X is integer part of nyquist bandwidth, Y is fraction
acc_d246bw_n265bw = 0x00,
acc_d246bw_n265bw_1,
acc_d111bw4_n136bw,
acc_d50bw4_n68bw8,
acc_d23bw9_n34bw4,
acc_d11bw5_n17bw,
acc_d5bw7_n8bw3,
acc_d473bw_n499bw,
}ICM_20948_ACCEL_CONFIG_DLPCFG_e;
// AGB2_REG_ACCEL_CONFIG_2,
// // Break
// AGB2_REG_FSYNC_CONFIG = 0x52,
// AGB2_REG_TEMP_CONFIG,
// AGB2_REG_MOD_CTRL_USR,
// // Break
// AGB2_REG_REG_BANK_SEL = 0x7F,
// // Bank 3
// AGB3_REG_I2C_MST_ODR_CONFIG = 0x00,
// AGB3_REG_I2C_MST_CTRL,
// AGB3_REG_I2C_MST_DELAY_CTRL,
// AGB3_REG_I2C_SLV0_ADDR,
// AGB3_REG_I2C_SLV0_REG,
// AGB3_REG_I2C_SLV0_CTRL,
// AGB3_REG_I2C_SLV0_DO,
// AGB3_REG_I2C_SLV1_ADDR,
// AGB3_REG_I2C_SLV1_REG,
// AGB3_REG_I2C_SLV1_CTRL,
// AGB3_REG_I2C_SLV1_DO,
// AGB3_REG_I2C_SLV2_ADDR,
// AGB3_REG_I2C_SLV2_REG,
// AGB3_REG_I2C_SLV2_CTRL,
// AGB3_REG_I2C_SLV2_DO,
// AGB3_REG_I2C_SLV3_ADDR,
// AGB3_REG_I2C_SLV3_REG,
// AGB3_REG_I2C_SLV3_CTRL,
// AGB3_REG_I2C_SLV3_DO,
// AGB3_REG_I2C_SLV4_ADDR,
// AGB3_REG_I2C_SLV4_REG,
// AGB3_REG_I2C_SLV4_CTRL,
// AGB3_REG_I2C_SLV4_DO,
// AGB3_REG_I2C_SLV4_DI,
// // Break
// AGB3_REG_REG_BANK_SEL = 0x7F,
// // Magnetometer
// M_REG_WIA2 = 0x01,
// // Break
// M_REG_ST1 = 0x10,
// M_REG_HXL,
// M_REG_HXH,
// M_REG_HYL,
// M_REG_HYH,
// M_REG_HZL,
// M_REG_HZH,
// M_REG_ST2,
// // Break
// M_REG_CNTL2 = 0x31,
// M_REG_CNTL3,
// M_REG_TS1,
// M_REG_TS2,
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _ICM_20948_ENUMERATIONS_H_ */