First Commit as a new library
Dependents: Host_Software_MAX32664GWEB_HR_wrist Host_Software_MAX32664GWEC_SpO2_HR Host_Software_MAX32664GWEB_HR_EXTENDED Host_Software_MAX32664GWEC_SpO2_HR-_EXTE ... more
Diff: bmi160.cpp
- Revision:
- 9:ca6b5fecdd63
- Parent:
- 8:a89b529b1d96
- Child:
- 10:9e219f2f1fb3
diff -r a89b529b1d96 -r ca6b5fecdd63 bmi160.cpp
--- a/bmi160.cpp Tue Dec 20 00:10:04 2016 +0000
+++ b/bmi160.cpp Tue Dec 20 01:08:33 2016 +0000
@@ -34,6 +34,9 @@
#include "bmi160.h"
+const struct BMI160::AccConfig BMI160::DEFAULT_ACC_CONFIG = {SENS_2G, ACC_US_OFF, ACC_BWP_2, ACC_ODR_8};
+
+
//*****************************************************************************
int32_t BMI160::setSensorPowerMode(Sensors sensor, PowerModes pwrMode)
{
@@ -94,7 +97,7 @@
//*****************************************************************************
-int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data)
+int32_t BMI160::getAccAxis(SensorAxis axis, AxisData &data, AccConfig accConfig)
{
uint8_t localData[2];
int32_t rtnVal;
@@ -121,7 +124,25 @@
if(rtnVal == RTN_NO_ERROR)
{
data.raw = ((localData[1] << 8) | localData[0]);
- data.scaled = (data.raw/16384.0F); //only 2G range right now
+ switch(accConfig.range)
+ {
+ //magic numbers are typical values for LSB/g from EC table
+ case SENS_2G:
+ data.scaled = (data.raw/16384.0F);
+ break;
+
+ case SENS_4G:
+ data.scaled = (data.raw/8192.0F);
+ break;
+
+ case SENS_8G:
+ data.scaled = (data.raw/4096.0F);
+ break;
+
+ case SENS_16G:
+ data.scaled = (data.raw/2048.0F);
+ break;
+ }
}
return rtnVal;
@@ -129,7 +150,7 @@
//*****************************************************************************
-int32_t BMI160::getAccXYZ(SensorData &data)
+int32_t BMI160::getAccXYZ(SensorData &data, AccConfig accConfig)
{
uint8_t localData[6];
int32_t rtnVal = readBlock(DATA_14, DATA_19, localData);
@@ -140,10 +161,33 @@
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);
+ switch(accConfig.range)
+ {
+ //magic numbers are typical values for LSB/g from EC table
+ case SENS_2G:
+ data.xAxis.scaled = (data.xAxis.raw/16384.0F);
+ data.yAxis.scaled = (data.yAxis.raw/16384.0F);
+ data.zAxis.scaled = (data.zAxis.raw/16384.0F);
+ break;
+
+ case SENS_4G:
+ data.xAxis.scaled = (data.xAxis.raw/8192.0F);
+ data.yAxis.scaled = (data.yAxis.raw/8192.0F);
+ data.zAxis.scaled = (data.zAxis.raw/8192.0F);
+ break;
+
+ case SENS_8G:
+ data.xAxis.scaled = (data.xAxis.raw/4096.0F);
+ data.yAxis.scaled = (data.yAxis.raw/4096.0F);
+ data.zAxis.scaled = (data.zAxis.raw/4096.0F);
+ break;
+
+ case SENS_16G:
+ data.xAxis.scaled = (data.xAxis.raw/2048.0F);
+ data.yAxis.scaled = (data.yAxis.raw/2048.0F);
+ data.zAxis.scaled = (data.zAxis.raw/2048.0F);
+ break;
+ }
}
return rtnVal;