#register #i2c #interface #reading #temperature #write #read

i2c-reg

使用I2C接口创建用于读取和写入的寄存器

3个版本

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

#66#temperature

MIT/Apache

8KB
64

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许可证定义,您有意提交的任何贡献,均应作为上述双许可,不附加任何额外条款或条件。

依赖项

~2MB
~47K SLoC