Library for Bosch Sensortech BMI160 IMU
Dependents: MAX32630FTHR_BALANCE_BOT MPSMAX_copy MAX32630FTHR_BALANCE_BOT SELF_BALANCING_BOT
Diff: bmi160.cpp
- Revision:
- 8:a89b529b1d96
- Parent:
- 7:9848196cb65e
- Child:
- 9:ca6b5fecdd63
diff -r 9848196cb65e -r a89b529b1d96 bmi160.cpp --- a/bmi160.cpp Thu Dec 15 23:46:42 2016 +0000 +++ b/bmi160.cpp Tue Dec 20 00:10:04 2016 +0000 @@ -84,3 +84,67 @@ return rtnVal; } + + +//***************************************************************************** +int32_t BMI160::getSensorDataAndTime(uint8_t *data) +{ + return readBlock(DATA_0, SENSORTIME_2, data); +} + + +//***************************************************************************** +int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data) +{ + uint8_t localData[2]; + int32_t rtnVal; + + switch(axis) + { + case X_AXIS: + rtnVal = readBlock(DATA_14, DATA_15, localData); + break; + + case Y_AXIS: + rtnVal = readBlock(DATA_16, DATA_17, localData); + break; + + case Z_AXIS: + rtnVal = readBlock(DATA_18, DATA_19, localData); + break; + + default: + rtnVal = -1; + break; + } + + if(rtnVal == RTN_NO_ERROR) + { + data.raw = ((localData[1] << 8) | localData[0]); + data.scaled = (data.raw/16384.0F); //only 2G range right now + } + + return rtnVal; +} + + +//***************************************************************************** +int32_t BMI160::getAccXYZ(SensorData &data) +{ + uint8_t localData[6]; + int32_t rtnVal = readBlock(DATA_14, DATA_19, localData); + + if(rtnVal == RTN_NO_ERROR) + { + data.xAxis.raw = ((localData[1] << 8) | localData[0]); + data.yAxis.raw = ((localData[3] << 8) | localData[2]); + data.zAxis.raw = ((localData[5] << 8) | localData[4]); + + //only 2G range right now + data.xAxis.scaled = (data.xAxis.raw/16384.0F); + data.yAxis.scaled = (data.yAxis.raw/16384.0F); + data.zAxis.scaled = (data.zAxis.raw/16384.0F); + } + + return rtnVal; +}