#ifndef__BSP_ICM42688_H__#define__BSP_ICM42688_H__#include<stdint.h>#defineICM_USE_HARD_SPI//#define ICM_USE_HARD_I2C/* ICM42688 registers
https://store.invensense.com/datasheets/invensense/DS-ICM-42688v1-2.pdf
*/// Bank 0#defineICM42688_DEVICE_CONFIG0x11#defineICM42688_DRIVE_CONFIG0x13#defineICM42688_INT_CONFIG0x14#defineICM42688_FIFO_CONFIG0x16#defineICM42688_TEMP_DATA10x1D#defineICM42688_TEMP_DATA00x1E#defineICM42688_ACCEL_DATA_X10x1F#defineICM42688_ACCEL_DATA_X00x20#defineICM42688_ACCEL_DATA_Y10x21#defineICM42688_ACCEL_DATA_Y00x22#defineICM42688_ACCEL_DATA_Z10x23#defineICM42688_ACCEL_DATA_Z00x24#defineICM42688_GYRO_DATA_X10x25#defineICM42688_GYRO_DATA_X00x26#defineICM42688_GYRO_DATA_Y10x27#defineICM42688_GYRO_DATA_Y00x28#defineICM42688_GYRO_DATA_Z10x29#defineICM42688_GYRO_DATA_Z00x2A#defineICM42688_TMST_FSYNCH0x2B#defineICM42688_TMST_FSYNCL0x2C#defineICM42688_INT_STATUS0x2D#defineICM42688_FIFO_COUNTH0x2E#defineICM42688_FIFO_COUNTL0x2F#defineICM42688_FIFO_DATA0x30#defineICM42688_APEX_DATA00x31#defineICM42688_APEX_DATA10x32#defineICM42688_APEX_DATA20x33#defineICM42688_APEX_DATA30x34#defineICM42688_APEX_DATA40x35#defineICM42688_APEX_DATA50x36#defineICM42688_INT_STATUS20x37#defineICM42688_INT_STATUS30x38#defineICM42688_SIGNAL_PATH_RESET0x4B#defineICM42688_INTF_CONFIG00x4C#defineICM42688_INTF_CONFIG10x4D#defineICM42688_PWR_MGMT00x4E#defineICM42688_GYRO_CONFIG00x4F#defineICM42688_ACCEL_CONFIG00x50#defineICM42688_GYRO_CONFIG10x51#defineICM42688_GYRO_ACCEL_CONFIG00x52#defineICM42688_ACCEL_CONFIG10x53#defineICM42688_TMST_CONFIG0x54#defineICM42688_APEX_CONFIG00x56#defineICM42688_SMD_CONFIG0x57#defineICM42688_FIFO_CONFIG10x5F#defineICM42688_FIFO_CONFIG20x60#defineICM42688_FIFO_CONFIG30x61#defineICM42688_FSYNC_CONFIG0x62#defineICM42688_INT_CONFIG00x63#defineICM42688_INT_CONFIG10x64#defineICM42688_INT_SOURCE00x65#defineICM42688_INT_SOURCE10x66#defineICM42688_INT_SOURCE30x68#defineICM42688_INT_SOURCE40x69#defineICM42688_FIFO_LOST_PKT00x6C#defineICM42688_FIFO_LOST_PKT10x6D#defineICM42688_SELF_TEST_CONFIG0x70#defineICM42688_WHO_AM_I0x75#defineICM42688_REG_BANK_SEL0x76// Bank 1#defineICM42688_SENSOR_CONFIG00x03#defineICM42688_GYRO_CONFIG_STATIC20x0B#defineICM42688_GYRO_CONFIG_STATIC30x0C#defineICM42688_GYRO_CONFIG_STATIC40x0D#defineICM42688_GYRO_CONFIG_STATIC50x0E#defineICM42688_GYRO_CONFIG_STATIC60x0F#defineICM42688_GYRO_CONFIG_STATIC70x10#defineICM42688_GYRO_CONFIG_STATIC80x11#defineICM42688_GYRO_CONFIG_STATIC90x12#defineICM42688_GYRO_CONFIG_STATIC100x13#defineICM42688_XG_ST_DATA0x5F#defineICM42688_YG_ST_DATA0x60#defineICM42688_ZG_ST_DATA0x61#defineICM42688_TMSTVAL00x62#defineICM42688_TMSTVAL10x63#defineICM42688_TMSTVAL20x64#defineICM42688_INTF_CONFIG40x7A#defineICM42688_INTF_CONFIG50x7B#defineICM42688_INTF_CONFIG60x7C// Bank 2#defineICM42688_ACCEL_CONFIG_STATIC20x03#defineICM42688_ACCEL_CONFIG_STATIC30x04#defineICM42688_ACCEL_CONFIG_STATIC40x05#defineICM42688_XA_ST_DATA0x3B#defineICM42688_YA_ST_DATA0x3C#defineICM42688_ZA_ST_DATA0x3D// Bank 4#defineICM42688_GYRO_ON_OFF_CONFIG0x0E#defineICM42688_APEX_CONFIG10x40#defineICM42688_APEX_CONFIG20x41#defineICM42688_APEX_CONFIG30x42#defineICM42688_APEX_CONFIG40x43#defineICM42688_APEX_CONFIG50x44#defineICM42688_APEX_CONFIG60x45#defineICM42688_APEX_CONFIG70x46#defineICM42688_APEX_CONFIG80x47#defineICM42688_APEX_CONFIG90x48#defineICM42688_ACCEL_WOM_X_THR0x4A#defineICM42688_ACCEL_WOM_Y_THR0x4B#defineICM42688_ACCEL_WOM_Z_THR0x4C#defineICM42688_INT_SOURCE60x4D#defineICM42688_INT_SOURCE70x4E#defineICM42688_INT_SOURCE80x4F#defineICM42688_INT_SOURCE90x50#defineICM42688_INT_SOURCE100x51#defineICM42688_OFFSET_USER00x77#defineICM42688_OFFSET_USER10x78#defineICM42688_OFFSET_USER20x79#defineICM42688_OFFSET_USER30x7A#defineICM42688_OFFSET_USER40x7B#defineICM42688_OFFSET_USER50x7C#defineICM42688_OFFSET_USER60x7D#defineICM42688_OFFSET_USER70x7E#defineICM42688_OFFSET_USER80x7F#defineICM42688_ADDRESS0x69// Address of ICM42688 accel/gyro when ADO = HIGH#defineAFS_2G0x03#defineAFS_4G0x02#defineAFS_8G0x01#defineAFS_16G0x00// default#defineGFS_2000DPS0x00// default#defineGFS_1000DPS0x01#defineGFS_500DPS0x02#defineGFS_250DPS0x03#defineGFS_125DPS0x04#defineGFS_62_5DPS0x05#defineGFS_31_25DPS0x06#defineGFS_15_125DPS0x07#defineAODR_8000Hz0x03#defineAODR_4000Hz0x04#defineAODR_2000Hz0x05#defineAODR_1000Hz0x06// default#defineAODR_200Hz0x07#defineAODR_100Hz0x08#defineAODR_50Hz0x09#defineAODR_25Hz0x0A#defineAODR_12_5Hz0x0B#defineAODR_6_25Hz0x0C#defineAODR_3_125Hz0x0D#defineAODR_1_5625Hz0x0E#defineAODR_500Hz0x0F#defineGODR_8000Hz0x03#defineGODR_4000Hz0x04#defineGODR_2000Hz0x05#defineGODR_1000Hz0x06// default#defineGODR_200Hz0x07#defineGODR_100Hz0x08#defineGODR_50Hz0x09#defineGODR_25Hz0x0A#defineGODR_12_5Hz0x0B#defineGODR_500Hz0x0F#defineICM42688_ID0x47typedefstruct{int16_t x;/**< Raw int16_t value from the x axis */int16_t y;/**< Raw int16_t value from the y axis */int16_t z;/**< Raw int16_t value from the z axis */}icm42688RawData_t;//--------------------------------------------------------//int8_tbsp_Icm42688Init(void);int8_tbsp_IcmGetTemperature(int16_t* pTemp);int8_tbsp_IcmGetAccelerometer(icm42688RawData_t*accData);int8_tbsp_IcmGetGyroscope(icm42688RawData_t*GyroData);int8_tbsp_IcmGetRawData(icm42688RawData_t*accData,icm42688RawData_t*GyroData);#endif