I2c bus extender and sleep

Hi,

I have a NoteCarrier F 1.3 and I’m using with a Swan 3 (can’t recall the noteCard). I can run the pseudo sleepy sensor example with nothing connected to i2c. It works fine. It transmits every 5 minutes (as I specified) and all is good.

My goal is to get a few i2c sensors on the bus using an Adafruit LTC4311 breakout bus extender so I can do longer range i2c.

I can connect to any of the i2C connectors through the LTC4311 to a DPS310 breakout and with a simple test program, this also works fine! I get temp and pressure at a high rate! Great.

But, when I try and combine things, there are problems. Just running the stock sleepy sensor example (only with 5 minute uploads) with the extender and sensor connected, it will work once - transmitting one fake number. But then, it stops working sometime. No other numbers ever come through. I assume sleep isn’t working properly with the extender on the bus or the modem can’t transmit for some reason.

All of these tests are run with wall power but with both the Feather and the noteCarrier connected through USB.

So, idk, something on the i2C bus is interfering with some other function in the electronics.

Any advise on further tests I could try to figure out where the problem is coming from. It really seems like the LTC4311 is causing the problem, but I have no idea as to why.

Thanks,
Brecky

Please ping me for if more info if needed. Hard to include everything!

Hi @brecky!

Without knowing your hardware, my first guess is that you have too many pull-ups on the I2C bus.

Can you send a list of the exact components you have on I2C?

Cheers,
Zak

Hi Zak,

Hardware is:

Notecarrier F 1.3 with a Swan 3.0. The two devices that are on the I2C bus are the Adafruit LTC4311 breakout, which is first on the bus, and the DPS310 sensor is second:

which is then connected to an Adafruit DPS310 sensor:

The idea is to extend the I2C bus so I can run the signals over a couple of meters of ethernet cable. The i2C-extender does have an active pullup. Does that interfere with the sleep function?

Because the confusing thing is that this setup works in reading the sensor when I test that. But, it does seem to affect the sleep (or wake) function of the Blues IO boards.

If the active pullup does interfere with the sleep function, it looks like I might be able to turn off the active pullup via an enable pin on the ltc4311 board. I could wire it to one of the Swan digital I/O pins and switch that to low after taking a reading. Do you think something like that would work?

Thanks,
Brecky

Hi Brecky,

It is not possible for I2C to interfere with the sleep/wake functionality, unless it were to corrupt I2C messages (which is how you are communicating with the Notecard).

I reread your original post, and I need to have you clarify a point you made. When you said, “when I try and combine things, there are problems.” Did you mean this from a hardware or software standpoint?

If it is hardware, then it’s worth mentioning it is unnecessary to have additional pull-ups (beyond what is provided by the Swan), so I would try to start removing/disabling one pull-up at a time until it begins working again.

If it is software, then I think the next step would be to purchase an STLINK, and walk through the code line by line.

Best,
Zak

1 Like

Hi, I use an I2C multiplexer (TCA9548a) to “speak” with multiple sensor and the notecard. There is sometimes I2C problem between different sensor, RTC, Notecard, cable length etc. Multiplexer works fine for me. I use an RTC, an OLED screen, 4 or 5 sensor (temp, humi, pressure, CO2, PT-100 etc) and the Notecard. I don’t read the sensors with high speed because I take only one reading every 10 or 15 minutes. If you punctually slow down the i2C speed to 5000 Hz you can use cable lenght up to 30 m.
Eric