26 #define BNO055_DEFAULT_I2C_BUS 0    27 #define BNO055_DEFAULT_ADDR    0x28    30 #define BNO055_CHIPID          0xa0    33 #define BNO055_CALIBRATION_DATA_SIZE (22)    54         BNO055_REG_PAGE_ID                      = 0x07,
    57         BNO055_REG_CHIP_ID                      = 0x00,
    58         BNO055_REG_ACC_ID                       = 0x01, 
    59         BNO055_REG_MAG_ID                       = 0x02, 
    60         BNO055_REG_GYR_ID                       = 0x03, 
    61         BNO055_REG_SW_REV_ID_LSB                = 0x04,
    62         BNO055_REG_SW_REV_ID_MSB                = 0x05,
    63         BNO055_REG_BL_REV_ID                    = 0x06, 
    65         BNO055_REG_ACC_DATA_X_LSB               = 0x08,
    66         BNO055_REG_ACC_DATA_X_MSB               = 0x09,
    67         BNO055_REG_ACC_DATA_Y_LSB               = 0x0a,
    68         BNO055_REG_ACC_DATA_Y_MSB               = 0x0b,
    69         BNO055_REG_ACC_DATA_Z_LSB               = 0x0c,
    70         BNO055_REG_ACC_DATA_Z_MSB               = 0x0d,
    72         BNO055_REG_MAG_DATA_X_LSB               = 0x0e,
    73         BNO055_REG_MAG_DATA_X_MSB               = 0x0f,
    74         BNO055_REG_MAG_DATA_Y_LSB               = 0x10,
    75         BNO055_REG_MAG_DATA_Y_MSB               = 0x11,
    76         BNO055_REG_MAG_DATA_Z_LSB               = 0x12,
    77         BNO055_REG_MAG_DATA_Z_MSB               = 0x13,
    79         BNO055_REG_GYR_DATA_X_LSB               = 0x14,
    80         BNO055_REG_GYR_DATA_X_MSB               = 0x15,
    81         BNO055_REG_GYR_DATA_Y_LSB               = 0x16,
    82         BNO055_REG_GYR_DATA_Y_MSB               = 0x17,
    83         BNO055_REG_GYR_DATA_Z_LSB               = 0x18,
    84         BNO055_REG_GYR_DATA_Z_MSB               = 0x19,
    87         BNO055_REG_EUL_HEADING_LSB              = 0x1a,
    88         BNO055_REG_EUL_HEADING_MSB              = 0x1b,
    89         BNO055_REG_EUL_ROLL_LSB                 = 0x1c,
    90         BNO055_REG_EUL_ROLL_MSB                 = 0x1d,
    91         BNO055_REG_EUL_PITCH_LSB                = 0x1e,
    92         BNO055_REG_EUL_PITCH_MSB                = 0x1f,
    95         BNO055_REG_QUA_DATA_W_LSB               = 0x20,
    96         BNO055_REG_QUA_DATA_W_MSB               = 0x21,
    97         BNO055_REG_QUA_DATA_X_LSB               = 0x22,
    98         BNO055_REG_QUA_DATA_X_MSB               = 0x23,
    99         BNO055_REG_QUA_DATA_Y_LSB               = 0x24,
   100         BNO055_REG_QUA_DATA_Y_MSB               = 0x25,
   101         BNO055_REG_QUA_DATA_Z_LSB               = 0x26,
   102         BNO055_REG_QUA_DATA_Z_MSB               = 0x27,
   105         BNO055_REG_LIA_DATA_X_LSB               = 0x28,
   106         BNO055_REG_LIA_DATA_X_MSB               = 0x29,
   107         BNO055_REG_LIA_DATA_Y_LSB               = 0x2a,
   108         BNO055_REG_LIA_DATA_Y_MSB               = 0x2b,
   109         BNO055_REG_LIA_DATA_Z_LSB               = 0x2c,
   110         BNO055_REG_LIA_DATA_Z_MSB               = 0x2d,
   113         BNO055_REG_GRV_DATA_X_LSB               = 0x2e,
   114         BNO055_REG_GRV_DATA_X_MSB               = 0x2f,
   115         BNO055_REG_GRV_DATA_Y_LSB               = 0x30,
   116         BNO055_REG_GRV_DATA_Y_MSB               = 0x31,
   117         BNO055_REG_GRV_DATA_Z_LSB               = 0x32,
   118         BNO055_REG_GRV_DATA_Z_MSB               = 0x33,
   120         BNO055_REG_TEMPERATURE                  = 0x34,
   122         BNO055_REG_CALIB_STAT                   = 0x35, 
   123         BNO055_REG_ST_RESULT                    = 0x36, 
   125         BNO055_REG_INT_STA                      = 0x37, 
   127         BNO055_REG_SYS_CLK_STATUS               = 0x38,
   129         BNO055_REG_SYS_STATUS                   = 0x39,
   130         BNO055_REG_SYS_ERROR                    = 0x3a,
   132         BNO055_REG_UNIT_SEL                     = 0x3b,
   136         BNO055_REG_OPER_MODE                    = 0x3d, 
   137         BNO055_REG_POWER_MODE                   = 0x3e,
   139         BNO055_REG_SYS_TRIGGER                  = 0x3f,
   140         BNO055_REG_TEMP_SOURCE                  = 0x40, 
   142         BNO055_REG_AXIS_MAP_CONFIG              = 0x41,
   143         BNO055_REG_AXIS_MAP_SIGN                = 0x42,
   148         BNO055_REG_ACC_OFFSET_X_LSB             = 0x55,
   149         BNO055_REG_ACC_OFFSET_X_MSB             = 0x56,
   150         BNO055_REG_ACC_OFFSET_Y_LSB             = 0x57,
   151         BNO055_REG_ACC_OFFSET_Y_MSB             = 0x58,
   152         BNO055_REG_ACC_OFFSET_Z_LSB             = 0x59,
   153         BNO055_REG_ACC_OFFSET_Z_MSB             = 0x5a,
   155         BNO055_REG_MAG_OFFSET_X_LSB             = 0x5b,
   156         BNO055_REG_MAG_OFFSET_X_MSB             = 0x5c,
   157         BNO055_REG_MAG_OFFSET_Y_LSB             = 0x5d,
   158         BNO055_REG_MAG_OFFSET_Y_MSB             = 0x5e,
   159         BNO055_REG_MAG_OFFSET_Z_LSB             = 0x5f,
   160         BNO055_REG_MAG_OFFSET_Z_MSB             = 0x60,
   162         BNO055_REG_GYR_OFFSET_X_LSB             = 0x61,
   163         BNO055_REG_GYR_OFFSET_X_MSB             = 0x62,
   164         BNO055_REG_GYR_OFFSET_Y_LSB             = 0x63,
   165         BNO055_REG_GYR_OFFSET_Y_MSB             = 0x64,
   166         BNO055_REG_GYR_OFFSET_Z_LSB             = 0x65,
   167         BNO055_REG_GYR_OFFSET_Z_MSB             = 0x66,
   169         BNO055_REG_ACC_RADIUS_LSB               = 0x67,
   170         BNO055_REG_ACC_RADIUS_MSB               = 0x68,
   172         BNO055_REG_MAG_RADIUS_LSB               = 0x69,
   173         BNO055_REG_MAG_RADIUS_MSB               = 0x6a,
   183         BNO055_REG_ACC_CONFIG                   = 0x08,
   184         BNO055_REG_MAG_CONFIG                   = 0x09,
   185         BNO055_REG_GYR_CONFIG0                  = 0x0a,
   186         BNO055_REG_GYR_CONFIG1                  = 0x0b,
   187         BNO055_REG_ACC_SLEEP_CONFIG             = 0x0c,
   188         BNO055_REG_GYR_SLEEP_CONFIG             = 0x0d,
   191         BNO055_REG_INT_MSK                      = 0x0f,
   192         BNO055_REG_INT_EN                       = 0x10,
   194         BNO055_REG_ACC_AM_THRES                 = 0x11,
   195         BNO055_REG_ACC_INT_SETTINGS             = 0x12,
   196         BNO055_REG_ACC_HG_DURATION              = 0x13,
   197         BNO055_REG_ACC_HG_THRES                 = 0x14,
   198         BNO055_REG_ACC_NM_THRES                 = 0x15,
   199         BNO055_REG_ACC_NM_SET                   = 0x16,
   201         BNO055_REG_GYR_INT_SETTING              = 0x17,
   202         BNO055_REG_GYR_HR_X_SET                 = 0x18,
   203         BNO055_REG_GYR_DUR_X                    = 0x19,
   204         BNO055_REG_GYR_HR_Y_SET                 = 0x1a,
   205         BNO055_REG_GYR_DUR_Y                    = 0x1b,
   206         BNO055_REG_GYR_HR_Z_SET                 = 0x1c,
   207         BNO055_REG_GYR_DUR_Z                    = 0x1d,
   208         BNO055_REG_GYR_AM_THRES                 = 0x1e,
   209         BNO055_REG_GYR_AM_SET                   = 0x1f,
   214         BNO055_REG_BNO_UNIQUE_ID                = 0x50
   225         BNO055_CALIB_STAT_MAG0                  = 0x01,
   226         BNO055_CALIB_STAT_MAG1                  = 0x02,
   227         _BNO055_CALIB_STAT_MAG_MASK             = 3,
   228         _BNO055_CALIB_STAT_MAG_SHIFT            = 0,
   230         BNO055_CALIB_STAT_ACC0                  = 0x04,
   231         BNO055_CALIB_STAT_ACC1                  = 0x08,
   232         _BNO055_CALIB_STAT_ACC_MASK             = 3,
   233         _BNO055_CALIB_STAT_ACC_SHIFT            = 2,
   235         BNO055_CALIB_STAT_GYR0                  = 0x10,
   236         BNO055_CALIB_STAT_GYR1                  = 0x20,
   237         _BNO055_CALIB_STAT_GYR_MASK             = 3,
   238         _BNO055_CALIB_STAT_GYR_SHIFT            = 4,
   240         BNO055_CALIB_STAT_SYS0                  = 0x40,
   241         BNO055_CALIB_STAT_SYS1                  = 0x80,
   242         _BNO055_CALIB_STAT_SYS_MASK             = 3,
   243         _BNO055_CALIB_STAT_SYS_SHIFT            = 6
   244     } BNO055_CALIB_STAT_BITS_T;
   250         BNO055_ST_RESULT_ACC                    = 0x01,
   251         BNO055_ST_RESULT_MAG                    = 0x02,
   252         BNO055_ST_RESULT_GYR                    = 0x04,
   253         BNO055_ST_RESULT_MCU                    = 0x08
   255     } BNO055_ST_RESULT_BITS_T;
   262         BNO055_INT_STA_GYRO_AM                  = 0x04, 
   263         BNO055_INT_STA_GYR_HIGH_RATE            = 0x08,
   265         BNO055_INT_STA_ACC_HIGH_G               = 0x20,
   266         BNO055_INT_STA_ACC_AM                   = 0x40, 
   267         BNO055_INT_STA_ACC_NM                   = 0x80  
   268     } BNO055_INT_STA_BITS_T;
   274         BNO055_SYS_CLK_STATUS_ST_MAIN_CLK       = 0x01
   276     } BNO055_SYS_CLK_STATUS_BITS_T;
   282         BNO055_SYS_STATUS_IDLE                   = 0,
   283         BNO055_SYS_STATUS_SYS_ERR                = 1,
   284         BNO055_SYS_STATUS_INIT_PERIPHERALS       = 2,
   285         BNO055_SYS_STATUS_SYSTEM_INIT            = 3,
   286         BNO055_SYS_STATUS_EXECUTING_SELFTEST     = 4,
   287         BNO055_SYS_STATUS_FUSION_RUNNING         = 5,
   288         BNO055_SYS_STATUS_NO_FUSION_RUNNING      = 6
   289     } BNO055_SYS_STATUS_T;
   295         BNO055_SYS_ERR_NOERROR                   = 0,
   296         BNO055_SYS_ERR_PERIPH_INIT_ERROR         = 1,
   297         BNO055_SYS_ERR_SYS_INIT_ERROR            = 2,
   298         BNO055_SYS_ERR_SELFTEST_FAIL_ERROR       = 3,
   299         BNO055_SYS_ERR_REG_VAL_OUTOFRANGE_ERROR  = 4,
   300         BNO055_SYS_ERR_REG_ADDR_OUTOFRANGE_ERROR = 5,
   301         BNO055_SYS_ERR_REG_WRITE_ERROR           = 6,
   302         BNO055_SYS_ERR_LP_MODE_NOT_AVAIL_ERROR   = 7,
   303         BNO055_SYS_ERR_ACC_PWR_MODE_NOT_AVAIL_ERROR = 8,
   304         BNO055_SYS_ERR_FUSION_CONFIG_ERROR       = 9,
   305         BNO055_SYS_ERR_SENSOR_CONFIG_ERROR       = 10
   313         BNO055_UNIT_SEL_ACC_UNIT                = 0x01, 
   314         BNO055_UNIT_SEL_GYR_UNIT                = 0x02, 
   315         BNO055_UNIT_SEL_EUL_UNIT                = 0x04, 
   317         BNO055_UNIT_SEL_TEMP_UNIT               = 0x10, 
   319         BNO055_UNIT_SEL_ORI_ANDROID_WINDOWS     = 0x80  
   322     } BNO055_UNIT_SEL_BITS_T;
   328         BNO055_OPR_MODE_OPERATION_MODE0         = 0x01,
   329         BNO055_OPR_MODE_OPERATION_MODE1         = 0x02,
   330         BNO055_OPR_MODE_OPERATION_MODE2         = 0x04,
   331         BNO055_OPR_MODE_OPERATION_MODE3         = 0x08,
   332         _BNO055_OPR_MODE_OPERATION_MODE_MASK    = 15,
   333         _BNO055_OPR_MODE_OPERATION_MODE_SHIFT   = 0
   335     } BNO055_OPR_MODE_BITS_T;
   341         BNO055_OPERATION_MODE_CONFIGMODE        = 0,
   342         BNO055_OPERATION_MODE_ACCONLY           = 1,
   343         BNO055_OPERATION_MODE_MAGONLY           = 2,
   344         BNO055_OPERATION_MODE_GYROONLY          = 3,
   345         BNO055_OPERATION_MODE_ACCMAG            = 4,
   346         BNO055_OPERATION_MODE_ACCGYRO           = 5,
   347         BNO055_OPERATION_MODE_MAGGYRO           = 6,
   348         BNO055_OPERATION_MODE_AMG               = 7,
   350         BNO055_OPERATION_MODE_IMU               = 8,
   351         BNO055_OPERATION_MODE_COMPASS           = 9,
   352         BNO055_OPERATION_MODE_M4G               = 10,
   353         BNO055_OPERATION_MODE_NDOF_FMC_OFF      = 11,
   354         BNO055_OPERATION_MODE_NDOF              = 12
   355     } BNO055_OPERATION_MODES_T;
   361         BNO055_PWR_MODE_POWER_MODE0             = 0x01,
   362         BNO055_PWR_MODE_POWER_MODE1             = 0x02,
   363         _BNO055_PWR_MODE_POWER_MODE_MASK        = 3,
   364         _BNO055_PWR_MODE_POWER_MODE_SHIFT       = 0
   366     } BNO055_PWR_MODE_BITS_T;
   372         BNO055_POWER_MODE_NORMAL                = 0,
   373         BNO055_POWER_MODE_LOW                   = 1,
   374         BNO055_POWER_MODE_SUSPEND               = 2
   381         BNO055_SYS_TRIGGER_SELF_TEST            = 0x01,
   383         BNO055_SYS_TRIGGER_RST_SYS              = 0x20,
   384         BNO055_SYS_TRIGGER_RST_INT              = 0x40,
   385         BNO055_SYS_TRIGGER_CLK_SEL              = 0x80
   386     } BNO055_SYS_TRIGGER_BITS_T;
   392         BNO055_TEMP_SOURCE_TEMP_SOURCE0         = 0x01,
   393         BNO055_TEMP_SOURCE_TEMP_SOURCE1         = 0x02,
   394         _BNO055_TEMP_SOURCE_TEMP_SOURCE_MASK    = 3,
   395         _BNO055_TEMP_SOURCE_TEMP_SOURCE_SHIFT   = 0
   397     } BNO055_TEMP_SOURCE_BITS_T;
   403         BNO055_TEMP_SOURCE_ACC                  = 0,
   404         BNO055_TEMP_SOURCE_GYR                  = 1
   405     } BNO055_TEMP_SOURCES_T;
   411         BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL0  = 0x01,
   412         BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL1  = 0x02,
   413         _BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL_MASK = 3,
   414         _BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL_SHIFT = 0,
   416         BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL0  = 0x04,
   417         BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL1  = 0x08,
   418         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL_MASK = 3,
   419         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL_SHIFT = 2,
   421         BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL0  = 0x10,
   422         BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL1  = 0x20,
   423         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL_MASK = 3,
   424         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL_SHIFT = 4
   426     } BNO055_AXIS_MAP_CONFIG_BITS_T;
   433         BNO055_REMAPPED_AXIS_X                  = 0,
   434         BNO055_REMAPPED_AXIS_Y                  = 1,
   435         BNO055_REMAPPED_AXIS_Z                  = 2
   436     } BNO055_REMAPPED_AXIS_T;
   442         BNO055_AXIS_MAP_SIGN_REMAPPED_Z_SIGN    = 0x01,
   443         BNO055_AXIS_MAP_SIGN_REMAPPED_Y_SIGN    = 0x02,
   444         BNO055_AXIS_MAP_SIGN_REMAPPED_X_SIGN    = 0x04
   446     } BNO055_AXIS_MAP_SIGN_BITS_T;
   454         BNO055_ACC_CONFIG_ACC_RANGE0            = 0x01,
   455         BNO055_ACC_CONFIG_ACC_RANGE1            = 0x02,
   456         _BNO055_ACC_CONFIG_ACC_RANGE_MASK       = 3,
   457         _BNO055_ACC_CONFIG_ACC_RANGE_SHIFT      = 0,
   459         BNO055_ACC_CONFIG_ACC_BW0               = 0x04,
   460         BNO055_ACC_CONFIG_ACC_BW1               = 0x08,
   461         BNO055_ACC_CONFIG_ACC_BW2               = 0x10,
   462         _BNO055_ACC_CONFIG_ACC_BW_MASK          = 7,
   463         _BNO055_ACC_CONFIG_ACC_BW_SHIFT         = 2,
   465         BNO055_ACC_CONFIG_ACC_PWR_MODE0         = 0x20,
   466         BNO055_ACC_CONFIG_ACC_PWR_MODE1         = 0x40,
   467         BNO055_ACC_CONFIG_ACC_PWR_MODE2         = 0x80,
   468         _BNO055_ACC_CONFIG_ACC_PWR_MODE_MASK    = 7,
   469         _BNO055_ACC_CONFIG_ACC_PWR_MODE_SHIFT   = 5
   470     } BNO055_ACC_CONFIG_BITS_T;
   476         BNO055_ACC_RANGE_2G                     = 0,
   477         BNO055_ACC_RANGE_4G                     = 1,
   478         BNO055_ACC_RANGE_8G                     = 2,
   479         BNO055_ACC_RANGE_16G                    = 3
   480     } BNO055_ACC_RANGE_T;
   486         BNO055_ACC_BW_7_81                      = 0, 
   487         BNO055_ACC_BW_15_53                     = 1,
   488         BNO055_ACC_BW_31_25                     = 2,
   489         BNO055_ACC_BW_62_5                      = 3,
   490         BNO055_ACC_BW_125                       = 4, 
   491         BNO055_ACC_BW_250                       = 5,
   492         BNO055_ACC_BW_500                       = 6,
   493         BNO055_ACC_BW_1000                      = 7
   500         BNO055_ACC_PWR_MODE_NORMAL              = 0,
   501         BNO055_ACC_PWR_MODE_SUSPEND             = 1,
   502         BNO055_ACC_PWR_MODE_LOWPOWER1           = 2,
   503         BNO055_ACC_PWR_MODE_STANDBY             = 3,
   504         BNO055_ACC_PWR_MODE_LOWPOWER2           = 4,
   505         BNO055_ACC_PWR_MODE_DEEPSUSPEND         = 5
   506     } BNO055_ACC_PWR_MODE_T;
   512         BNO055_MAG_CONFIG_MAG_ODR0              = 0x01,
   513         BNO055_MAG_CONFIG_MAG_ODR1              = 0x02,
   514         BNO055_MAG_CONFIG_MAG_ODR2              = 0x04,
   515         _BNO055_MAG_CONFIG_MAG_ODR_MASK         = 7,
   516         _BNO055_MAG_CONFIG_MAG_ODR_SHIFT        = 0,
   518         BNO055_MAG_CONFIG_MAG_OPR_MODE0         = 0x08,
   519         BNO055_MAG_CONFIG_MAG_OPR_MODE1         = 0x10,
   520         _BNO055_MAG_CONFIG_MAG_OPR_MODE_MASK    = 3,
   521         _BNO055_MAG_CONFIG_MAG_OPR_MODE_SHIFT   = 3,
   523         BNO055_MAG_CONFIG_MAG_POWER_MODE0       = 0x20,
   524         BNO055_MAG_CONFIG_MAG_POWER_MODE1       = 0x40,
   525         _BNO055_MAG_CONFIG_MAG_POWER_MODE_MASK  = 3,
   526         _BNO055_MAG_CONFIG_MAG_POWER_MODE_SHIFT = 5
   528     } BNO055_MAG_CONFIG_BITS_T;
   534         BNO055_MAG_ODR_2                        = 0, 
   535         BNO055_MAG_ODR_6                        = 1,
   536         BNO055_MAG_ODR_8                        = 2,
   537         BNO055_MAG_ODR_10                       = 3,
   538         BNO055_MAG_ODR_15                       = 4,
   539         BNO055_MAG_ODR_20                       = 5,
   540         BNO055_MAG_ODR_25                       = 6,
   541         BNO055_MAG_ODR_30                       = 7
   548         BNO055_MAG_OPR_LOW                      = 0, 
   549         BNO055_MAG_OPR_REGULAR                  = 1,
   550         BNO055_MAG_OPR_ENHANCED_REGULAR         = 2,
   551         BNO055_MAG_OPR_HIGH_ACCURACY            = 3
   558         BNO055_MAG_POWER_NORMAL                 = 0,
   559         BNO055_MAG_POWER_SLEEP                  = 1,
   560         BNO055_MAG_POWER_SUSPEND                = 2,
   561         BNO055_MAG_POWER_FORCE_MODE             = 3
   562     } BNO055_MAG_POWER_T;
   568         BNO055_GYR_CONFIG0_GYR_RANGE0           = 0x01,
   569         BNO055_GYR_CONFIG0_GYR_RANGE1           = 0x02,
   570         BNO055_GYR_CONFIG0_GYR_RANGE2           = 0x04,
   571         _BNO055_GYR_CONFIG0_GYR_RANGE_MASK      = 7,
   572         _BNO055_GYR_CONFIG0_GYR_RANGE_SHIFT     = 0,
   574         BNO055_GYR_CONFIG0_GYR_BW0              = 0x08,
   575         BNO055_GYR_CONFIG0_GYR_BW1              = 0x10,
   576         BNO055_GYR_CONFIG0_GYR_BW2              = 0x20,
   577         _BNO055_GYR_CONFIG0_GYR_BW_MASK         = 7,
   578         _BNO055_GYR_CONFIG0_GYR_BW_SHIFT        = 3
   580     } BNO055_GYR_CONFIG0_BITS_T;
   586         BNO055_GYR_RANGE_2000                   = 0, 
   587         BNO055_GYR_RANGE_1000                   = 1,
   588         BNO055_GYR_RANGE_500                    = 2,
   589         BNO055_GYR_RANGE_250                    = 3,
   590         BNO055_GYR_RANGE_125                    = 4
   591     } BNO055_GYR_RANGE_T;
   597         BNO055_GYR_BW_523                       = 0, 
   598         BNO055_GYR_BW_230                       = 1,
   599         BNO055_GYR_BW_116                       = 2,
   600         BNO055_GYR_BW_47                        = 3,
   601         BNO055_GYR_BW_23                        = 4,
   602         BNO055_GYR_BW_12                        = 5,
   603         BNO055_GYR_BW_64                        = 6,
   611         BNO055_GYR_CONFIG1_GYR_POWER_MODE0      = 0x01,
   612         BNO055_GYR_CONFIG1_GYR_POWER_MODE1      = 0x02,
   613         BNO055_GYR_CONFIG1_GYR_POWER_MODE2      = 0x04,
   614         _BNO055_GYR_CONFIG1_GYR_POWER_MODE_MASK = 7,
   615         _BNO055_GYR_CONFIG1_GYR_POWER_MODE_SHIFT = 0
   617     } BNO055_GYR_CONFIG1_BITS_T;
   623         BNO055_GYR_POWER_MODE_NORMAL            = 0,
   624         BNO055_GYR_POWER_MODE_FAST_POWERUP      = 1,
   625         BNO055_GYR_POWER_MODE_DEEP_SUSPEND      = 2,
   626         BNO055_GYR_POWER_MODE_SUSPEND           = 3,
   627         BNO055_GYR_POWER_MODE_ADVANCED_POWERSAVE= 4
   628     } BNO055_GYR_POWER_MODE_T;
   634         BNO055_ACC_SLEEP_CONFIG_SLP_MODE        = 0x01, 
   638         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR0    = 0x02,
   639         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR1    = 0x04,
   640         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR2    = 0x08,
   641         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR3    = 0x10,
   642         _BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR_MASK = 15,
   643         _BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR_SHIFT = 1
   645     } BNO055_ACC_SLEEP_CONFIG_BITS_T;
   651         BNO055_ACC_SLP_DUR_0_5                  = 0, 
   654         BNO055_ACC_SLP_DUR_1                    = 6, 
   655         BNO055_ACC_SLP_DUR_2                    = 7,
   656         BNO055_ACC_SLP_DUR_4                    = 8,
   657         BNO055_ACC_SLP_DUR_6                    = 9,
   658         BNO055_ACC_SLP_DUR_10                   = 10,
   659         BNO055_ACC_SLP_DUR_25                   = 11,
   660         BNO055_ACC_SLP_DUR_50                   = 12,
   661         BNO055_ACC_SLP_DUR_100                  = 13,
   662         BNO055_ACC_SLP_DUR_500                  = 14
   664     } BNO055_ACC_SLP_DUR_T;
   670         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR0  = 0x01,
   671         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR1  = 0x02,
   672         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR2  = 0x04,
   673         _BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_MASK = 7,
   674         _BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_SHIFT = 0,
   676         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR0 = 0x08,
   677         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR1 = 0x10,
   678         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR2 = 0x20,
   679         _BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_MASK = 7,
   680         _BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_SHIFT = 3
   682     } BNO055_GYR_SLEEP_CONFIG_BITS_T;
   688         BNO055_GYR_SLEEP_DUR_2                  = 0, 
   689         BNO055_GYR_SLEEP_DUR_4                  = 1,
   690         BNO055_GYR_SLEEP_DUR_5                  = 2,
   691         BNO055_GYR_SLEEP_DUR_8                  = 3,
   692         BNO055_GYR_SLEEP_DUR_10                 = 4,
   693         BNO055_GYR_SLEEP_DUR_15                 = 5,
   694         BNO055_GYR_SLEEP_DUR_18                 = 6,
   695         BNO055_GYR_SLEEP_DUR_20                 = 7
   696     } BNO055_GYR_SLEEP_DUR_T;
   703         BNO055_GYR_AUTO_SLP_DUR_4               = 1, 
   704         BNO055_GYR_AUTO_SLP_DUR_5               = 2,
   705         BNO055_GYR_AUTO_SLP_DUR_8               = 3,
   706         BNO055_GYR_AUTO_SLP_DUR_10              = 4,
   707         BNO055_GYR_AUTO_SLP_DUR_15              = 5,
   708         BNO055_GYR_AUTO_SLP_DUR_20              = 6,
   709         BNO055_GYR_AUTO_SLP_DUR_40              = 7
   710     } BNO055_GYR_AUTO_SLP_DUR_T;
   717         BNO055_INT_GYRO_AM                      = 0x04, 
   718         BNO055_INT_GYRO_HIGH_RATE               = 0x08,
   720         BNO055_INT_ACC_HIGH_G                   = 0x20,
   721         BNO055_INT_ACC_AM                       = 0x40, 
   722         BNO055_INT_ACC_NM                       = 0x80, 
   729         BNO055_ACC_INT_SETTINGS_AM_DUR0         = 0x01,
   730         BNO055_ACC_INT_SETTINGS_AM_DUR1         = 0x02,
   731         _BNO055_ACC_INT_SETTINGS_AM_DUR_MASK    = 3,
   732         _BNO055_ACC_INT_SETTINGS_AM_DUR_SHIFT   = 0,
   734         BNO055_ACC_INT_SETTINGS_AM_NM_X_AXIS    = 0x04,
   735         BNO055_ACC_INT_SETTINGS_AM_NM_Y_AXIS    = 0x08,
   736         BNO055_ACC_INT_SETTINGS_AM_NM_Z_AXIS    = 0x10,
   738         BNO055_ACC_INT_SETTINGS_HG_X_AXIS       = 0x20,
   739         BNO055_ACC_INT_SETTINGS_HG_Y_AXIS       = 0x40,
   740         BNO055_ACC_INT_SETTINGS_HG_Z_AXIS       = 0x80
   741     } BNO055_ACC_INT_SETTINGS_BITS_T;
   747         BNO055_ACC_NM_SET_SM_NM                 = 0x01, 
   750         BNO055_ACC_NM_SET_SM_NM_DUR0            = 0x02,
   751         BNO055_ACC_NM_SET_SM_NM_DUR1            = 0x04,
   752         BNO055_ACC_NM_SET_SM_NM_DUR2            = 0x08,
   753         BNO055_ACC_NM_SET_SM_NM_DUR3            = 0x10,
   754         BNO055_ACC_NM_SET_SM_NM_DUR4            = 0x20,
   755         BNO055_ACC_NM_SET_SM_NM_DUR5            = 0x40,
   756         _BNO055_ACC_NM_SET_SM_NM_DUR_MASK       = 63,
   757         _BNO055_ACC_NM_SET_SM_NM_DUR_SHIFT      = 1
   759     } BNO055_ACC_NM_SET_BITS_T;
   765         BNO055_GYR_INT_SETTING_AM_X_AXIS        = 0x01,
   766         BNO055_GYR_INT_SETTING_AM_Y_AXIS        = 0x02,
   767         BNO055_GYR_INT_SETTING_AM_Z_AXIS        = 0x04,
   769         BNO055_GYR_INT_SETTING_HR_X_AXIS        = 0x08,
   770         BNO055_GYR_INT_SETTING_HR_Y_AXIS        = 0x10,
   771         BNO055_GYR_INT_SETTING_HR_Z_AXIS        = 0x20,
   773         BNO055_GYR_INT_SETTING_AM_FILT          = 0x40,
   774         BNO055_GYR_INT_SETTING_HR_FILT          = 0x80
   775     } BNO055_GYR_INT_SETTING_BITS_T;
   782         BNO055_GYR_HR_XYZ_SET_HR_THRESH0        = 0x01,
   783         BNO055_GYR_HR_XYZ_SET_HR_THRESH1        = 0x02,
   784         BNO055_GYR_HR_XYZ_SET_HR_THRESH2        = 0x04,
   785         BNO055_GYR_HR_XYZ_SET_HR_THRESH3        = 0x08,
   786         BNO055_GYR_HR_XYZ_SET_HR_THRESH4        = 0x10,
   787         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_MASK   = 31,
   788         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_SHIFT  = 0,
   790         BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST0   = 0x20,
   791         BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST1   = 0x40,
   792         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST_MASK = 3,
   793         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST_SHIFT = 5
   794     } BNO055_GYR_HR_XYZ_SET_BITS_T;
   800         BNO055_GYR_AM_SET_SLOPE_SAMPLES0        = 0x01,
   801         BNO055_GYR_AM_SET_SLOPE_SAMPLES1        = 0x02,
   802         _BNO055_GYR_AM_SET_SLOPE_SAMPLES_MASK   = 3,
   803         _BNO055_GYR_AM_SET_SLOPE_SAMPLES_SHIFT  = 0,
   805         BNO055_GYR_AM_SET_AWAKE_DUR0            = 0x04,
   806         BNO055_GYR_AM_SET_AWAKE_DUR1            = 0x08,
   807         _BNO055_GYR_AM_SET_AWAKE_DUR_MASK       = 3,
   808         _BNO055_GYR_AM_SET_AWAKE_DUR_SHIFT      = 2
   811     } BNO055_GYR_AM_SET_BITS_T;
   817         BNO055_SLOPE_SAMPLES_8                  = 0, 
   818         BNO055_SLOPE_SAMPLES_16                 = 1,
   819         BNO055_SLOPE_SAMPLES_32                 = 2,
   820         BNO055_SLOPE_SAMPLES_64                 = 3
   821     } BNO055_SLOPE_SAMPLES_T;