enter image description hereI am using a Particle Boron or Photon 2 which both state the I2C pullup should be 3.3v.

I currently have a AHT20 temperature sensor and a 20x4 LCD on the I2C bus, which has been running great with the exception of the occasional LCD scramble that would sometimes occur when the Boron would connect to the cellular network.

I have needed to make a change and add one more temperature sensor. Adding the 3rd sensor was causing the board to crash and reboot, so I added a multiplexer TCA9548A to handle the data on the I2C. I powered the multiplexer from the 3.3v and originally left the input power to the sensor and the display on the 5v. I have not successfully been able to get everything working since getting all three on the I2C at the same time. It seems like moving all the sensor and LCD input power to the 3.3v bus would be the best way. I would have to revise the PCB to do this.

Should the sensor and LCD input power be the same as source as the I2C pullup or is the mixed voltage ok ?

Particle Workbench in VSC has me completely stuck today so I have been able to do limited troubleshooting and testing.

Thank you.

I attached a sketch which is what I am planning on changing the circuit to. Originally I did not have pullup resistors on channel 0 to the LCD, or on the SHT31 that is on channel 1. The SHT31 that is on channel 2 has built in pullup resistors. I misunderstood that I would need pullup resistors on the devices that are on the input channels of the multiplexer. I already had pullup resistors between the Boron and the multiplexer. The 5v power to all the 5v pullups, sensors, and LCD will be turned off via a transistor that is controlled by a digital output pin when the board goes into its sleep cycle. I did not have that on the sketch. Since I am using the multiplexer my understanding is I can use the 3.3v to power the multiplexer and pull up the I2C between the Boron and Multiplexer to 3.3v.

  • \$\begingroup\$ I added some additional information along with a sketch. \$\endgroup\$
    Oct 2, 2023 at 15:40

1 Answer 1


You have the TCA9548A. It can have pull-ups to different voltages on different buses. You have both 5V and 3.3V devices and they must pull to whatever supply voltage their buses must have.

Also the supplies don't need to be the same, for example, if you have a board with onboard 5V to 3V3 regulator, it likely must have pull-ups to 3.3V, but it can be 3.3V from another board if they all are turned on. Obviously if one of the 3.3V supplies with I2C chips on it is turned off, it is not a good idea to have the pull-ups of those chips to a 3.3V supply that is left on.

Some 5V devices allow 3.3V communication bus and some 3.3V devices allow 5V communication bus.

You need to know what your chips/modules/boards require or can handle - we don't know the details what you have.

  • \$\begingroup\$ I attached a sketch. Originally I did not have pullup resistors on channel 0 to the LCD, or on the SHT31 that is on channel 1. \$\endgroup\$
    Oct 2, 2023 at 14:18
  • \$\begingroup\$ @TXROCKS You say you attached a sketch, but I don't see anything. Make sure you hit the confirm button after editing. \$\endgroup\$
    – Hearth
    Oct 2, 2023 at 14:47
  • \$\begingroup\$ Looks like the sketch saved that time. The Green lines are GND, looks like I missed the tags on them. \$\endgroup\$
    Oct 2, 2023 at 15:48
  • \$\begingroup\$ @TXROCKS Well the details are still a bit scarce - how would we know if pull-ups are to correct voltage as we don't know what modules you are using and what their schematics look like. We also don't see your code which could be incorrect. We don't know how the mux is configured and if the reset pin is used. Also for any serious I2C speeds, 10k pull-ups are too weak. \$\endgroup\$
    – Justme
    Oct 2, 2023 at 15:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.