3 个稳定版本
2.0.1 | 2024年3月26日 |
---|---|
2.0.0 | 2024年1月20日 |
1.0.0 | 2023年10月25日 |
#182 在 嵌入式开发
68KB
703 行
adxl345_driver2
这是一个用 Rust 编写的,基于 ADXL345 和 ADXL346 类型的 3 轴数字加速度计的硬件驱动程序,使用 Rust 中的 embedded-hal I2c
和 Spi
特性。这意味着它可以在实现 embedded-hal 特性的所有硬件层上运行。
尽管名称为 adxl345,但该驱动程序也应该可以与 ADXL346 设备一起使用,因为它们之间的唯一区别是物理封装,而不是内部工作原理。
此存储库是从 adxl345_driver 存储库派生出来的。此存储库仍然与原始 adxl345_driver 存储库兼容。
入门
您需要安装 Rust 的最新版本。
此存储库支持所有实现 embedded-hal I2c
和 Spi
特性的硬件抽象层。这包括为 Raspberry Pi 的 [rppal] 驱动程序。但它不仅限于该平台。已知可以正确工作的平台包括带有 [rppal] 的 Raspberry Pi 和带有 [esp-idf-hal] 的 ESP32。但此存储库不仅限于这些 HAL 层。
使用存储库
您可以使用 cargo add
将驱动程序添加到您的 Cargo.toml
cargo add adxl345_driver2
或者您可以将驱动程序手动添加到您的 Cargo.toml
[dependencies]
adxl345_driver2 = "2"
示例
您可以在 examples
目录中找到示例。Raspberry Pi 的 I²C 和 SPI 示例可用。
要构建 I²C 示例,请首先在您的 Raspberry Pi 上的某个位置克隆此项目
git clone https://git.bues.ch/git/adxl345_driver2
接下来执行以下操作以构建示例
cd adxl345_driver2
cargo build --example rppal-i2c
最后执行示例
sudo ./target/debug/examples/rppal-i2c
如果您的设备已通过示例期望的主 I²C 连接,您应该在终端中看到一系列 x、y、z 值。
输出示例
axis: {'x': 1.6083, 'y': 0.0392, 'z': 8.7868} m/s²
axis: {'x': 1.6867, 'y': 0.1177, 'z': 8.7868} m/s²
axis: {'x': 1.6475, 'y': 0.1177, 'z': 8.8260} m/s²
...
no_std
此crate可用于no_std
环境。如果想要在无需std
库的情况下构建,只需启用no_std
功能。
目前,no_std
仅禁用了AdxlError
的std::error::Error
实现。
[dependencies]
adxl345_driver2 = { version = "2", features = ["no_std"] }
待办事项
- 目前,大多数驱动程序都作为一系列特质的
provided
方法实现。这比所需的要复杂。而且它还将低级总线访问例程暴露给用户API。最好是拥有两个基于特质的低级总线访问结构体,分别针对I²C和SPI,然后实现一个泛型于此特质的驱动程序结构体。这个变更的问题在于它是用户可见的API变更。因此,我们现在会保留旧的实现。
许可证
所有代码文件均受MIT
许可证的约束。您可以在LICENSE
文件中找到许可证的副本。
所有附加文档,如本README
,均受CC-BY-SA / 创意共享署名-相同方式共享 4.0 国际许可证的约束。
依赖关系
~1.5MB
~39K SLoC