#multiplexer #tca9546a #pca9546

i2c-multiplexer

An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips

3 unstable releases

0.2.0 Dec 1, 2024
0.1.1 Mar 13, 2023
0.1.0 Feb 24, 2023

#259 in Embedded development

Download history 7/week @ 2024-09-23 56/week @ 2024-11-25 76/week @ 2024-12-02 27/week @ 2024-12-09

159 downloads per month

MIT license

19KB
416 lines

I2C-Multiplexer   Build Status Latest Version

An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips


Usage

The sensor is initialized

use i2c_multiplexer::prelude::*;

fn main() -> Result<()> {
    // Disable all ports and only enable port 0
    Multiplexer::new(i2c).with_ports_disabled()?.set_port(0, true)?;
}

Changing Address

use i2c_multiplexer::prelude::*;

fn main() -> Result<()> {
    // Manually set the address
    Multiplexer::new(i2c).with_address(0x72);
    
    // Or set it according to the selected hardware pins
    // This uses A0 which means the address is 0x71
    Multiplexer::new(i2c).with_address_pins(true, false, false);
}

Setting multiple ports

use i2c_multiplexer::prelude::*;

fn main() -> Result<()> {
    // Manually set the ports 0,2 to enabled and 1,3 to disabled
    Multiplexer::new(i2c).with_ports([true, false, true, false])?;
}

Initializing as bus using the bus flag

use i2c_multiplexer::prelude::*;

fn main() -> Result<()> {
    let i2c = SomeI2CInit;
    
    // Initialize multiplexer
    let multiplexer = MultiplexerBus::new();

    // Setup the i2c port
    let port = 0;
    let mut multiplexed_i2c = multiplexer.new_port(i2c, port);
}

Dependencies

~0.3–0.8MB
~18K SLoC