Could this be a level-shifting circuit ? (I2C OLED screen)

just got a cheap OLED (128x64) screen from eBay but it doesn't seem from a fly-by-night operator, it's got a proper website printed on the product.

the seller description (as well as the website) says 3-5V, but i have checked the datasheet of the SSD1306 driver chip which states logic levels are for 3.3V.

i understand these are probably copies of an Adafruit product which does state level-shifting circuits are added to their boards (picture also included below).

i have a level-shifting board (8-bit) and know that it (the circuit) involves a transistor (MOSFET) and two resistors that pull-up to the respective voltages on either side.

you can see the Adafruit board has 3-pin components, so i'm guessing these are the transistors and those are indeed level-shifting circuitry.

however, on the product i got, i only see resistors and capacitors, and one diode. (there is a voltage regulator, so that seemed to be a hint that there was some possible level-shifting.)

i guess i should "grow up" and try to trace out the circuit myself (!!) and see what it looks like, but without any schematic (didn't notice one on the adafruit product page either) i thought i'd first broach the issue here and get some feedback, maybe some tips.

Thanks.

The product i got; |500x453

The adafruit version for comparison; (different shape because i copied the 128x32 version) |500x316 P.S. also just noticed the 6-pins, so i might have even clicked the SPI version (sorry!) - anyway, it was just to compare the level-shifting circuitry.

A resistor to limit input clamp diode current + diode on SDA may be considered as level shifting - if you are tolerant. It may be slightly better than than using 3V3 bus for 5V Arduino. But ofc I don't know if it is used on this board. I would try it - power the board up, add a small pullup to 5V to a SCL pin (i.e. 100k resistor at first) and try to trace it. How much current it drains? Where does the current go? Anyway the driver may be using 5V tolerant I2C pins - who knows?

the seller description (as well as the website) says 3-5V

That's power supply range. As you have noticed, there is a regulator on the board. It does not mean the data signals can be 5V.

The board probably has pull-up resistors, on the i2c data lines, to the 3.3V rail. So as long as there are no other pull-up resistors elsewhere in your circuit on the i2c lines to 5V, that should be ok.

However, and I would like to get an opinion on this myself, I understand the Arduino Wire library enables the internal pull-ups on most Arduino, and these will be to 5V. So it's this a danger for the display? I have used them extensively like this without apparent harm, but I may simply have been lucky.

Smajdalf:
A resistor to limit input clamp diode current + diode on SDA may be considered as level shifting - if you are tolerant.

ohh i see, dropping the “excess voltage” through resistors and diodes.

Smajdalf:

I would try it - power the board up, add a small pullup to 5V to a SCL pin (i.e. 100k resistor at first) and try to trace it. How much current it drains? Where does the current go?

okay - i will try that then.
although that would require a proper DMM (!!)
i’d been “surviving” thus far on a plain multimeter in continuity mode… time to step up…

Smajdalf:
Anyway the driver may be using 5V tolerant I2C pins - who knows?

going by the datasheet of the SSD1306 (which is the driver chip itself) it looks to be 3.3V (max) (VDD = 1.65V to 3.3V)

PaulRB:
That’s power supply range. As you have noticed, there is a regulator on the board. It does not mean the data signals can be 5V.

but the datasheet (SSD1306) of the matrix panel itself needs 7V to 15V (max)

PaulRB:
The board probably has pull-up resistors, on the i2c data lines, to the 3.3V rail. So as long as there are no other pull-up resistors elsewhere in your circuit on the i2c lines to 5V, that should be ok.

i see, because I2C communication is about pulling the line LOW, so if the pull-up resistors bring it to “only” 3.3V, then it never goes to 5V (unless other devices on the bus do so).

PaulRB:
However, and I would like to get an opinion on this myself, I understand the Arduino Wire library enables the internal pull-ups on most Arduino, and these will be to 5V. So it’s this a danger for the display? I have used them extensively like this without apparent harm, but I may simply have been lucky.

i think that last sentence might be it…

i remember one of the first devices i fiddled about as a raw N00b was the HC-05 BT.module, i hadn’t learned that it was a 3.3V device and had been connecting RX/TX directly to the Arduino.

it survived quite a while before finally quitting - then i learned the RX-pin had to be “protected” with a voltage divider to bring the Arduino 5V levels (TX-pin) down.

that would be considered level-shifting too, right ? (albeit not bi-directional)

but the datasheet (SSD1306) of the matrix panel itself needs 7V to 15V (max)

Maybe the driver chip contains a dc-dc step-up circuit for this.

a voltage divider to bring the Arduino 5V levels (TX-pin) down... that would be considered level-shifting too, right ? (albeit not bi-directional)

Correct.

PaulRB: Maybe the driver chip contains a dc-dc step-up circuit for this.

that would certainly involve having an inductor of some sort, right ?

and i don't think even the smallest of SMD inductors would be able to hide on that board.

anyway, all comments are much appreciated, i will have to slowly try to trace out the circuit to find out what is happening with those resistors and capacitors.

in the meantime, will probably just have to use the OLED with a 3v3 ProMini which is still on the way...

BabyGeezer: that would certainly involve having an inductor of some sort, right ?

Nope, not at all, these driver chips all use switched-capacitor voltage generation, hence lots of ceramic caps are needed, usually on the flatflex ribbon itself, or the PCB.

MarkT: Nope, not at all, these driver chips all use switched-capacitor voltage generation, hence lots of ceramic caps are needed, usually on the flatflex ribbon itself, or the PCB.

oh wow, something new ! thanks, will have to look that up.