I2C pullup advice

Hello,
I'm looking to use an I2C device that runs at 2.8V with an Arduino Uno that runs at 5V. The 2.8V I2C device will be the I2C master. My question is, can I disable the Arduino Uno's pullups and rely solely on the ones on the I2C device? And if so, how can I disable the pullups?

Hi,
Arduino pullups do not need to be disabled,
when you want to use them, you do need to enable them.

The Arduino Uno needs 3.5V for SDA and SCL to see them as a high level (it is in the datasheet of the ATmega328P). The ATmega328P microcontroller has also internal pullup resistors which are enabled by the Wire library. So there is a path from 5V to SDA and SCL via the internal pullup resistors. They are turned on in Wire.begin(), and if you turn them off after that, then the were on for a very short time.

:point_right: You need a I2C level shifter :point_left:

Hmm, but I measured the voltage across the SDA and SCL pins after calling Wire.begin and they were at 4.5V and 3V respectively.

When nothing is connected they should be near the voltage of the 5V pin when measured with a normal 10MΩ multimeter.

If you measure something else, then something is not right.
If you already connected those to the 2.8V device, then something might be broken (probably not, it is only a small current, but it might be broken if it was a sensor in sleep mode).

Ahhh my bad, I mistyped. Its 4.5 and 4v.

Ok, so based on my understanding, I can disable the pullups on the Uno, and then use a level shifter to increase the voltage to 5V right?

No, forget about the internal pullup resistors.
The Arduino Uno has a 5V I2C bus. That's it, no more, no less, with or without pullup resistors.
The 2.8V I2C device has a 2.8V I2C bus.

A I2C level shifter module can connect a 5V I2C bus to a 2.8V I2C bus.

Please show a photo of your project and a link to where you bought your 2.8V I2C device.

On this forum we have a saying that the problem is in the part that someone does not want to tell. There might already be a voltage regulator and a level shifter on your 2.8V module.

If these are the levels with the 2.8V device attached then the communication may work if the 2.8V device is 5V compliant on its SCL/SDA pins. Check the data sheet or try at your own risk.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.