7个版本
0.2.4 | 2024年7月27日 |
---|---|
0.2.3 | 2024年7月27日 |
0.1.1 | 2024年7月18日 |
#483在硬件支持
每月611次下载
85KB
1K SLoC
icm426xx
- Rust中的ICM-426xx 6轴运动传感器驱动程序
这是一个使用embedded-hal
特质的、与平台无关的ICM-426xx 6轴运动传感器Rust驱动程序。
当前支持的设备
- ICM-42688-P
我们支持I2C和SPI接口,但目前仅测试了SPI接口。欢迎提交PR!
同样,我们支持异步和阻塞接口,但目前仅测试了异步接口。
仅支持基于FIFO的、20位数据模式。如需支持其他模式,请提交问题。
使用方法
use async_std::prelude::*; // Just for the runtime
use embedded_hal_mock::eh1::spi::{Mock as SpiMock, Transaction as SpiTransaction};
use embedded_hal_mock::eh1::digital::Mock as PinMock;
use embedded_hal_mock::eh1::digital::{State as PinState, Transaction as PinTransaction};
use embedded_hal_mock::eh1::delay::NoopDelay as Delay;
#[async_std::main]
async fn main() {
let spi = SpiMock::new(&[]);
let mut pin = PinMock::new(&[PinTransaction::set(PinState::High)]);
let spidev =
embedded_hal_bus::spi::ExclusiveDevice::new_no_delay(spi, pin.clone()).unwrap();
let mut icm = icm426xx::ICM42688::new(spidev);
let mut icm = icm.initialize(Delay).await.unwrap();
let mut bank = icm.ll().bank::<{ icm426xx::register_bank::BANK0 }>();
// print WHO_AM_I register
let who_am_i = bank.who_am_i().async_read().await;
loop {
let fifo_count = icm.read_fifo_count().await;
let mut fifo_buffer = [0u32; 128];
let num_read = icm.read_fifo(&mut fifo_buffer).await.unwrap();
}
}
许可证
MIT OR Apache-2.0
依赖关系
~1.2–1.8MB
~36K SLoC