Loading...
Searching...
No Matches
mpu9x50.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Freie Universität Berlin
3 * SPDX-FileCopyrightText: 2019 HAW Hamburg
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
24
25#include "periph/i2c.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
35#define MPU9X50_MIN_SAMPLE_RATE (4)
36#define MPU9X50_MAX_SAMPLE_RATE (1000)
37#define MPU9X50_DEFAULT_SAMPLE_RATE (50)
38#define MPU9X50_MIN_COMP_SMPL_RATE (1)
39#define MPU9X50_MAX_COMP_SMPL_RATE (100)
41
45typedef enum {
46 MPU9X50_SENSOR_PWR_OFF = 0x00,
47 MPU9X50_SENSOR_PWR_ON = 0x01,
49
53typedef enum {
54 MPU9X50_HW_ADDR_HEX_68 = 0x68,
55 MPU9X50_HW_ADDR_HEX_69 = 0x69,
57
61typedef enum {
62 MPU9X50_COMP_ADDR_HEX_0C = 0x0C,
63 MPU9X50_COMP_ADDR_HEX_0D = 0x0D,
64 MPU9X50_COMP_ADDR_HEX_0E = 0x0E,
65 MPU9X50_COMP_ADDR_HEX_0F = 0x0F,
67
71typedef enum {
72 MPU9X50_GYRO_FSR_250DPS = 0x00,
73 MPU9X50_GYRO_FSR_500DPS = 0x01,
74 MPU9X50_GYRO_FSR_1000DPS = 0x02,
75 MPU9X50_GYRO_FSR_2000DPS = 0x03,
77
81typedef enum {
82 MPU9X50_ACCEL_FSR_2G = 0x00,
83 MPU9X50_ACCEL_FSR_4G = 0x01,
84 MPU9X50_ACCEL_FSR_8G = 0x02,
85 MPU9X50_ACCEL_FSR_16G = 0x03,
87
91typedef enum {
92 MPU9X50_FILTER_188HZ = 0x01,
93 MPU9X50_FILTER_98HZ = 0x02,
94 MPU9X50_FILTER_42HZ = 0x03,
95 MPU9X50_FILTER_20HZ = 0x04,
96 MPU9X50_FILTER_10HZ = 0x05,
97 MPU9X50_FILTER_5HZ = 0x06,
99
103typedef struct {
104 int16_t x_axis;
105 int16_t y_axis;
106 int16_t z_axis;
108
124
128typedef struct {
130 uint8_t addr;
131 uint8_t comp_addr;
132 uint16_t sample_rate;
134
142
152int mpu9x50_init(mpu9x50_t *dev, const mpu9x50_params_t *params);
153
164
175
186
201
216
230
244int mpu9x50_read_temperature(const mpu9x50_t *dev, int32_t *output);
245
257
269
284int mpu9x50_set_sample_rate(mpu9x50_t *dev, uint16_t rate);
285
302
303#ifdef __cplusplus
304}
305#endif
306
int mpu9x50_read_temperature(const mpu9x50_t *dev, int32_t *output)
Read temperature value from the given MPU9X50 device, returned in m°C.
mpu9x50_lpf_t
Possible low pass filter values.
Definition mpu9x50.h:91
int mpu9x50_set_compass_power(mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
Enable or disable compass power.
int mpu9x50_read_compass(const mpu9x50_t *dev, mpu9x50_results_t *output)
Read magnetic field values from the given MPU9X50 device, returned in mikroT.
int mpu9x50_set_sample_rate(mpu9x50_t *dev, uint16_t rate)
Set the rate at which the gyroscope and accelerometer data is sampled.
mpu9x50_pwr_t
Power enum values.
Definition mpu9x50.h:45
mpu9x50_comp_addr_t
Possible compass addresses (wiring specific)
Definition mpu9x50.h:61
int mpu9x50_read_accel(const mpu9x50_t *dev, mpu9x50_results_t *output)
Read acceleration values from the given MPU9X50 device, returned in mG.
mpu9x50_hw_addr_t
Possible MPU-9X50 hardware addresses (wiring specific)
Definition mpu9x50.h:53
int mpu9x50_set_gyro_power(mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
Enable or disable gyroscope power.
mpu9x50_accel_ranges_t
Possible full scale ranges for the accelerometer.
Definition mpu9x50.h:81
int mpu9x50_set_compass_sample_rate(mpu9x50_t *dev, uint8_t rate)
Set the rate at which the compass data is sampled.
int mpu9x50_set_accel_fsr(mpu9x50_t *dev, mpu9x50_accel_ranges_t fsr)
Set the full-scale range for raw accelerometer data.
int mpu9x50_init(mpu9x50_t *dev, const mpu9x50_params_t *params)
Initialize the given MPU9X50 device.
int mpu9x50_set_gyro_fsr(mpu9x50_t *dev, mpu9x50_gyro_ranges_t fsr)
Set the full-scale range for raw gyroscope data.
int mpu9x50_set_accel_power(mpu9x50_t *dev, mpu9x50_pwr_t pwr_conf)
Enable or disable accelerometer power.
mpu9x50_gyro_ranges_t
Possible full scale ranges for the gyroscope.
Definition mpu9x50.h:71
int mpu9x50_read_gyro(const mpu9x50_t *dev, mpu9x50_results_t *output)
Read angular speed values from the given MPU9X50 device, returned in dps.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
Device initialization parameters.
Definition mpu9x50.h:128
i2c_t i2c
I2C device which is used.
Definition mpu9x50.h:129
uint8_t comp_addr
Address of the MPU-9X50s compass.
Definition mpu9x50.h:131
uint16_t sample_rate
Sample rate.
Definition mpu9x50.h:132
uint8_t addr
Hardware address of the MPU-9X50.
Definition mpu9x50.h:130
MPU-9X50 result vector struct.
Definition mpu9x50.h:103
int16_t z_axis
Z-Axis measurement result.
Definition mpu9x50.h:106
int16_t x_axis
X-Axis measurement result.
Definition mpu9x50.h:104
int16_t y_axis
Y-Axis measurement result.
Definition mpu9x50.h:105
Configuration struct for the MPU-9X50 sensor.
Definition mpu9x50.h:112
uint8_t compass_x_adj
Compass X-Axis sensitivity adjustment value.
Definition mpu9x50.h:120
mpu9x50_accel_ranges_t accel_fsr
Configured accel full-scale range.
Definition mpu9x50.h:117
uint8_t compass_z_adj
Compass Z-Axis sensitivity adjustment value.
Definition mpu9x50.h:122
uint16_t sample_rate
Configured sample rate for accel and gyro.
Definition mpu9x50.h:118
uint8_t compass_y_adj
Compass Y-Axis sensitivity adjustment value.
Definition mpu9x50.h:121
mpu9x50_gyro_ranges_t gyro_fsr
Configured gyro full-scale range.
Definition mpu9x50.h:116
mpu9x50_pwr_t accel_pwr
Accel power status (on/off)
Definition mpu9x50.h:113
mpu9x50_pwr_t compass_pwr
Compass power status (on/off)
Definition mpu9x50.h:115
mpu9x50_pwr_t gyro_pwr
Gyro power status (on/off)
Definition mpu9x50.h:114
uint8_t compass_sample_rate
Configured compass sample rate.
Definition mpu9x50.h:119
Device descriptor for the MPU9X50 sensor.
Definition mpu9x50.h:138
mpu9x50_params_t params
Device initialization parameters.
Definition mpu9x50.h:139
mpu9x50_status_t conf
Device configuration.
Definition mpu9x50.h:140