Hi,
Thanks for your inquiry.
The values in registers 0x08 ~ 0x0D are accel raw data which are signed integers. The sensitivity is 1LSB/mg at all full scale ranges. after you get
x = ((int16_t)buffer[0]) | (((int16_t)buffer[1]) << 8); y = ((int16_t)buffer[2]) | (((int16_t)buffer[3]) << 8); z = ((int16_t)buffer[4]) | (((int16_t)buffer[5]) << 8);
Acc_x = x/1mg/LSB; // for example if you get x=900; then Acc_x = 900mg = 0.9g = 0.9*9.81m/s^2
Acc_y = y/1LSB/mg; // for example if you get y=-25, then Acc_y = -25mg = -0.025g = -0.25*9.81m/s^2
Acc_z = z/1LSB/mg; // for example if you get z=125, then Acc_z = 125mg = 0.125g = 0.125*9.81m/s^2
The values in registers 0x0E ~ 0x13 are magnetometer raw data which are signed integers. There is no sensitivity to convert signed integers to uT like the accel. So after you get x/y/z values from registers 0x0E ~ 0x13 you need to call function to get magnetometer values in uT from BNO055 API source code online at https://github.com/BoschSensortec/BNO055_driver.
It takes BNO055 about 650ms from reset to config mode. This means that after reset BNO055 you need to wait at least 650ms or 1s to be safe before you talk to BNO055 through I2C bus.
Thanks.
... View more