#imu #gyroscope #accelerometer #嵌入式HAL驱动程序 #惯性

无需std bmi160

适用于BMI160惯性测量单元(IMU)的平台无关Rust驱动程序

5个版本 (2个稳定版)

1.1.0 2024年5月2日
1.0.0 2024年1月17日
0.1.2 2023年3月22日
0.1.1 2023年3月17日
0.1.0 2020年2月8日

#126硬件支持

每月21次下载
用于 aimu

MIT/Apache

36KB
662

Rust BMI160 惯性测量单元驱动程序

crates.io Docs MSRV Build Status Coverage Status

这是一个使用嵌入式-hal特质,针对BMI160小型、低功耗惯性测量单元的平台无关Rust驱动程序。

此驱动程序允许您

  • 获取最新的传感器数据。见:data()
  • 获取按配置范围缩放的最新传感器数据。见:data_scaled()
  • 设置加速度计、陀螺仪和磁力计的电源模式。见:set_accel_power_mode()
  • 设置加速度计和陀螺仪的量程,见:set_accel_range()set_gyro_range()
  • 获取传感器状态。见:status()
  • 获取电源模式。见:power_mode()
  • 获取芯片ID。见:chip_id()

BMI160是一种惯性测量单元(IMU),由先进的3轴低重力加速度计和低功耗3轴陀螺仪组成。它专为低功耗、高精度的6轴和9轴应用而设计,适用于手机、平板电脑、可穿戴设备、遥控器、游戏手柄、头戴式设备和玩具。

BMI160采用紧凑的14针2.5 × 3.0 × 0.83 mm³ LGA封装。当加速度计和陀螺仪处于全操作模式时,功耗通常为925 μA,使得电池供电设备能够实现始终开启的应用。

可以连接更多博世传感技术公司的传感器,例如地磁传感器(BMM150),作为从设备通过二级I2C接口连接。在这种配置下,BMI160控制外部传感器的数据采集,并将所有传感器的同步数据存储在寄存器数据中,并可额外存储在内置FIFO中。

BMI160除了用于连接主机的灵活的主接口(I2C或SPI)外,还提供了一个额外的二级接口。该二级接口可以用SPI模式与摄像头模块配合使用,用于OIS(光学图像稳定)应用,或在高级游戏用例中使用。

数据表

用法

要使用此驱动程序,请导入此crate和一个embedded_hal实现,然后实例化设备。

请在此存储库中找到使用硬件的更多示例:driver-examples

extern crate linux_embedded_hal as hal;
use bmi160::{AccelerometerPowerMode, Bmi160, GyroscopePowerMode, SensorSelector, SlaveAddr};

fn main() {
    let dev = hal::I2cdev::new("/dev/i2c-1").unwrap();
    let address = SlaveAddr::default();
    let mut imu = Bmi160::new_with_i2c(dev, address);
    imu.set_accel_power_mode(AccelerometerPowerMode::Normal)
        .unwrap();
    imu.set_gyro_power_mode(GyroscopePowerMode::Normal).unwrap();
    loop {
        let data = imu.data(SensorSelector::new().accel().gyro()).unwrap();
        let accel = data.accel.unwrap();
        let gyro = data.gyro.unwrap();
        println!(
            "Accelerometer: x {:5} y {:5} z {:5}, \
             Gyroscope: x {:5} y {:5} z {:5}",
            accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z
        );
    }
}

最低支持的Rust版本(MSRV)

此crate保证可以在稳定Rust 1.62及更高版本上编译。它可能可以用旧版本编译,但新补丁版本可能会有所变化。

支持

有关问题、问题、功能请求和其他更改,请在github项目中提交问题

许可证

根据您的选择,许可如下:

贡献

除非您明确声明,否则您有意提交的任何贡献,根据Apache-2.0许可证定义的,应按上述方式双许可,不附加任何额外条款或条件。

依赖关系

~56KB