Extending the Qwiic Mux Breakout Over Longer Distances? How does that work? Use the I2C Breakout?

BOB-14589 combined with the BOB-14685 to extend the range, how does that work?

BOB-14589 is the SparkFun Differential I2C Breakout - PCA9615 (Qwiic)

BOB-14685 is the SparkFun Qwiic Mux Breakout - 8 Channel (TCA9548A)

Can you breakout multiple devices across the same BOB-14685 port, through the BOB-14589, across 30’ or so to another BOB-14589 and then use two identially ID’d products at the end? Or would we have to use a total of four BOB-14589 products and two separate 30’ wires, sort of defeating the purpose?

What kind of power draw limitations does BOB-14589 have and at what point do we need to be concerned with that per RJ45 style breakout?

BOB-14589 combined with the BOB-14685 to extend the range, how does that work?

This picture should explain how these parts work together.

Can you breakout multiple devices across the same BOB-14685 port, through the BOB-14589, across 30’ or so to another BOB-14589 and then use two identially ID’d products at the end? Or would we have to use a total of four BOB-14589 products and two separate 30’ wires, sort of defeating the purpose?

You can have multiple I2C devices on the same port, but they all must have different I2C addresses. You can however put I2C devices that have the same I2C address on on separate ports.

What kind of power draw limitations does BOB-14589 have and at what point do we need to be concerned with that per RJ45 style breakout?

You’d need to determine this experimentally by starting with a few devices and then keep adding more wile monitoring the voltage on your target devices. If you find the voltage is beginning to drop, you’re going to need additional power. It’s possible that if you have enough devices at the far end of your link that you might not be able to transfer enough power over CAT5 to power all the devices. In that case, you’d need to run separate power wires along with the CAT5 and modify the jumpers on both PCA9615 boards to allow for that. You could optionally supply 3.3 volt power at the far end PCA9615 as well if a 3.3 volt supply is available there. The [hookup guide has more information on how to do that.](https://learn.sparkfun.com/tutorials/qwiic-differential-i2c-bus-extender-pca9615-hookup-guide)

You do not have the required permissions to view the files attached to this post.

We had to log in t be able to see it. What we wanted to do is the opposite. Put the Mux device first and then use the BOB-14589 to extend it, then be able to query 2 devices (or more) with the same I2C address at the end. Rather than put the Mux Breakout at the end. Is that possible?

The point of using the breakout Mux is to not have to have different I2C addresses. That’s why we would be using it. Does the BOB-14589 allow us to extend the Mux device, basically?

In terms of power draw, I guess we could supply 3.3V directly but was trying to avoid doing so given we are only planning to run a single RJ45 line out.

Also, trying to edit to post to correct the spelling error and it now no longer even lets me do so?

We had to log in t be able to see it. What we wanted to do is the opposite. Put the Mux device first and then use the BOB-14589 to extend it, then be able to query 2 devices (or more) with the same I2C address at the end. Rather than put the Mux Breakout at the end. Is that poss

You could do that, but you’d need a pair of the Differential I2C Breakouts on each port you want to use on the Mux to make it work.

That’s what we were trying to avoid, having to need to do that for each one. On the MUX device, it treats every physical port as a standalone ID and a single output? Meaning we cannot extend multiple devices off of the MUX, even without the BOB-14589?

If we want to use multiple MUX devices, we would have to extend the I2C out with BOB-14589 and then connect up multiple MUX devices?

Do you have a larger version of that attached image? Cannot read it or enlarge it.

You can only have one device with a given address on an I2C bus. You can have many devices on the bus if they each have their own address.

What the mux does is take in one I2C bus and lets you connect it to one of 8 connectors at a time. That way, if you have two devices with the same address, you would put one on one connector of the mux and one on another connector of the mux. That way, there’s only one of them on the incoming bus at a time.

All BOB-14589 does is let you replace a short I2C cable with a longer CAT5 cable. From the point of view of the data, it’s as if it doesn’t exist.

Is there any way of changing the address on one of the devices? Most I2C devices have addressing pins that can be jumpered in a way to change the address.

/mike

n1ist:
All BOB-14589 does is let you replace a short I2C cable with a longer CAT5 cable. From the point of view of the data, it’s as if it doesn’t exist.

That’s basically how we assumed it worked but was not very clear on. It remains I2C (though there are other ways of doing this) though at least.

Not ideal but I guess we have to put the breakout further away and extend the breakout or extend every single line, which at $20 per I2C device plus the CAT5/6 cable quickly starts to add up with 10+ lines or more.

n1ist:
Is there any way of changing the address on one of the devices? Most I2C devices have addressing pins that can be jumpered in a way to change the address.

Most do but the ToF sensors from Sparkfun that we are using require a pin to be able to reset each one to assign each one a new I2C address. It’s volatile so we would have to do it on every power up but prefer not to have to devote a whole set of 10+ I/O pins just to assigning I2C values! Would be great if they had allowed one to just assign it an address into volatile memory but they did not implement that feature for whatever reason.

Now the struggle is that we want to use a 5V based hardened Arduino MEGA with the Qwiic ecosystem which is by design 3.3V only. Mostly because the 3.3V Arduino DUE or better we want to use isn’t available yet as nobody offers a hardened DUE or better yet that we know of and even the PLC style Arduino companies are not offering anything close to high speed yet either as most just use an off the shelf MEGA or UNO and then protect the I/O and power. Most every component we are using supports 5V though and the ones that don’t we can break out but Sparkfun’s BOB-12009 Logic Level Converter is not really suitable for higher speed I2C and especially SPI type logic is the read we have on it.

So is there a high speed logic level converter out there that’s off the shelf that would let us convert the 5V logic of a MEGA to 3.3V I/O devices that can support higher speed type communication and output a decent quality waveform?

This might work.

https://robothings.pl/en/products/rt-nvt2008/

8 Channels Bidirectional Voltage Level Translator

$10, can be used with SPI, I2C/TWI, UART and standard logic IO interfaces.

It’s capable of hitting 33MHz, so it will work with SPI signals. The open-drain outputs also allow it to be used for I2C.

Here is an unanswered question posted to the main site for the Sparkfun MUX board from about two weeks ago.

When using TCA9548A, should I remove the pull-up resistors of the modules I have connected?

I don’t currently know the answer and it feels like that should be made clear since that’s one of the few things that you generally always need to do to ensure things work correctly across I2C.

This overview talks about it somewhat and also talks a bit about the different bus voltages (sending 5V to a 3.3V only sensor is typically not desired). https://www.instructables.com/id/TCA954 … ino-and-N/

It is a good idea to put pull-up resistors on all channels of TCA9548A, even if the voltages are the same. The reason for this is because of the internal NMOS switch. It does not transmit high voltage very well, on the other hand it does transmits low voltages very well.

The TCA9548A may also be used for Voltage Translation, allowing the use of different bus voltages on each SCn/SDn pair such that 1.8-V, 2.5-V, or 3.3-V parts can communicate with 5-V parts. This is achieved by using external pull-up resistors to pull the bus up to the desired voltage for the master and each slave channel.

Sparkfun representative or somebody else who may know, any ideas?

Annoying that we cannot edit the post after a few minutes.

Typical Application (continued)

9.2.1 Design Requirements

A typical application of the TCA9548A contains one or more data pull-up voltages, V DPUX , one for the master

device (V DPUM ) and one for each of the selectable slave channels (V DPU0 – V DPU7 ). In the event where the master

device and all slave devices operate at the same voltage, then V DPUM = V DPUX = VCC. In an application where

voltage translation is necessary, additional design requirements must be considered to determine an appropriate

V CC voltage.

Here is a relevant part of the TCA9548A datasheet.

Not sure where to post this exactly but the Tutorial for the Qwiic RJ45 breakout has a text error that should be corrected.

https://learn.sparkfun.com/tutorials/qw … okup-guide

I2C Pull-Up Resistors

Remember, each individual non-differential I2C bus needs at least on set of pull-up resistors enabled. Make sure you keep track of which devices have their I2C pull-ups enabled and which do not.

It’s still somewhat unclear if this device serves to break out two separate I2C lines or just one? Will have to dig into the chip’s datasheet I guess. Need to be able to operate two devices with identical board ID’s (because Sparkfun doesn’t let you reassign them even with on board pins or cutting joints).

Would prefer not to have to add a 10 port Qwiic extender simply to use 2 Qwiic devices when there are already two ports right there and we wouldn’t even need to daisy chain anything.

Not sure where to post this exactly but the Tutorial for the Qwiic RJ45 breakout has a text error that should be corrected.

Thanks for catching that, fixed! :slight_smile:

It’s still somewhat unclear if this device serves to break out two separate I2C lines or just one? Will have to dig into the chip’s datasheet I guess. Need to be able to operate two devices with identical board ID’s

These extend a I2C bus, they don’t split it into sub busses. Even though there are two Qwiic connectors on the board, they are electrically on the same bus so you can’t use two devices with the same address on one board.

Need to be able to operate two devices with identical board ID’s (because Sparkfun doesn’t let you reassign them even with on board pins or cutting joints)

That’s not a limitation we incorporate into Qwiic products, it’s a limitation of the device on the board. Most I2C devices that allow you to change their address do so through jumpers. There are a small number of devices that allow changing address via a command rather than jumpers. Check the datasheet for your device to see if it’s possible to change it’s address via a command over I2C.

This chip does not let you do so, unfortunately. Sparkfun could order chips from the manufacturer with different IDs since they are available off the shelf with different IDs but that isn’t part of this product SKU. The device can be reset once powered up and a new but volatile ID can be set but that requires a physical pin which the Qwiic system does not support since there are no extra pins available.

I guess we will have to keep the distance short enough that the Qwiic breakout still functions (so a meter or two at the most, off of each of the breakout board outputs). Or add additional Qwiic extenders but at some point they will probably not take kindly to being extended out that far. Plus they are $20+ each and we would need quite a few per line to do it that way.