no_std driver for the MPU9250 (and some MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU).
- Reading the accelerometer, gyroscope, temperature sensor, and magnetrometer: both raw and scaled and converted values.
- Setting DLPF, reading scales, sample rate divisor.
- Reading the WHO_AM_I registers of mpu9250 and ak8963.
- Getting resolutions and factory sensitivities.
MPU9250
--Imu
andMarg
;MPU9255
--Imu
andMarg
;MPU6500
--Imu
only.
MPU9255 has some extra capability in the ASIC that allows some additional gesture control but otherwise this chip is identical to the MPU9250.
Include library as a dependency in your Cargo.toml :
[dependencies.mpu9250]
version = "<version>"
Use embedded-hal implementation to get SPI, NCS, and delay, then create mpu handle:
extern crate mpu9250; // or just use mpu9250; if 2018 edition is used.
// to create sensor with mag support and default configuration:
let mut _imu = Mpu9250::marg_default(spi, ncs, &mut delay)?;
// to create sensor without mag support and default configuration:
let mut marg = Mpu9250::imu_default(spi, ncs, &mut delay)?;
// to get all supported measurements:
let all = marg.all()?;
println!("{:?}", all);
Number of examples can be found in proving-ground repo. Examples include: reading temperature, calibrating magnetrometer, reading all sensors.
Expiremntal I2C support is enabled via i2c
feature flag. When enabled, SPI support will be deactivated
and type of mpu9250 driver will change from Mpu9250<SpiDevice<SPI, NCS>, MODE>
will change to
Mpu9250<I2cDevice<I2C>, Imu>
.
The MPU9250 currently supports an IMU-only configuration. See the BeagleBone Blue example for a demonstration. Support for the AK8963 is a WPI.
API Docs available on docs.rs.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Started off as a fork of japaric's mpu9250 repo.