Vext and i2c bus

I did search in the forum but I did not find an answer yet…

why do we have to enable Vext to properly read a device on I2C bus?

I have a couple of sensors powered via Vdd (3.3v) … basically always on.
If I do not turn on Vext before probing them I won’t be able to read the values.

I do not understand why do I need to enable Vext to use I2C even if the sensors are not powered by Vext…


Vext and I2C are normally independent. In fact, on most small MCUs the I2C pins can be defined as almost any GPIO inputs that you wish to use. There is special hardware support for I2C on some boards, but I often find myself not using that for some reason or another. Are you sure your sensors are completely independent from Vext? Perhaps pullup resistors or something else is forcing a dependency. Maybe you can put a voltmeter on the SDA and SDL lines while you toggle Vext on and off. If there’s any change then there is indeed some connection and you might want to look for a different set of pins. What Heltec module or board are you using?

I’m using AB01 and AB02. I will check if it is a pullup strength problem on my board, but beside this … why do we see Vext-ON on basically ALL the i2c examples? even the simple i2cScanner example is doing that and I don’t see a reason for it.


This is to fit our other product: cubecell capsule. The sensors of our capsules are generally powered by vext. You can modify this power supply pin according to your ideas


ah! crystal clear. Thanks Jason

The example assumes you using the official board or power the I2C sensor using Vext.

If you use Vdd(3.3V) directory, you can turn off the Vext.
Remaind that you need to check both I2C pull-up resistor connect to Vdd(3.3V) too.

1 Like