AHRS

Dependencies:   Eigen

Dependents:   IndNav_QK3_T265

Revision:
28:21dfb161c67c
Parent:
27:973e495f4711
Child:
29:cd963a6d31c5
--- a/BMI088.cpp	Tue Jan 14 14:24:03 2020 +0000
+++ b/BMI088.cpp	Mon Jan 20 12:41:13 2020 +0000
@@ -5,16 +5,21 @@
     this->i2c = &i2c;
     devAddrAcc = BMI088_ACC_ADDRESS;
     devAddrGyro = BMI088_GYRO_ADDRESS;
+    initialize();
 }
 
 void BMI088::initialize(void)
 {
     setAccScaleRange(RANGE_3G);
+    wait(.02);
     setAccOutputDataRate(ODR_100); // ODR_100 -> 40 Hz bandwith in normal mode
+    wait(.02);
     setAccPowerMode(ACC_ACTIVE);
-
+    wait(.02);
     setGyroScaleRange(RANGE_500);
+    wait(.02);
     setGyroOutputDataRate(ODR_400_BW_47);
+    wait(.02);
     setGyroPowerMode(GYRO_NORMAL);
 }
 
@@ -67,10 +72,10 @@
 
 void BMI088::setAccScaleRange(acc_scale_type_t range)
 {
-    if(range == RANGE_3G) accRange = 3 * 9.81 / 32768.0f;
-    else if(range == RANGE_6G) accRange = 6 * 9.81 / 32768.0f;
-    else if(range == RANGE_12G) accRange = 12 * 9.81 / 32768.0f;
-    else if(range == RANGE_24G) accRange = 24 * 9.81 / 32768.0f;
+    if(range == RANGE_3G) accRange = 3.0f * 9.81f / 32768.0f;
+    else if(range == RANGE_6G) accRange = 6.0f * 9.81f / 32768.0f;
+    else if(range == RANGE_12G) accRange = 12.0f * 9.81f / 32768.0f;
+    else if(range == RANGE_24G) accRange = 24.0f * 9.81f / 32768.0f;
 
     write8(ACC, BMI088_ACC_RANGE, (uint8_t)range);
 }
@@ -88,11 +93,11 @@
 
 void BMI088::setGyroScaleRange(gyro_scale_type_t range)
 {
-    if(range == RANGE_2000) gyroRange = 2000 * 0.01745329 / 32768.0f;
-    else if(range == RANGE_1000) gyroRange = 1000 * 0.01745329f / 32768.0f;
-    else if(range == RANGE_500) gyroRange = 500 * 0.01745329f / 32768.0f;
-    else if(range == RANGE_250) gyroRange = 250 * 0.01745329f / 32768.0f;
-    else if(range == RANGE_125) gyroRange = 125 * 0.01745329f / 32768.0f;
+    if(range == RANGE_2000) gyroRange = 2000.0f * 0.01745329f / 32768.0f;
+    else if(range == RANGE_1000) gyroRange = 1000.0f * 0.01745329f / 32768.0f;
+    else if(range == RANGE_500) gyroRange = 500.0f * 0.01745329f / 32768.0f;
+    else if(range == RANGE_250) gyroRange = 250.0f * 0.01745329f / 32768.0f;
+    else if(range == RANGE_125) gyroRange = 125.0f * 0.01745329f / 32768.0f;
 
     write8(GYRO, BMI088_GYRO_RANGE, (uint8_t)range);
 }
@@ -197,10 +202,8 @@
     float value = 0;
 
     gx = read16(GYRO, BMI088_GYRO_RATE_X_LSB);
-
     value = (int16_t)gx;
-    value = gyroRange * value ;
-
+    value = gyroRange * value;
     return value;
 }