#imu #gyroscope #accelerometer #embedded-hal-driver #spi-interface #inertial

no-std bmi323

BMI323惯性测量单元(IMU)的跨平台Rust驱动程序

1个不稳定版本

0.1.0 2024年7月6日

#333嵌入式开发

Apache-2.0

30KB
579

BMI323 Rust驱动程序

这是一个用于博世BMI323惯性测量单元(IMU)的Rust驱动程序。BMI323是一款高度集成、低功耗的IMU,可提供精确的加速度和角速率测量。

特性

  • 支持I2C和SPI接口
  • 可配置加速度计和陀螺仪设置
  • 读取原始和缩放传感器数据
  • 错误处理和设备初始化

用法

将此内容添加到您的Cargo.toml

[dependencies]
bmi323 = "0.1.0"  # Replace with the actual version

以下是如何使用该驱动程序的基本示例

use bmi323::{Bmi323, AccelConfig, GyroConfig, OutputDataRate, AccelerometerRange, GyroscopeRange};
use embedded_hal::blocking::i2c::I2c;

fn main() {
    // Initialize your I2C or SPI interface
    let i2c = // ... initialize your I2C interface
    let delay = // ... initialize your delay provider

    // Create a new BMI323 instance
    let mut imu = Bmi323::new_with_i2c(i2c, 0x68, delay);

    // Initialize the device
    imu.init().unwrap();

    // Configure accelerometer
    let accel_config = AccelConfig::builder()
        .odr(OutputDataRate::Odr100hz)
        .range(AccelerometerRange::G8)
        .build();
    imu.set_accel_config(accel_config).unwrap();

    // Configure gyroscope
    let gyro_config = GyroConfig::builder()
        .odr(OutputDataRate::Odr100hz)
        .range(GyroscopeRange::DPS2000)
        .build();
    imu.set_gyro_config(gyro_config).unwrap();

    loop {
        // Read accelerometer data
        let accel_data = imu.read_accel_data_scaled().unwrap();
        println!("Acceleration: x={}, y={}, z={}", accel_data.x, accel_data.y, accel_data.z);

        // Read gyroscope data
        let gyro_data = imu.read_gyro_data_scaled().unwrap();
        println!("Angular velocity: x={}, y={}, z={}", gyro_data.x, gyro_data.y, gyro_data.z);
    }

}

许可证

本项目采用Apache许可证版本2.0(《LICENSE-APACHE》或http://www.apache.org/licenses/LICENSE-2.0)。

贡献

欢迎贡献!请随时提交拉取请求。

参考

依赖关系

~56KB