8个版本
新版本 0.9.8 | 2024年8月21日 |
---|---|
0.9.6 | 2023年12月13日 |
0.9.3 | 2023年11月7日 |
512 在 嵌入式开发
每月416次下载
用于 嵌入式设备
34KB
440 行
嵌入式寄存器
警告:此crate目前处于实验状态,因此任何内容都可能随时更改。
此crate提供用于在嵌入式设备驱动程序中轻松定义寄存器的过程宏。这会自动生成在I2C和SPI上读写寄存器的函数,虽然它并不仅限于这些总线。生成的结构体可以轻松扩展以与其他类似的通信总线一起工作。
- 允许定义只读、只写和读写寄存器
- 生成I2C和SPI读写函数
- 寄存器通过bondrewd定义为由位字段组成。
- 仅解码访问的位字段成员,节省内存并减少CPU时间。
- 支持异步和阻塞操作模式
此crate主要针对嵌入式设备,这是一个各种不同嵌入式传感器和设备的驱动程序集合。
使用方法
将以下内容添加到您的Cargo.toml
[dependencies]
# You will need these to define your own bitfield-capable enums
bondrewd = { version = "0.1.14", default-features = false, features = ["derive"] }
bytemuck = { version = "1.16.3", features = ["derive", "min_const_generics"] }
embedded-registers = "0.9.7"
通过在bondrewd结构体上添加注释来简单地定义寄存器#[register(address = 0x42, mode = "rw")]
。例如,这是MCP9808设备ID的寄存器定义
#![feature(generic_arg_infer)]
use embedded_registers::register;
#[register(address = 0b111, mode = "r")]
#[bondrewd(read_from = "msb0", default_endianness = "be", enforce_bytes = 2)]
pub struct DeviceId {
device_id: u8,
revision: u8,
}
有关更详细的使用信息和更复杂的示例,请参阅嵌入式寄存器文档和bondrewd文档。
许可证
根据以下任一许可证授权
- Apache License,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
根据您的选择。除非您明确表示,否则您根据Apache-2.0许可证定义的,有意提交以包含在此软件包中的任何贡献,应按上述方式双重授权,不得附加任何其他条款或条件。
依赖项
~2MB
~46K SLoC