Thank you very much for your excellent explanation. I want to ask further with regard to resolution unit. If I use fusion mode, when I have read the value from the register, the driver divide it by 100 but you mentioned that because fusion mode use 4G resolution, the resolution is 4000 (mg) / 2^15 = 0.122 mg / LSB. Does it mean that I should multiply the value by 0.122 mg instead of dividing it by 100? I also still unsure about this part : "the 0.01 m / s2 per LSB is unit for accel offset register only". Can you explain what is for accel offset register?
... View more
Hello, I read in the datasheet that BNO055 accelerometer is using 14 bit for data output. I also found in this forum that I need to refer to BMA280 datasheet to understand the sampling rate and the relationship with bandwith. I will use BNO055 in ACCGYRO mode so it is non fusion mode and connect it to raspberrypi as host. I have several questions regarding that: 0. Does BMA280 used in BNO055? 1. From BNO055 datasheet, the register for the accelerometer output is 2 bytes, so it is 16 bit. From the C language driver in github, it is also apparent that the reading of the register use 2 bytes (left shifting MSB with 8 bit and add the LSB). When I read BMA280, the LSB register consist of new_data flag which is the first bit and the second bit of LSB is not used. So, from what I understand, the LSB register that needed to be read is from bit 2-7. The MSB part is no problem. So, to read this, the method should be the LSB shifted to to right for 2 bit to remove the unused and new flag bit and then MSB shifted to the left for 6 bit. Then add MSB and LSB. This reading method would produce different data output. Which one is correct? 2. From BMA280, when I use 2G range, the sensitivity for 1LSB is 0.244 mg or in m/s2 it is 0.00244 m/s2. In the BNO055 datasheet, 1LSB is 0.01 m/s2. In the driver, the reading is also divided by 100. Which one is correct and which one should I use? I believe if I use non-fusion mode and set it to 2G, I would be able to get sensitivity 1LSB = 0.00244 m/s2. I would want this because I need to measure slight acceleration. 3. For the bandwith, it is written that if I use 125Hz, the sampling rate is twice that which is 4ms. I use UART/serial protocol to connect to raspberry pi. Does it mean that in my C/C++ code, I would be able to read data every 4ms? For example I use loop that read data with 4ms sleep? Any suggestion on how to obtain this data in a consistent sampling rate? What happen if I read it without sleep (infinite loop)? Will it block until I get the new data or I will get old data? Thank you very much.
... View more