Crate ruspiro_i2c[][src]

Expand description

Raspberry Pi I²C bus interface

Simple access to the I²C bus available on the Raspberry Pi. When the I²C bus is used this reserves the GPIO pins 2 and 3 for exclusive use by the bus.


    I2C.with_mut(|i2c| {
        if i2c.initialize(250_000_000, true).is_ok() {
            println!("scan I2C devices connected to RPi");
            let devices = i2c.scan().unwrap();
            for d in devices {
                println!("device detected at 0x{:2X}", d);

To work with a device connected to the I²C bus it’s recommended to first check whether this is connected at the specific address. This could be done like so:

    let device_addr = 0x68;
    // check if device is connected
    I2C.with_mut(|i2c| {
        if i2c.check_device(device_addr).is_ok() {
            // now that we know the device exists and is connected to something with it

Once done simple use the funtions to write to or read from the device registers as required.


  • ruspiro_pi3 is active by default and ensures the proper MMIO base address is used for Raspberry Pi 3


I²C peripheral representation


Static singleton accessor for the I²C bus peripheral To use the contained i2c API in a safe way use the with_mut function passing a clousure that can safely use the resource

Type Definitions