Device driver interface for the MPU-9X50 (MPU9150 and MPU9250) More...

Detailed Description

Device driver interface for the MPU-9X50 (MPU9150 and MPU9250)

Author
Fabian Nack nack@.nosp@m.inf..nosp@m.fu-be.nosp@m.rlin.nosp@m..de
Jannes Volkens janne.nosp@m.s.vo.nosp@m.lkens.nosp@m.@haw.nosp@m.-hamb.nosp@m.urg..nosp@m.de

Definition in file mpu9x50.h.

#include "periph/i2c.h"
+ Include dependency graph for mpu9x50.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mpu9x50_results_t
 MPU-9X50 result vector struct. More...
 
struct  mpu9x50_status_t
 Configuration struct for the MPU-9X50 sensor. More...
 
struct  mpu9x50_params_t
 Device initialization parameters. More...
 
struct  mpu9x50_t
 Device descriptor for the MPU9X50 sensor. More...
 

Enumerations

enum  mpu9x50_pwr_t { MPU9X50_SENSOR_PWR_OFF = 0x00, MPU9X50_SENSOR_PWR_ON = 0x01 }
 Power enum values.
 
enum  mpu9x50_hw_addr_t { MPU9X50_HW_ADDR_HEX_68 = 0x68, MPU9X50_HW_ADDR_HEX_69 = 0x69 }
 Possible MPU-9X50 hardware addresses (wiring specific)
 
enum  mpu9x50_comp_addr_t { MPU9X50_COMP_ADDR_HEX_0C = 0x0C, MPU9X50_COMP_ADDR_HEX_0D = 0x0D, MPU9X50_COMP_ADDR_HEX_0E = 0x0E, MPU9X50_COMP_ADDR_HEX_0F = 0x0F }
 Possible compass addresses (wiring specific)
 
enum  mpu9x50_gyro_ranges_t { MPU9X50_GYRO_FSR_250DPS = 0x00, MPU9X50_GYRO_FSR_500DPS = 0x01, MPU9X50_GYRO_FSR_1000DPS = 0x02, MPU9X50_GYRO_FSR_2000DPS = 0x03 }
 Possible full scale ranges for the gyroscope.
 
enum  mpu9x50_accel_ranges_t { MPU9X50_ACCEL_FSR_2G = 0x00, MPU9X50_ACCEL_FSR_4G = 0x01, MPU9X50_ACCEL_FSR_8G = 0x02, MPU9X50_ACCEL_FSR_16G = 0x03 }
 Possible full scale ranges for the accelerometer.
 
enum  mpu9x50_lpf_t {
  MPU9X50_FILTER_188HZ = 0x01, MPU9X50_FILTER_98HZ = 0x02, MPU9X50_FILTER_42HZ = 0x03, MPU9X50_FILTER_20HZ = 0x04,
  MPU9X50_FILTER_10HZ = 0x05, MPU9X50_FILTER_5HZ = 0x06
}
 Possible low pass filter values.
 

Functions

int mpu9x50_init (mpu9x50_t *dev, const mpu9x50_params_t *params)
 Initialize the given MPU9X50 device. More...
 
int mpu9x50_set_accel_power (mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
 Enable or disable accelerometer power. More...
 
int mpu9x50_set_gyro_power (mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
 Enable or disable gyroscope power. More...
 
int mpu9x50_set_compass_power (mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
 Enable or disable compass power. More...
 
int mpu9x50_read_gyro (const mpu9x50_t *dev, mpu9x50_results_t *output)
 Read angular speed values from the given MPU9X50 device, returned in dps. More...
 
int mpu9x50_read_accel (const mpu9x50_t *dev, mpu9x50_results_t *output)
 Read acceleration values from the given MPU9X50 device, returned in mG. More...
 
int mpu9x50_read_compass (const mpu9x50_t *dev, mpu9x50_results_t *output)
 Read magnetic field values from the given MPU9X50 device, returned in mikroT. More...
 
int mpu9x50_read_temperature (const mpu9x50_t *dev, int32_t *output)
 Read temperature value from the given MPU9X50 device, returned in m°C. More...
 
int mpu9x50_set_gyro_fsr (mpu9x50_t *dev, mpu9x50_gyro_ranges_t fsr)
 Set the full-scale range for raw gyroscope data. More...
 
int mpu9x50_set_accel_fsr (mpu9x50_t *dev, mpu9x50_accel_ranges_t fsr)
 Set the full-scale range for raw accelerometer data. More...
 
int mpu9x50_set_sample_rate (mpu9x50_t *dev, uint16_t rate)
 Set the rate at which the gyroscope and accelerometer data is sampled. More...
 
int mpu9x50_set_compass_sample_rate (mpu9x50_t *dev, uint8_t rate)
 Set the rate at which the compass data is sampled. More...
 

Sample rate macro definitions

#define MPU9X50_MIN_SAMPLE_RATE   (4)
 
#define MPU9X50_MAX_SAMPLE_RATE   (1000)
 
#define MPU9X50_DEFAULT_SAMPLE_RATE   (50)
 
#define MPU9X50_MIN_COMP_SMPL_RATE   (1)
 
#define MPU9X50_MAX_COMP_SMPL_RATE   (100)
 

Power Management 1 register macros

#define MPU9X50_PWR_WAKEUP   (0x00)
 
#define MPU9X50_PWR_PLL   (0x01)
 
#define MPU9X50_PWR_RESET   (0x80)
 

Power Management 2 register macros

#define MPU9X50_PWR_GYRO   (0x07)
 
#define MPU9X50_PWR_ACCEL   (0x38)
 

Sleep times in microseconds

#define MPU9X50_COMP_MODE_SLEEP_US   (1000)
 
#define MPU9X50_BYPASS_SLEEP_US   (3000)
 
#define MPU9X50_PWR_CHANGE_SLEEP_US   (50000)
 
#define MPU9X50_RESET_SLEEP_US   (100000)
 

MPU-9X50 compass operating modes and reg values

#define MPU9X50_COMP_POWER_DOWN   (0x00)
 
#define MPU9X50_COMP_SINGLE_MEASURE   (0x01)
 
#define MPU9X50_COMP_SELF_TEST   (0x08)
 
#define MPU9X50_COMP_FUSE_ROM   (0x0F)
 
#define MPU9X50_COMP_WHOAMI_ANSWER   (0x48)
 MPU9X50 WHO_AM_I answer register.