#register #i2c #traits #reading #derive #macro #i2c-reg

i2c-reg-derive

为i2c-reg寄存器特性提供宏

3个版本

0.1.2 2019年4月12日
0.1.1 2019年4月11日
0.1.0 2019年4月11日

#173 in #register


i2c-reg中使用

MIT/Apache

6KB
97

i2c-reg

使用I2C接口创建读写寄存器。

文档

特性

轻松创建各种大小的只读/只写/读写I2C寄存器。

#[derive(Register, I2cReadRegister, I2cWriteRegister)]
#[address = 0b1110]
#[size = 2]
struct TemperatureRegister;

通过接口从寄存器读取/写入时,在原始字节和实际值之间进行类型安全的转换。

type Raw = <TemperatureRegister as Register>::Raw;

struct Temperature(u16);

impl Into<Raw> for Temperature {
    fn into(self) -> Raw {
        self.0.to_be_bytes()
    }
}

impl From<Raw> for Temperature {
    fn from(raw: Raw) -> Self {
        Temperature(u16::from_be_bytes(raw))
    }
}

let mut interface = I2cInterface { i2c, address: 0b0110 };
interface.write_register(TemperatureRegister, Temperature(42)).unwrap();
let temperature: Temperature = interface.read_register(TemperatureRegister).unwrap();
assert_eq!(Temperature(42), temperature);

示例

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确表示,否则任何有意提交给工作以包含在内的贡献,根据Apache-2.0许可证定义,都应以上述双许可方式提供,没有任何附加条款或条件。


lib.rs:

寄存器特性宏

依赖项

~2MB
~46K SLoC