#i2c-bus #raspberry-pi #i2c #bare-metal #ruspiro

无std ruspiro-i2c

Raspberry Pi - I²C总线接口实现

5个版本 (3个破坏性更新)

0.4.0 2021年9月7日
0.3.1 2020年9月13日
0.3.0 2019年12月25日
0.2.0 2019年8月31日
0.1.0 2019年8月9日

#2174 in 嵌入式开发

每月40次下载
用于 ruspiro-sdk

Apache-2.0

28KB
387 代码行

RusPiRo I²C总线接口crate

简单、安全地访问Raspberry Pi上可用的I²C总线。此实现将需要GPIO引脚2和3专用于I²C总线。

Travis-CI Status Latest Version Documentation License

依赖项

I²C实现需要在最终二进制文件中构建分配器。建议与此crate一起使用ruspiro-allocator

用法

要使用crate,只需将以下依赖项添加到您的Cargo.toml文件中

[dependencies]
ruspiro-i2c = "0.3"

完成后,您可以在Rust文件中像这样访问I²C总线接口

use ruspiro_i2c::I2C;

fn demo() {
    I2C.take_for(|i2c| {
        if i2c.initialize(250_000_000, true).is_ok() {
            // now scan I2C devices connected to RPi, this will print their
            // addresses to the console
            let devices = i2c.scan().unwrap();
            for d in devices {
                info!("device detected at 0x{:2X}", d);
            }
        }
    });
}

要配置和使用连接到I²C总线的设备,您可以使用在获取I2C时提供的函数。首先,您可以在继续配置之前检查设备是否连接到总线

use ruspiro_i2c::I2C;

fn demo() {
    let device_addr = 0x68;
    I2C.take_for(|i2c| {
        if i2c.check_device(device_addr).is_ok() {
            // configure the device...
            // as arbitary example pass value 0x1 to the 8bit register 0x10
            i2c.write_register_u8(device_addr, 0x10, 0x1);
        }
    });
}

许可证

根据Apache License,版本2.0授权,(LICENSEhttps://apache.ac.cn/licenses/LICENSE-2.0)

依赖项

~2MB
~40K SLoC