# `mpu9250` > no_std driver for the MPU9250 (and some MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU). [![Build Status](https://travis-ci.org/copterust/mpu9250.svg?branch=master)](https://travis-ci.org/copterust/mpu9250) ## What works - 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. ## Supported chips * `MPU9250` -- `Imu` and `Marg`; * `MPU9255` -- `Imu` and `Marg`; * `MPU6500` -- `Imu` only. ### Notes > MPU9255 has some extra capability in the ASIC that allows some additional > gesture control but otherwise this chip is identical to the MPU9250. ## Basic usage Include [library](https://crates.io/crates/mpu9250) as a dependency in your Cargo.toml [![crates.io](http://meritbadge.herokuapp.com/mpu9250?style=flat-square)](https://crates.io/crates/mpu9250): ``` [dependencies.mpu9250] version = "" ``` Use embedded-hal implementation to get SPI, NCS, and delay, then create mpu handle: ```rust 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); ``` ## More examples Number of examples can be found in [proving-ground](https://github.com/copterust/proving-ground) repo. Examples include: reading temperature, calibrating magnetrometer, reading all sensors. ## Experimental I2C support 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, MODE>` will change to `Mpu9250, Imu>`. The MPU9250 currently supports an IMU-only configuration. See the [BeagleBone Blue example](examples/bbblue.rs) for a demonstration. Support for the AK8963 is a WPI. ## Documentation API Docs available on [docs.rs](https://docs.rs/mpu9250). ## License Licensed under either of - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) - MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Testimonials Started off as a fork of [japaric's mpu9250 repo](https://github.com/japaric/mpu9250).