Paparazzi UAS
v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
Driver for the MPU-9250 using I2C. More...
#include "std.h"
#include "math/pprz_algebra_int.h"
#include "mcu_periph/i2c.h"
#include "peripherals/mpu9250.h"
#include "peripherals/ak8963.h"
Go to the source code of this file.
Data Structures | |
struct | Mpu9250_I2c |
union | Mpu9250_I2c.data_accel |
union | Mpu9250_I2c.data_rates |
Macros | |
#define | IMU_MPU9250_READ_MAG TRUE |
#define | MPU9250_BUFFER_EXT_LEN 16 |
Functions | |
void | mpu9250_i2c_init (struct Mpu9250_I2c *mpu, struct i2c_periph *i2c_p, uint8_t addr) |
void | mpu9250_i2c_start_configure (struct Mpu9250_I2c *mpu) |
void | mpu9250_i2c_read (struct Mpu9250_I2c *mpu) |
void | mpu9250_i2c_event (struct Mpu9250_I2c *mpu) |
static void | mpu9250_i2c_periodic (struct Mpu9250_I2c *mpu) |
convenience function: read or start configuration if not already initialized More... | |
Driver for the MPU-9250 using I2C.
Definition in file mpu9250_i2c.h.
struct Mpu9250_I2c |
Definition at line 59 of file mpu9250_i2c.h.
Data Fields | ||
---|---|---|
struct Ak8963 | akm | "internal" magnetometer |
struct Mpu9250Config | config | |
union Mpu9250_I2c | data_accel | |
volatile bool | data_available | data ready flag |
uint8_t | data_ext[MPU9250_BUFFER_EXT_LEN] | |
union Mpu9250_I2c | data_rates | |
struct i2c_periph * | i2c_p | |
struct i2c_transaction | i2c_trans | |
enum Mpu9250I2cSlaveInitStatus | slave_init_status |
union Mpu9250_I2c.data_accel |
Definition at line 63 of file mpu9250_i2c.h.
Data Fields | ||
---|---|---|
int16_t | value[3] | accel data values accessible by channel index |
struct Int16Vect3 | vect | accel data vector in accel coordinate system |
union Mpu9250_I2c.data_rates |
Definition at line 67 of file mpu9250_i2c.h.
Data Fields | ||
---|---|---|
struct Int16Rates | rates | rates data as angular rates in gyro coordinate system |
int16_t | value[3] | rates data values accessible by channel index |
#define IMU_MPU9250_READ_MAG TRUE |
Definition at line 40 of file mpu9250_i2c.h.
#define MPU9250_BUFFER_EXT_LEN 16 |
Definition at line 44 of file mpu9250_i2c.h.
Definition at line 46 of file mpu9250_i2c.h.
void mpu9250_i2c_event | ( | struct Mpu9250_I2c * | mpu | ) |
Definition at line 106 of file mpu9250_i2c.c.
References ak8963_event(), Mpu9250_I2c::akm, i2c_transaction::buf, Mpu9250_I2c::config, Mpu9250_I2c::data_accel, Mpu9250_I2c::data_available, Mpu9250_I2c::data_ext, Mpu9250_I2c::data_rates, FALSE, Mpu9250Config::i2c_bypass, Mpu9250_I2c::i2c_trans, I2CTransDone, I2CTransFailed, I2CTransSuccess, Mpu9250Config::init_status, Mpu9250Config::initialized, Int16FromBuf, MPU9250_CONF_UNINIT, mpu9250_i2c_write_to_reg(), mpu9250_send_config(), Mpu9250Config::nb_bytes, Mpu9250Config::nb_slaves, and i2c_transaction::status.
Referenced by imu_mpu9250_event().
void mpu9250_i2c_init | ( | struct Mpu9250_I2c * | mpu, |
struct i2c_periph * | i2c_p, | ||
uint8_t | addr | ||
) |
Definition at line 33 of file mpu9250_i2c.c.
References ak8963_init(), Mpu9250_I2c::akm, Mpu9250_I2c::config, Mpu9250I2cSlave::configure, Mpu9250_I2c::data_available, Mpu9250Config::i2c_bypass, Mpu9250_I2c::i2c_p, Mpu9250_I2c::i2c_trans, I2CTransDone, imu_mpu9250_configure_mag_slave(), Mpu9250Config::init_status, Mpu9250Config::initialized, MPU9250_CONF_UNINIT, MPU9250_I2C_CONF_UNINIT, MPU9250_MAG_ADDR, mpu9250_set_default_config(), Mpu9250Config::nb_slaves, i2c_transaction::slave_addr, Mpu9250_I2c::slave_init_status, Mpu9250Config::slaves, and i2c_transaction::status.
Referenced by imu_mpu9250_init().
|
inlinestatic |
convenience function: read or start configuration if not already initialized
Definition at line 86 of file mpu9250_i2c.h.
References Mpu9250_I2c::config, Mpu9250Config::initialized, mpu9250_i2c_read(), and mpu9250_i2c_start_configure().
Referenced by imu_mpu9250_periodic().
void mpu9250_i2c_read | ( | struct Mpu9250_I2c * | mpu | ) |
Definition at line 87 of file mpu9250_i2c.c.
References ak8963_read(), Mpu9250_I2c::akm, i2c_transaction::buf, Mpu9250_I2c::config, Mpu9250_I2c::i2c_p, Mpu9250_I2c::i2c_trans, i2c_transceive(), I2CTransDone, Mpu9250Config::initialized, MPU9250_REG_INT_STATUS, Mpu9250Config::nb_bytes, i2c_transaction::slave_addr, and i2c_transaction::status.
Referenced by mpu9250_i2c_periodic().
void mpu9250_i2c_start_configure | ( | struct Mpu9250_I2c * | mpu | ) |
Definition at line 77 of file mpu9250_i2c.c.
References Mpu9250_I2c::config, Mpu9250_I2c::i2c_trans, I2CTransDone, I2CTransSuccess, Mpu9250Config::init_status, MPU9250_CONF_UNINIT, mpu9250_i2c_write_to_reg(), mpu9250_send_config(), and i2c_transaction::status.
Referenced by mpu9250_i2c_periodic().