#embedded-hal #abstraction-layer #i2c-bus #hal #io #sharing #devices

无std embedded-hal-bus

嵌入式-hal的Bus/Device连接机制,嵌入式系统硬件抽象层(HAL)

9个版本

0.2.0 2024年4月23日
0.1.0 2024年1月9日
0.1.0-rc.32023年12月14日
0.1.0-rc.22023年11月29日
0.1.0-alpha.12022年9月28日

#1665 in 嵌入式开发

Download history 2824/week @ 2024-04-26 2164/week @ 2024-05-03 2122/week @ 2024-05-10 2606/week @ 2024-05-17 3159/week @ 2024-05-24 2400/week @ 2024-05-31 2527/week @ 2024-06-07 3567/week @ 2024-06-14 3142/week @ 2024-06-21 4403/week @ 2024-06-28 2651/week @ 2024-07-05 3882/week @ 2024-07-12 3414/week @ 2024-07-19 3197/week @ 2024-07-26 3611/week @ 2024-08-02 3520/week @ 2024-08-09

14,386 每月下载量
用于 28 个crate (27 直接)

MIT/Apache

110KB
1.5K SLoC

crates.io crates.io Documentation Minimum Supported Rust Version

嵌入式-hal-bus

嵌入式系统硬件抽象层(HAL) embedded-hal 的Bus共享实用工具。

embedded-hal 提供了SPI和I2C总线和设备的trait。本crate提供了兼容这些trait的硬件无关适配器,用于在多个设备间共享单个总线。

该项目由 HAL团队 开发和维护。

SPI

为了支持总线共享,embedded-hal 提供了 SpiBusSpiDevice trait。 SpiBus 代表整个总线,而 SpiDevice 代表该总线上的设备。有关这些trait的更多详细信息,请参阅 embedded-hal 文档

微控制器的 embedded-hal trait 实现应该实现 SpiBus trait。但是,设备驱动程序应该使用 SpiDevice trait,如果可能的话,不要使用 SpiBus trait,以便允许共享它们所连接的总线。

本crate提供了连接 SpiBusSpiDevice 的机制。

I2C

在I2C的情况下,相同的I2c 嵌入式-hal特质可以代表整个总线或总线上的一台设备。此crate提供机制,可以从单个I2c实例中获取多个I2c实例,共享总线。

可选Cargo特性

  • std:启用使用std::sync::Mutex的共享总线实现,并为DeviceError实现std::error::Error
  • async:启用嵌入式-hal-async支持。
  • defmt-03:从defmt 0.3派生defmt::Format用于枚举和结构体。

最低支持Rust版本(MSRV)

本crate保证能在稳定版Rust 1.60及以上版本编译。它可能可以与较旧版本编译,但可能在任何新的补丁版本中发生变化。

有关如何升级MSRV的详细信息,请参阅此处

启用async Cargo特性需要Rust 1.75或更高版本。

许可证

根据您的选择,许可如下:

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在本工作中的任何贡献,都应按上述方式双重许可,而不添加任何其他条款或条件。

依赖项

~1MB
~19K SLoC