8个版本 (2个稳定版)
1.1.0 | 2024年6月24日 |
---|---|
1.0.0 | 2024年1月22日 |
0.3.0 | 2023年7月17日 |
0.2.2 | 2021年9月21日 |
0.1.0 | 2020年9月13日 |
#191 in 嵌入式开发
每月587次下载
在2个crate中使用(通过microbit-bsp)
83KB
2K SLoC
Rust LSM303AGR 超低功耗 3D 加速度计和 3D 磁力计驱动程序
这是一个适用于LSM303AGR超紧凑高性能电子罗盘模块的平台无关Rust驱动程序:使用embedded-hal
特性实现超低功耗3D加速度计和3D磁力计。如果启用了async
特性,此驱动程序还支持embedded-hal-async
特性。
此驱动程序允许您
- 通过I2C或SPI连接。见:
new_with_i2c()
。 - 初始化设备。见:
init()
。 - 加速度计
- 读取测量的加速度。见:
acceleration()
。 - 获取加速度计状态。见:
accel_status()
。 - 设置加速度计模式和输出数据率。见:
set_accel_mode_and_odr()
。 - 设置加速度计量程。见:
set_accel_scale()
。 - 获取加速度计ID。见:
accelerometer_id()
。 - 获取温度传感器状态。见:
temperature_status()
。 - 读取测量的温度。见:
temperature()
。 - 配置FIFO。见:
acc_set_fifo_mode()
。 - 启用/禁用中断。见:
acc_enable_interrupt()
。
- 读取测量的加速度。见:
- 磁力计
- 获取磁力计状态。参见:
mag_status()
。 - 切换为连续/单次模式。参见:
into_mag_continuous()
。 - 读取测量的磁场。参见:
magnetic_field()
。 - 设置磁力计模式和输出数据速率。参见:
set_mag_mode_and_odr()
。 - 获取磁力计ID。参见:
magnetometer_id()
。 - 启用/禁用磁力计内置偏移消除。参见:
enable_mag_offset_cancellation()
。 - 启用/禁用磁力计低通滤波器。参见:
mag_enable_low_pass_filter()
。
- 获取磁力计状态。参见:
LSM303AGR是一款超低功耗高性能系统级封装,内置3D数字线性加速度传感器和3D数字磁力传感器。LSM303AGR具有±2g/±4g/±8g/±16g的线性加速度全量程和±50高斯磁场动态范围。
LSM303AGR包括支持标准、快速模式、快速模式+和高速(100 kHz、400 kHz、1 MHz和3.4 MHz)的I2C串行总线接口以及SPI串行标准接口。
系统可以配置为生成自由下落、运动检测和磁场检测的中断信号。
可以分别启用或关闭磁场和加速度计模块的电源管理模式。
用法
要使用此驱动程序,导入此crate和embedded_hal
实现,然后实例化设备。
请在此存储库中查找使用硬件的附加示例:driver-examples
use linux_embedded_hal::{Delay, I2cdev};
use lsm303agr::{AccelMode, AccelOutputDataRate, Lsm303agr};
fn main() {
let dev = I2cdev::new("/dev/i2c-1").unwrap();
let mut sensor = Lsm303agr::new_with_i2c(dev);
sensor.init().unwrap();
sensor
.set_accel_mode_and_odr(&mut Delay, AccelMode::Normal, AccelOutputDataRate::Hz50)
.unwrap();
loop {
if sensor.accel_status().unwrap().xyz_new_data() {
let data = sensor.acceleration().unwrap();
println!(
"Acceleration: x {} y {} z {}",
data.x_mg(),
data.y_mg(),
data.z_mg()
);
}
}
}
有关在micro:bit V2上使用此驱动程序的异步支持的示例,请参阅microbit-v2示例。
支持
有关问题、问题、功能请求和其他更改,请提交github项目中的问题。
许可
许可方式如下:
- Apache License,版本2.0(《LICENSE-APACHE》或http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交的任何有意提交以包含在本作品中并由Apache-2.0许可定义的任何贡献,均应如上所述双重许可,不附加任何额外条款或条件。
依赖项
~1.5MB
~40K SLoC