#register #bit-fields #derive #sensor #proc-macro #bitfields

无std 嵌入式寄存器

用于在嵌入式设备驱动程序中轻松定义寄存器的过程宏

8个版本

新版本 0.9.8 2024年8月21日
0.9.6 2023年12月13日
0.9.3 2023年11月7日

512嵌入式开发

Download history 1/week @ 2024-06-27 11/week @ 2024-07-04

每月416次下载
用于 嵌入式设备

MIT/Apache

34KB
440

嵌入式寄存器

Crate API

警告:此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-2.0许可证定义的,有意提交以包含在此软件包中的任何贡献,应按上述方式双重授权,不得附加任何其他条款或条件。

依赖项

~2MB
~46K SLoC