3个版本
0.1.2 | 2019年4月12日 |
---|---|
0.1.1 | 2019年4月11日 |
0.1.0 | 2019年4月11日 |
#173 in #register
在i2c-reg中使用
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 License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确表示,否则任何有意提交给工作以包含在内的贡献,根据Apache-2.0许可证定义,都应以上述双许可方式提供,没有任何附加条款或条件。
lib.rs
:
寄存器特性宏
依赖项
~2MB
~46K SLoC