diff options
Diffstat (limited to 'driver/accelgyro_bmi_common.h')
-rw-r--r-- | driver/accelgyro_bmi_common.h | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/driver/accelgyro_bmi_common.h b/driver/accelgyro_bmi_common.h index 27e4978ab5..238bb20947 100644 --- a/driver/accelgyro_bmi_common.h +++ b/driver/accelgyro_bmi_common.h @@ -9,6 +9,7 @@ #include "accelgyro.h" #include "driver/accelgyro_bmi160.h" +#include "driver/accelgyro_bmi260.h" #include "mag_bmm150.h" /* @@ -115,39 +116,54 @@ struct bmi_drv_data_t { BMI_GET_DATA(_sensor)->orientation) #endif -#define BMI_ACC_DATA BMI160_ACC_X_L_G -#define BMI_GYR_DATA BMI160_GYR_X_L_G -#define BMI_AUX_DATA BMI160_MAG_X_L_G - -#define BMI_FIFO_CONFIG_0 BMI160_FIFO_CONFIG_0 -#define BMI_FIFO_CONFIG_1 BMI160_FIFO_CONFIG_1 -#define BMI_FIFO_SENSOR_EN(_sensor) BMI160_FIFO_SENSOR_EN(_sensor) - -#define BMI_TEMPERATURE_0 BMI160_TEMPERATURE_0 +#define BMI_ACC_DATA(v) (BMI160_ACC_X_L_G + \ + (v) * (BMI260_ACC_X_L_G - BMI160_ACC_X_L_G)) +#define BMI_GYR_DATA(v) (BMI160_GYR_X_L_G + \ + (v) * (BMI260_GYR_X_L_G - BMI160_GYR_X_L_G)) +#define BMI_AUX_DATA(v) (BMI160_MAG_X_L_G + \ + (v) * (BMI260_AUX_X_L_G - BMI160_MAG_X_L_G)) + +#define BMI_FIFO_CONFIG_0(v) (BMI160_FIFO_CONFIG_0 + \ + (v) * (BMI260_FIFO_CONFIG_0 - BMI160_FIFO_CONFIG_0)) +#define BMI_FIFO_CONFIG_1(v) (BMI160_FIFO_CONFIG_1 + \ + (v) * (BMI260_FIFO_CONFIG_1 - BMI160_FIFO_CONFIG_1)) +#define BMI_FIFO_SENSOR_EN(v, _sensor) (BMI160_FIFO_SENSOR_EN(_sensor) + \ + (v) * (BMI260_FIFO_SENSOR_EN(_sensor) - BMI160_FIFO_SENSOR_EN(_sensor))) + +#define BMI_TEMPERATURE_0(v) (BMI160_TEMPERATURE_0 + \ + (v) * (BMI260_TEMPERATURE_0 - BMI160_TEMPERATURE_0)) #define BMI_INVALID_TEMP 0x8000 -#define BMI_STATUS BMI160_STATUS +#define BMI_STATUS(v) (BMI160_STATUS + \ + (v) * (BMI260_STATUS - BMI160_STATUS)) #define BMI_DRDY_OFF(_sensor) (7 - (_sensor)) #define BMI_DRDY_MASK(_sensor) (1 << BMI160_DRDY_OFF(_sensor)) -#define BMI_OFFSET_ACC70 BMI160_OFFSET_ACC70 -#define BMI_OFFSET_GYR70 BMI160_OFFSET_GYR70 +#define BMI_OFFSET_ACC70(v) (BMI160_OFFSET_ACC70 + \ + (v) * (BMI260_OFFSET_ACC70 - BMI160_OFFSET_ACC70)) +#define BMI_OFFSET_GYR70(v) (BMI160_OFFSET_GYR70 + \ + (v) * (BMI260_OFFSET_GYR70 - BMI160_OFFSET_GYR70)) /* * There is some bits in this register that differ between BMI160 and BMI260 * Only use this macro for gyro offset 9:8 (BMI_OFFSET_EN_GYR98 5:0). */ -#define BMI_OFFSET_EN_GYR98 BMI160_OFFSET_EN_GYR98 +#define BMI_OFFSET_EN_GYR98(v) (BMI160_OFFSET_EN_GYR98 + \ + (v) * (BMI260_OFFSET_EN_GYR98 - BMI160_OFFSET_EN_GYR98)) #define BMI_OFFSET_GYR98_MASK (BIT(6) - 1) #define BMI_OFFSET_ACC_MULTI_MG (3900 * 1024) #define BMI_OFFSET_ACC_DIV_MG 1000000 #define BMI_OFFSET_GYRO_MULTI_MDS (61 * 1024) #define BMI_OFFSET_GYRO_DIV_MDS 1000 -#define BMI_FIFO_LENGTH_0 BMI160_FIFO_LENGTH_0 -#define BMI_FIFO_LENGTH_MASK BMI160_FIFO_LENGTH_MASK -#define BMI_FIFO_DATA BMI160_FIFO_DATA +#define BMI_FIFO_LENGTH_0(v) (BMI160_FIFO_LENGTH_0 + \ + (v) * (BMI260_FIFO_LENGTH_0 - BMI160_FIFO_LENGTH_0)) +#define BMI_FIFO_LENGTH_MASK(v) (BMI160_FIFO_LENGTH_MASK + \ + (v) * (BMI260_FIFO_LENGTH_MASK - BMI160_FIFO_LENGTH_MASK)) +#define BMI_FIFO_DATA(v) (BMI160_FIFO_DATA + \ + (v) * (BMI260_FIFO_DATA - BMI160_FIFO_DATA)) -#define BMI_CMD_REG BMI160_CMD_REG +#define BMI_CMD_REG(v) (BMI160_CMD_REG + \ + (v) * (BMI260_CMD_REG - BMI160_CMD_REG)) #define BMI_CMD_FIFO_FLUSH 0xb0 |