mpu9250 0.25.0

no_std driver for the MPU9250 & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU)
Documentation
# `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 = "<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<SpiDevice<SPI, NCS>, MODE>` will change to
`Mpu9250<I2cDevice<I2C>, 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).