Paparazzi UAS  v5.14.0_stable-0-g3f680d1
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mpu9250.h File Reference

MPU-60X0 driver common interface (I2C and SPI). More...

#include "std.h"
#include "peripherals/mpu9250_regs.h"
+ Include dependency graph for mpu9250.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Mpu9250I2cSlave
 
struct  Mpu9250Config
 

Macros

#define MPU9250_DEFAULT_SMPLRT_DIV   0
 Default sample rate divider. More...
 
#define MPU9250_DEFAULT_FS_SEL   MPU9250_GYRO_RANGE_1000
 Default gyro full scale range +- 2000°/s. More...
 
#define MPU9250_DEFAULT_AFS_SEL   MPU9250_ACCEL_RANGE_8G
 Default accel full scale range +- 16g. More...
 
#define MPU9250_DEFAULT_DLPF_ACCEL_CFG   MPU9250_DLPF_ACCEL_41HZ
 Default internal sampling (1kHz, 42Hz LP Bandwidth) More...
 
#define MPU9250_DEFAULT_DLPF_GYRO_CFG   MPU9250_DLPF_GYRO_41HZ
 Default internal sampling (1kHz, 42Hz LP Bandwidth) More...
 
#define MPU9250_DEFAULT_INT_CFG   1
 Default interrupt config: DATA_RDY_EN. More...
 
#define MPU9250_DEFAULT_CLK_SEL   1
 Default clock: PLL with X gyro reference. More...
 
#define MPU9250_I2C_NB_SLAVES   5
 
#define MPU9250_GYRO_SENS_250   0.544883
 default gyro sensitivy from the datasheet sens = 1/ [LSB/(deg/s)] * pi/180 * 2^INT32_RATE_FRAC ex: MPU with 1000 deg/s has 32.8 LSB/(deg/s) sens = 1/32.8 * pi/180 * 4096 = 2.17953 More...
 
#define MPU9250_GYRO_SENS_250_NUM   19327
 
#define MPU9250_GYRO_SENS_250_DEN   35470
 
#define MPU9250_GYRO_SENS_500   1.08977
 
#define MPU9250_GYRO_SENS_500_NUM   57663
 
#define MPU9250_GYRO_SENS_500_DEN   52913
 
#define MPU9250_GYRO_SENS_1000   2.17953
 
#define MPU9250_GYRO_SENS_1000_NUM   18271
 
#define MPU9250_GYRO_SENS_1000_DEN   8383
 
#define MPU9250_GYRO_SENS_2000   4.35906
 
#define MPU9250_GYRO_SENS_2000_NUM   36542
 
#define MPU9250_GYRO_SENS_2000_DEN   8383
 
#define MPU9250_ACCEL_SENS_2G   0.613125
 default accel sensitivy from the datasheet sens = 9.81 [m/s^2] / [LSB/g] * 2^INT32_ACCEL_FRAC ex: MPU with 8g has 4096 LSB/g sens = 9.81 [m/s^2] / 4096 [LSB/g] * 2^INT32_ACCEL_FRAC = 2.4525 More...
 
#define MPU9250_ACCEL_SENS_2G_NUM   981
 
#define MPU9250_ACCEL_SENS_2G_DEN   1600
 
#define MPU9250_ACCEL_SENS_4G   1.22625
 
#define MPU9250_ACCEL_SENS_4G_NUM   981
 
#define MPU9250_ACCEL_SENS_4G_DEN   800
 
#define MPU9250_ACCEL_SENS_8G   2.4525
 
#define MPU9250_ACCEL_SENS_8G_NUM   981
 
#define MPU9250_ACCEL_SENS_8G_DEN   400
 
#define MPU9250_ACCEL_SENS_16G   4.905
 
#define MPU9250_ACCEL_SENS_16G_NUM   981
 
#define MPU9250_ACCEL_SENS_16G_DEN   200
 

Typedefs

typedef void(* Mpu9250ConfigSet )(void *mpu, uint8_t _reg, uint8_t _val)
 Configuration function prototype. More...
 
typedef bool(* Mpu9250I2cSlaveConfigure )(Mpu9250ConfigSet mpu_set, void *mpu)
 function prototype for configuration of a single I2C slave More...
 

Enumerations

enum  Mpu9250ConfStatus {
  MPU9250_CONF_UNINIT, MPU9250_CONF_RESET, MPU9250_CONF_USER_RESET, MPU9250_CONF_PWR,
  MPU9250_CONF_SD, MPU9250_CONF_DLPF_ACCEL, MPU9250_CONF_DLPF_GYRO, MPU9250_CONF_GYRO,
  MPU9250_CONF_ACCEL, MPU9250_CONF_I2C_SLAVES, MPU9250_CONF_INT_ENABLE, MPU9250_CONF_DONE
}
 

Functions

void mpu9250_set_default_config (struct Mpu9250Config *c)
 
void mpu9250_send_config (Mpu9250ConfigSet mpu_set, void *mpu, struct Mpu9250Config *config)
 Configuration sequence called once before normal use. More...
 
bool mpu9250_configure_i2c_slaves (Mpu9250ConfigSet mpu_set, void *mpu)
 Configure I2C slaves of the MPU. More...
 

Variables

const float MPU9250_GYRO_SENS [4]
 
const int32_t MPU9250_GYRO_SENS_FRAC [4][2]
 
const float MPU9250_ACCEL_SENS [4]
 
const int32_t MPU9250_ACCEL_SENS_FRAC [4][2]
 

Detailed Description

MPU-60X0 driver common interface (I2C and SPI).

Definition in file mpu9250.h.


Data Structure Documentation

struct Mpu9250I2cSlave

Definition at line 122 of file mpu9250.h.

Data Fields
Mpu9250I2cSlaveConfigure configure
struct Mpu9250Config

Definition at line 126 of file mpu9250.h.

+ Collaboration diagram for Mpu9250Config:
Data Fields
enum Mpu9250AccelRanges accel_range g Range
uint8_t clk_sel Clock select.
enum Mpu9250DLPFAccel dlpf_accel_cfg Digital Low Pass Filter for accelerometer.
enum Mpu9250DLPFGyro dlpf_gyro_cfg Digital Low Pass Filter for gyroscope.
bool drdy_int_enable Enable Data Ready Interrupt.
enum Mpu9250GyroRanges gyro_range deg/s Range
bool i2c_bypass Bypass MPU I2C.

Only effective if using the I2C implementation.

enum Mpu9250MstClk i2c_mst_clk MPU I2C master clock speed.
uint8_t i2c_mst_delay MPU I2C slaves delayed sample rate.
enum Mpu9250ConfStatus init_status init status
bool initialized config done flag
uint8_t nb_bytes number of bytes to read starting with MPU9250_REG_INT_STATUS
uint8_t nb_slave_init number of already configured/initialized slaves
uint8_t nb_slaves number of used I2C slaves
struct Mpu9250I2cSlave slaves[MPU9250_I2C_NB_SLAVES] I2C slaves.
uint8_t smplrt_div Sample rate divider.

Macro Definition Documentation

#define MPU9250_ACCEL_SENS_16G   4.905

Definition at line 92 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_16G_DEN   200

Definition at line 94 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_16G_NUM   981

Definition at line 93 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_2G   0.613125

default accel sensitivy from the datasheet sens = 9.81 [m/s^2] / [LSB/g] * 2^INT32_ACCEL_FRAC ex: MPU with 8g has 4096 LSB/g sens = 9.81 [m/s^2] / 4096 [LSB/g] * 2^INT32_ACCEL_FRAC = 2.4525

Definition at line 83 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_2G_DEN   1600

Definition at line 85 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_2G_NUM   981

Definition at line 84 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_4G   1.22625

Definition at line 86 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_4G_DEN   800

Definition at line 88 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_4G_NUM   981

Definition at line 87 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_8G   2.4525

Definition at line 89 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_8G_DEN   400

Definition at line 91 of file mpu9250.h.

#define MPU9250_ACCEL_SENS_8G_NUM   981

Definition at line 90 of file mpu9250.h.

#define MPU9250_DEFAULT_AFS_SEL   MPU9250_ACCEL_RANGE_8G

Default accel full scale range +- 16g.

Definition at line 40 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_DEFAULT_CLK_SEL   1

Default clock: PLL with X gyro reference.

Definition at line 48 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_DEFAULT_DLPF_ACCEL_CFG   MPU9250_DLPF_ACCEL_41HZ

Default internal sampling (1kHz, 42Hz LP Bandwidth)

Definition at line 42 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_DEFAULT_DLPF_GYRO_CFG   MPU9250_DLPF_GYRO_41HZ

Default internal sampling (1kHz, 42Hz LP Bandwidth)

Definition at line 44 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_DEFAULT_FS_SEL   MPU9250_GYRO_RANGE_1000

Default gyro full scale range +- 2000°/s.

Definition at line 38 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_DEFAULT_INT_CFG   1

Default interrupt config: DATA_RDY_EN.

Definition at line 46 of file mpu9250.h.

#define MPU9250_DEFAULT_SMPLRT_DIV   0

Default sample rate divider.

Definition at line 36 of file mpu9250.h.

Referenced by mpu9250_set_default_config().

#define MPU9250_GYRO_SENS_1000   2.17953

Definition at line 66 of file mpu9250.h.

#define MPU9250_GYRO_SENS_1000_DEN   8383

Definition at line 68 of file mpu9250.h.

#define MPU9250_GYRO_SENS_1000_NUM   18271

Definition at line 67 of file mpu9250.h.

#define MPU9250_GYRO_SENS_2000   4.35906

Definition at line 69 of file mpu9250.h.

#define MPU9250_GYRO_SENS_2000_DEN   8383

Definition at line 71 of file mpu9250.h.

#define MPU9250_GYRO_SENS_2000_NUM   36542

Definition at line 70 of file mpu9250.h.

#define MPU9250_GYRO_SENS_250   0.544883

default gyro sensitivy from the datasheet sens = 1/ [LSB/(deg/s)] * pi/180 * 2^INT32_RATE_FRAC ex: MPU with 1000 deg/s has 32.8 LSB/(deg/s) sens = 1/32.8 * pi/180 * 4096 = 2.17953

Definition at line 60 of file mpu9250.h.

#define MPU9250_GYRO_SENS_250_DEN   35470

Definition at line 62 of file mpu9250.h.

#define MPU9250_GYRO_SENS_250_NUM   19327

Definition at line 61 of file mpu9250.h.

#define MPU9250_GYRO_SENS_500   1.08977

Definition at line 63 of file mpu9250.h.

#define MPU9250_GYRO_SENS_500_DEN   52913

Definition at line 65 of file mpu9250.h.

#define MPU9250_GYRO_SENS_500_NUM   57663

Definition at line 64 of file mpu9250.h.

#define MPU9250_I2C_NB_SLAVES   5

Definition at line 52 of file mpu9250.h.

Referenced by mpu9250_configure_i2c_slaves().

Typedef Documentation

typedef void(* Mpu9250ConfigSet)(void *mpu, uint8_t _reg, uint8_t _val)

Configuration function prototype.

Definition at line 117 of file mpu9250.h.

typedef bool(* Mpu9250I2cSlaveConfigure)(Mpu9250ConfigSet mpu_set, void *mpu)

function prototype for configuration of a single I2C slave

Definition at line 120 of file mpu9250.h.

Enumeration Type Documentation

Enumerator
MPU9250_CONF_UNINIT 
MPU9250_CONF_RESET 
MPU9250_CONF_USER_RESET 
MPU9250_CONF_PWR 
MPU9250_CONF_SD 
MPU9250_CONF_DLPF_ACCEL 
MPU9250_CONF_DLPF_GYRO 
MPU9250_CONF_GYRO 
MPU9250_CONF_ACCEL 
MPU9250_CONF_I2C_SLAVES 
MPU9250_CONF_INT_ENABLE 
MPU9250_CONF_DONE 

Definition at line 101 of file mpu9250.h.

Function Documentation

Variable Documentation

const float MPU9250_ACCEL_SENS[4]

Definition at line 46 of file mpu9250.c.

const int32_t MPU9250_ACCEL_SENS_FRAC[4][2]

Definition at line 53 of file mpu9250.c.

const float MPU9250_GYRO_SENS[4]

Definition at line 32 of file mpu9250.c.

const int32_t MPU9250_GYRO_SENS_FRAC[4][2]

Definition at line 39 of file mpu9250.c.