Multiple I2C Buses

Hi,

I'm just wondering which Arduino platforms support 2 or more I2C buses. I've read on another forum that the Arduino Due has 2 I2C buses, but I can't seem to find documentation to support that.

Additionally, I'd just like to know if I have any other Arduino options that support multiple I2C buses besides the Due.

Thanks,
Andrew

Yes, the obsolete Due supports two. No other “official” boards offer more then one.

Depending upon the specific model, the Teensy 3.x series family supports two, three or four.

If you look at the DUE board layout you see two.

You can examine other boards yourself.

There is SoftI2C library, you can initialize any digital pin to be I2C

with dozens of addressable devices on the one bus, what are your need for two ?

FantomT:
There is SoftI2C library, you can initialize any digital pin to be I2C

And the SoftI2C library is accessible on any Arduino platform?

DuckRogers:
Additionally, I'd just like to know if I have any other Arduino options that support multiple I2C buses besides the Due.

The ESP8266 processor supports I2C on any two pins. There are also I2C multiplexers.

But the real question is of course: why?

dave-in-nj:
with dozens of addressable devices on the one bus, what are your need for two ?

My application involves multiple sensors for data collection that all share the same I2C address, so I need to keep them on separate I2C buses to avoid addressing conflicts.

You only need an I2C multiplexer to fix that problem. Search eBay for “TCA9548A breakout” for a $3 easy fix that would support 8 sensors. 64 total with 8 chips.

DuckRogers:
My application involves multiple sensors for data collection that all share the same I2C address, so I need to keep them on separate I2C buses to avoid addressing conflicts.

How many?
Which sensor(s)?

DuckRogers:
My application involves multiple sensors for data collection that all share the same I2C address, so I need to keep them on separate I2C buses to avoid addressing conflicts.

No you don’t. There are a few ways of splitting a I2C bus or avoiding address conflict. However unless you are more specific about the sensor you are using we can’t tell you the best answer.

Ive come across some internet articles about I2C splitting. Still confused.

I found TCA9548A in a "clone" form, very cheap indeed.

Does the method to code and wiring 2 identical sensors on the same I2C depends on the type of the sensors?

The light sensor MAX44009 - to mount on the same I2C bus.I searched "multiple MAX44009 same I2C" and got results for other sensors.

Using the TCA9548A above is also device-specific?

+++

I hope OP is OK with my intervention, which I think is in line with the original post. If not, please tell me and I will remove the post. Thank you!

It's more like the other way around. An I2C mux will work but depending on the sensor and the number of sensors better options may be available.

Another thing: multiple sensors may mean distance - how long wires are we looking at?

If the sensor has an address pin exposed, then you can change the I2C address of the device with a digital pin.

Use the address pin as chip select pin.
Set all devices to address B, and only one device to address A, talk to it, switch to the next device.

An I2C multiplexer can be used if the device has no address pin, or 3.3volt<>5volt level shifting is needed.
As GrumpyMike said. Better answers if we know which devices OP is talking about.
Post a link.
Leo..

Wawa:
If the sensor has an address pin exposed, then you can change the I2C address of the device with a digital pin.

Use the address pin as chip select pin.
Set all devices to address B, and only one device to address A, talk to it, switch to the next device.

An I2C multiplexer can be used if the device has no address pin, or 3.3volt<>5volt level shifting is needed.
As GrumpyMike said. Better answers if we know which devices OP is talking about.
Post a link.
Leo..

That is an elegant solution.

You still haven’t mentioned the distance these sensors need to be from the Arduino. I2C is only good for a foot or two, any more and you need buffers of one sort or another.

You still haven’t mentioned the distance these sensors need to be from the Arduino.

... nor which exact sensor we're actual talking about, nor how many of them are involved.