#sensor #accelerator #motion #嵌入式-hal驱动

无需std mma8x5x

适用于MMA8451、MMA8452、MMA8453、MMA8652和MMA8653三轴加速度传感器的跨平台Rust驱动程序

2个版本

0.1.1 2022年9月15日
0.1.0 2020年8月13日

#6 in #motion

每月31次下载

MIT/Apache

74KB
1.5K SLoC

Rust MMA8x5x 三轴加速度计驱动程序

crates.io Docs Build Status Coverage Status

这是一个使用embedded-hal traits的跨平台Rust驱动程序,适用于MMA8451Q、MMA8452Q、MMA8453Q、MMA8652FC和MMA8653FC三轴加速度传感器。

此驱动程序允许您

  • 更改模式为活动/待机。见:into_active()
  • 读取原始未缩放的测量值。见:read_unscaled()
  • 读取测量值。见:read()
  • 读取数据状态。见:data_status()
  • 读取系统工作模式。见:system_mode()
  • 设置G刻度。见:set_scale()
  • 设置数据速率。见 set_data_rate()
  • 设置唤醒功率模式。见 set_wake_power_mode()
  • 设置睡眠功率模式。见 set_sleep_power_mode()
  • 设置读取模式。见:set_read_mode()
  • 设置偏移校正。见:set_offset_correction()
  • 读取设备ID。见:device_id()
  • 重置设备。见:reset()
  • 启用/禁用自检模式。见:enable_self_test()
  • 自动休眠/唤醒
    • 启用/禁用自动休眠/唤醒。见:enable_auto_sleep()
    • 设置自动休眠数据速率。见:set_auto_sleep_data_rate()
    • 设置自动休眠计数。见:set_auto_sleep_count()
  • 横屏/竖屏检测
    • 启用/禁用横竖屏检测。参见:enable_portrait_landscape_detection()
    • 设置防抖计数器模式。参见:set_debounce_counter_mode()
    • 设置防抖计数器。参见:set_debounce_counter()
    • 读取横竖屏状态。参见:portrait_landscape_status()
  • 中断
    • 启用/禁用中断。参见:set_enabled_interrupts()
    • 设置中断引脚路由。参见:set_interrupt_pin_routes()
    • 设置中断引脚极性。参见:set_interrupt_pin_polarity()
    • 设置中断引脚配置。参见:set_interrupt_pin_configuration()
    • 设置唤醒设备的中断。参见:set_wake_interrupts()
    • 读取中断状态。参见:interrupt_status()

设备

这些设备是智能的、低功耗的、三轴、电容式微机械加速度计,具有10/12/14位分辨率。加速度计集成了可灵活用户编程的嵌入式功能,可配置为中断引脚。嵌入式中断功能通过减轻主处理器的持续轮询数据负担,实现整体功耗节省。可以访问低通或高通滤波数据,这最大限度地减少了冲击检测所需的数据分析,并加快了过渡。设备可以被配置为从可配置的嵌入式功能的任何组合中生成惯性唤醒中断信号,使设备能够在非活动期间以低功耗模式监控惯性事件。

功能比较

功能 MMA8451 MMA8452 MMA8453 MMA8652 MMA8653
分辨率 14位 12位 10位 12位 10位
2g模式下的灵敏度(counts/g) 4096 1024 256 1024 256
32级FIFO - - -
低功耗模式
自动唤醒
自动睡眠
高通滤波器 -
低通滤波器
带有高通滤波器的瞬态检测 -
固定方向检测 -
可编程方向检测 - - -
数据就绪中断
单次点击中断 -
双击中断 -
方向点击中断 -
自由落体中断
带方向的运动中断 -
可选择的地址引脚 - -

(不可用的功能用“-”标记,这比是/否更容易阅读)

文档

使用方法

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

大多数设置只能在设备处于待机模式时更改。然后可以将模式更改为活动模式并读取加速度测量值。

请在此存储库中找到使用硬件的附加示例:[driver-examples](https://github.com/eldruin/driver-examples)

use linux_embedded_hal::I2cdev;
use mma8x5x::Mma8x5x;

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let sensor = Mma8x5x::new_mma8653(dev);
    let mut sensor = sensor.into_active().ok().unwrap();
    loop {
        let accel = sensor.read().unwrap();
        println!("Acceleration: {:?}", accel);
    }
}

支持

有关问题、问题、功能请求和其他更改,请提交[github项目中的问题](https://github.com/eldruin/mma8x5x-rs/issues)。

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,应按上述方式双许可,无需任何额外的条款或条件。

依赖关系

~71KB