37#define BNO055_G_CHIP_ADDR (0x28 << 1)
38#define BNO055_V_CHIP_ADDR (0x29 << 1)
41#define CONFIGMODE 0x00
43#define MODE_COMPASS 0x09
45#define MODE_NDOF_FMC_OFF 0x0b
49#define UNIT_ACC_MSS 0x00
50#define UNIT_ACC_MG 0x01
51#define UNIT_GYR_DPS 0x00
52#define UNIT_GYR_RPS 0x02
53#define UNIT_EULER_DEG 0x00
54#define UNIT_EULER_RAD 0x04
55#define UNIT_TEMP_C 0x00
56#define UNIT_TEMP_F 0x10
57#define UNIT_ORI_WIN 0x00
58#define UNIT_ORI_ANDROID 0x80
61#define I_AM_BNO055_CHIP 0xa0
62#define I_AM_BNO055_ACC 0xfb
63#define I_AM_BNO055_MAG 0x32
64#define I_AM_BNO055_GYR 0x0f
151 BNO055(PinName p_sda, PinName p_scl, PinName p_reset, uint8_t addr, uint8_t mode);
157 BNO055(PinName p_sda, PinName p_scl, PinName p_reset);
163 BNO055(I2C& p_i2c, PinName p_reset, uint8_t addr, uint8_t mode);
169 BNO055(I2C& p_i2c, PinName p_reset, uint8_t mode);
277 uint8_t
write_reg0(uint8_t addr, uint8_t data);
290 uint8_t
write_reg1(uint8_t addr, uint8_t data);
344 uint8_t bootldr_rev_id;
349 bool unit_flag_is_set(uint8_t flag);
356#define BNO055_PAGE_ID 0x07
359#define BNO055_CHIP_ID 0x00
360#define BNO055_ACCEL_REV_ID 0x01
361#define BNO055_MAG_REV_ID 0x02
362#define BNO055_GYRO_REV_ID 0x03
363#define BNO055_SW_REV_ID_LSB 0x04
364#define BNO055_SW_REV_ID_MSB 0x05
365#define BNO055_BL_REV_ID 0x06
368#define BNO055_ACC_X_LSB 0x08
369#define BNO055_ACC_X_MSB 0x09
370#define BNO055_ACC_Y_LSB 0x0a
371#define BNO055_ACC_Y_MSB 0x0b
372#define BNO055_ACC_Z_LSB 0x0c
373#define BNO055_ACC_Z_MSB 0x0d
376#define BNO055_MAG_X_LSB 0x0e
377#define BNO055_MAG_X_MSB 0x0f
378#define BNO055_MAG_Y_LSB 0x10
379#define BNO055_MAG_Y_MSB 0x11
380#define BNO055_MAG_Z_LSB 0x12
381#define BNO055_MAG_Z_MSB 0x13
384#define BNO055_GYR_X_LSB 0x14
385#define BNO055_GYR_X_MSB 0x15
386#define BNO055_GYR_Y_LSB 0x16
387#define BNO055_GYR_Y_MSB 0x17
388#define BNO055_GYR_Z_LSB 0x18
389#define BNO055_GYR_Z_MSB 0x19
392#define BNO055_EULER_H_LSB 0x1a
393#define BNO055_EULER_H_MSB 0x1b
395#define BNO055_EULER_R_LSB 0x1c
396#define BNO055_EULER_R_MSB 0x1d
398#define BNO055_EULER_P_LSB 0x1e
399#define BNO055_EULER_P_MSB 0x1f
402#define BNO055_QUATERNION_W_LSB 0x20
403#define BNO055_QUATERNION_W_MSB 0x21
404#define BNO055_QUATERNION_X_LSB 0x22
405#define BNO055_QUATERNION_X_MSB 0x23
406#define BNO055_QUATERNION_Y_LSB 0x24
407#define BNO055_QUATERNION_Y_MSB 0x25
408#define BNO055_QUATERNION_Z_LSB 0x26
409#define BNO055_QUATERNION_Z_MSB 0x27
412#define BNO055_LINEAR_ACC_X_LSB 0x28
413#define BNO055_LINEAR_ACC_X_MSB 0x29
414#define BNO055_LINEAR_ACC_Y_LSB 0x2a
415#define BNO055_LINEAR_ACC_Y_MSB 0x2b
416#define BNO055_LINEAR_ACC_Z_LSB 0x2c
417#define BNO055_LINEAR_ACC_Z_MSB 0x2d
420#define BNO055_GRAVITY_X_LSB 0x2e
421#define BNO055_GRAVITY_X_MSB 0x2f
422#define BNO055_GRAVITY_Y_LSB 0x30
423#define BNO055_GRAVITY_Y_MSB 0x31
424#define BNO055_GRAVITY_Z_LSB 0x32
425#define BNO055_GRAVITY_Z_MSB 0x33
428#define BNO055_TEMP 0x34
431#define BNO055_CALIB_STAT 0x35
432#define BNO055_SELFTEST_RESULT 0x36
433#define BNO055_INTR_STAT 0x37
434#define BNO055_SYS_CLK_STAT 0x38
435#define BNO055_SYS_STAT 0x39
436#define BNO055_SYS_ERR 0x3a
439#define BNO055_UNIT_SEL 0x3b
440#define BNO055_DATA_SELECT 0x3c
443#define BNO055_OPR_MODE 0x3d
444#define BNO055_PWR_MODE 0x3e
445#define BNO055_SYS_TRIGGER 0x3f
446#define BNO055_TEMP_SOURCE 0x40
449#define BNO055_AXIS_MAP_CONFIG 0x41
450#define BNO055_AXIS_MAP_SIGN 0x42
453#define BNO055_SIC_MTRX_0_LSB 0x43
454#define BNO055_SIC_MTRX_0_MSB 0x44
455#define BNO055_SIC_MTRX_1_LSB 0x45
456#define BNO055_SIC_MTRX_1_MSB 0x46
457#define BNO055_SIC_MTRX_2_LSB 0x47
458#define BNO055_SIC_MTRX_2_MSB 0x48
459#define BNO055_SIC_MTRX_3_LSB 0x49
460#define BNO055_SIC_MTRX_3_MSB 0x4a
461#define BNO055_SIC_MTRX_4_LSB 0x4b
462#define BNO055_SIC_MTRX_4_MSB 0x4c
463#define BNO055_SIC_MTRX_5_LSB 0x4d
464#define BNO055_SIC_MTRX_5_MSB 0x4e
465#define BNO055_SIC_MTRX_6_LSB 0x4f
466#define BNO055_SIC_MTRX_6_MSB 0x50
467#define BNO055_SIC_MTRX_7_LSB 0x51
468#define BNO055_SIC_MTRX_7_MSB 0x52
469#define BNO055_SIC_MTRX_8_LSB 0x53
470#define BNO055_SIC_MTRX_8_MSB 0x54
473#define ACCEL_OFFSET_X_LSB 0x55
474#define ACCEL_OFFSET_X_MSB 0x56
475#define ACCEL_OFFSET_Y_LSB 0x57
476#define ACCEL_OFFSET_Y_MSB 0x58
477#define ACCEL_OFFSET_Z_LSB 0x59
478#define ACCEL_OFFSET_Z_MSB 0x5a
481#define MAG_OFFSET_X_LSB 0x5b
482#define MAG_OFFSET_X_MSB 0x5c
483#define MAG_OFFSET_Y_LSB 0x5d
484#define MAG_OFFSET_Y_MSB 0x5e
485#define MAG_OFFSET_Z_LSB 0x5f
486#define MAG_OFFSET_Z_MSB 0x60
489#define GYRO_OFFSET_X_LSB 0x61
490#define GYRO_OFFSET_X_MSB 0x62
491#define GYRO_OFFSET_Y_LSB 0x63
492#define GYRO_OFFSET_Y_MSB 0x64
493#define GYRO_OFFSET_Z_LSB 0x65
494#define GYRO_OFFSET_Z_MSB 0x66
497#define ACCEL_RADIUS_LSB 0x67
498#define ACCEL_RADIUS_MSB 0x68
499#define MAG_RADIUS_LSB 0x69
500#define MAG_RADIUS_MSB 0x6a
504#define ACCEL_CONFIG 0x08
505#define MAG_CONFIG 0x09
506#define GYRO_CONFIG 0x0a
507#define GYRO_MODE_CONFIG 0x0b
508#define ACCEL_SLEEP_CONFIG 0x0c
509#define GYRO_SLEEP_CONFIG 0x0d
510#define MAG_SLEEP_CONFIG 0x0e
515#define ACCEL_ANY_MOTION_THRES 0x11
516#define ACCEL_INTR_SETTINGS 0x12
517#define ACCEL_HIGH_G_DURN 0x13
518#define ACCEL_HIGH_G_THRES 0x14
519#define ACCEL_NO_MOTION_THRES 0x15
520#define ACCEL_NO_MOTION_SET 0x16
521#define GYRO_INTR_SETING 0x17
522#define GYRO_HIGHRATE_X_SET 0x18
523#define GYRO_DURN_X 0x19
524#define GYRO_HIGHRATE_Y_SET 0x1a
525#define GYRO_DURN_Y 0x1b
526#define GYRO_HIGHRATE_Z_SET 0x1c
527#define GYRO_DURN_Z 0x1d
528#define GYRO_ANY_MOTION_THRES 0x1e
529#define GYRO_ANY_MOTION_SET 0x1f
@ MT_P7
Definition BNO055.h:106
@ MT_P0
Definition BNO055.h:106
@ MT_P6
Definition BNO055.h:106
@ MT_P1
Definition BNO055.h:106
@ MT_P4
Definition BNO055.h:106
@ MT_P5
Definition BNO055.h:106
@ MT_P3
Definition BNO055.h:106
@ MT_P2
Definition BNO055.h:106
void get_euler_angles(BNO055_EULER_TypeDef *el)
Definition BNO055.cpp:57
bool use_dps()
Definition BNO055.cpp:342
int cantReadDataCount
Definition BNO055.h:312
uint8_t read_calib_status(void)
Definition BNO055.cpp:551
void get_chip_temperature(BNO055_TEMPERATURE_TypeDef *tmp)
Definition BNO055.cpp:255
void unit_selection(void)
Definition BNO055.cpp:318
void get_gravity(BNO055_VECTOR_TypeDef *gr)
Definition BNO055.cpp:170
void get_id(void)
Definition BNO055.cpp:419
void get_gyro(BNO055_VECTOR_TypeDef *gr)
Definition BNO055.cpp:233
void get_accel(BNO055_VECTOR_TypeDef *la)
Definition BNO055.cpp:210
void get_quaternion(BNO055_QUATERNION_TypeDef *qua)
Definition BNO055.cpp:80
uint8_t write_reg0(uint8_t addr, uint8_t data)
Definition BNO055.cpp:671
void frequency(int hz)
Definition BNO055.cpp:656
void calibrate(void)
Definition BNO055.cpp:468
void change_fusion_mode(uint8_t mode)
Definition BNO055.cpp:561
DigitalOut _res
Definition BNO055.h:329
void get_angular_position_quat(IMU::EulerAngles *an_pos)
Definition BNO055.cpp:115
uint8_t chip_ready(void)
Definition BNO055.cpp:459
uint8_t write_reg1(uint8_t addr, uint8_t data)
Definition BNO055.cpp:695
void initialize_reset_pin(void)
Definition BNO055.cpp:312
uint8_t read_reg0(uint8_t addr)
Definition BNO055.cpp:662
IMU::EulerAngles read() override
Definition BNO055.cpp:136
void set_mounting_position(uint8_t position)
Definition BNO055.cpp:605
void read_id_inf(BNO055_ID_INF_TypeDef *id)
Definition BNO055.cpp:448
void set_initial_dt_to_regs(void)
Definition BNO055.cpp:412
uint8_t reset(void)
Definition BNO055.cpp:388
bool use_degrees()
Definition BNO055.cpp:326
bool use_celsius()
Definition BNO055.cpp:350
bool use_mss()
Definition BNO055.cpp:334
I2C * _i2c_p
Definition BNO055.h:327
uint8_t read_reg1(uint8_t addr)
Definition BNO055.cpp:686
uint8_t select_page(uint8_t page)
Definition BNO055.cpp:370
uint8_t get_operating_mode(void)
Definition BNO055.cpp:595
IMU::EulerAngles getImuAngles() override
Definition BNO055.cpp:142
void initialize(void)
Definition BNO055.cpp:292
I2C & _i2c
Definition BNO055.h:328
void get_linear_accel(BNO055_VECTOR_TypeDef *la)
Definition BNO055.cpp:147
void get_mag(BNO055_VECTOR_TypeDef *qua)
Definition BNO055.cpp:193
double yaw
Definition BNO055.h:90
double pitch
Definition BNO055.h:92
double roll
Definition BNO055.h:91
double h
Definition BNO055.h:77
double r
Definition BNO055.h:78
double p
Definition BNO055.h:79
uint8_t acc_id
Definition BNO055.h:69
uint8_t bootldr_rev_id
Definition BNO055.h:72
uint8_t chip_id
Definition BNO055.h:68
uint8_t mag_id
Definition BNO055.h:70
uint16_t sw_rev_id
Definition BNO055.h:73
uint8_t gyr_id
Definition BNO055.h:71
double y
Definition BNO055.h:84
double x
Definition BNO055.h:83
double w
Definition BNO055.h:86
double z
Definition BNO055.h:85
int8_t acc_chip
Definition BNO055.h:102
int8_t gyr_chip
Definition BNO055.h:103
double z
Definition BNO055.h:98
double x
Definition BNO055.h:96
double y
Definition BNO055.h:97