3个版本
0.1.2 | 2019年4月12日 |
---|---|
0.1.1 | 2019年4月11日 |
0.1.0 | 2019年4月11日 |
#66 在 #temperature
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版本 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,均应作为上述双许可,不附加任何额外条款或条件。
依赖项
~2MB
~47K SLoC