BMI160 Initial
Dependents: MAX32630HSP3_IMU_HelloWorld MAX32630HSP3_IMU_HelloWorld MAX32630HSP3_Pitch_Charles Maxim_Squeeks
Diff: bmi160.h
- Revision:
- 21:0b28b9d13164
- Parent:
- 20:a521606048bb
--- a/bmi160.h Fri May 04 13:35:59 2018 +0300
+++ b/bmi160.h Tue Dec 04 09:50:52 2018 +0000
@@ -36,6 +36,19 @@
#include "mbed.h"
+#include "bmi160_defs.h"
+
+#include <math.h>
+//#include <bmi160_math.h>
+/*
+#ifdef __KERNEL__
+
+#else
+
+#include <string.h>
+*/
+#include <stdlib.h>
+
/**
@brief The BMI160 is a small, low power, low noise 16-bit inertial measurement
unit designed for use in mobile applications like augmented reality or indoor
@@ -71,7 +84,7 @@
Y_AXIS,
Z_AXIS
};
-
+
///Structure for axis data
struct AxisData
{
@@ -136,7 +149,7 @@
FIFO_DATA, ///<FIFO data read out register, burst read
ACC_CONF = 0x40, ///<Set ODR, bandwidth, and read mode of accelerometer
ACC_RANGE, ///<Sets accelerometer g-range
- GYR_CONF, ///<Set ODR, bandwidth, and read mode of gyroscope
+ GYR_CONF = 0x42, ///<Set ODR, bandwidth, and read mode of gyroscope
GYR_RANGE, ///<Sets gyroscope angular rate measurement range
MAG_CONF, ///<Sets ODR of magnetometer interface
FIFO_DOWNS, ///<Sets down sampling ratios of accel and gyro data
@@ -186,20 +199,20 @@
///<interrupt
INT_FLAT_0, ///<Contains the configuration for the flat interrupt
INT_FLAT_1, ///<Contains the configuration for the flat interrupt
- FOC_CONF, ///<Contains configuration for the fast offset
+ FOC_CONF = 0x69, ///<Contains configuration for the fast offset
///<compensation for the accelerometer and gyroscope
CONF, ///<Configuration of sensor, nvm_prog_en bit
IF_CONF, ///<Contains settings for the digital interface
PMU_TRIGGER, ///<Sets trigger conditions to change gyro power modes
SELF_TEST, ///<Self test configuration
NV_CONF = 0x70, ///<Contains settings for the digital interface
- OFFSET_0, ///<Contains offset comp values for acc_off_x7:0
- OFFSET_1, ///<Contains offset comp values for acc_off_y7:0
- OFFSET_2, ///<Contains offset comp values for acc_off_z7:0
- OFFSET_3, ///<Contains offset comp values for gyr_off_x7:0
- OFFSET_4, ///<Contains offset comp values for gyr_off_y7:0
- OFFSET_5, ///<Contains offset comp values for gyr_off_z7:0
- OFFSET_6, ///<gyr/acc offset enable bit and gyr_off_(zyx) bits9:8
+ OFFSET_0 = 0x71, ///<Contains offset comp values for acc_off_x7:0
+ OFFSET_1 = 0x71, ///<Contains offset comp values for acc_off_y7:0
+ OFFSET_2 = 0x71, ///<Contains offset comp values for acc_off_z7:0
+ OFFSET_3 = 0x74, ///<Contains offset comp values for gyr_off_x7:0
+ OFFSET_4 = 0x75, ///<Contains offset comp values for gyr_off_y7:0
+ OFFSET_5 = 0x76, ///<Contains offset comp values for gyr_off_z7:0
+ OFFSET_6 = 0x77, ///<gyr/acc offset enable bit and gyr_off_(zyx) bits9:8
STEP_CNT_0, ///<Step counter bits 15:8
STEP_CNT_1, ///<Step counter bits 7:0
STEP_CONF_0, ///<Contains configuration of the step detector
@@ -224,6 +237,10 @@
static const uint8_t MAG_DRDY_ERR_MASK = 0x80;
static const uint8_t MAG_DRDY_ERR_POS = 0x08;
+ static const uint8_t FOC_VALUE = 0x7D;
+ static const uint8_t FOC_START = 0x03;
+ static const uint8_t FOC_ENABLE_GYR_ACC = 0xC0;
+
///Enumerated error codes
enum ErrorCodes
{
@@ -251,6 +268,7 @@
static const uint8_t ACC_US_POS = 0x07;
static const uint8_t ACC_RANGE_MASK = 0x0F;
static const uint8_t ACC_RANGE_POS = 0x00;
+ static const uint8_t GYRO_RANGE_500 = 0x02;
///Accelerometer output data rates
enum AccOutputDataRate
@@ -298,6 +316,10 @@
SENS_16G = 0x0C ///<Accelerometer range +-16G
};
+
+
+
+
///Accelerometer configuration data structure
struct AccConfig
{
@@ -586,7 +608,9 @@
int32_t getSensorTime(SensorTime &sensorTime);
- ///@brief Get die temperature.\n
+
+
+ ///@brief Get die temperature.\n
///
///On Entry:
///@param[in] temp - pointer to float for temperature
@@ -788,3 +812,7 @@
///@param[out] none
///
///@returns none
+int8_t start_foc(struct bmi160_dev *dev);
+
+int8_t bmi160_start_foc(const struct bmi160_foc_conf *foc_conf, struct bmi160_offsets *offset,
+ struct bmi160_dev const *dev);
\ No newline at end of file