I'm building a display controller with a Raspberry Pi. Basically we're trying to control a set of small OLED screens through the SPI interface. All of the OLEDs are tapping off the same MOSI and SCLK pins directly from the Pi with their own CS pins routed through a demux.

My concern is that the Pi's MOSI/SCLK pins won't be able to deliver sufficient current to the MOSI and CLK pins for the OLEDs to register them so I'm considering using a simple BJT with an external PSU and the MOSI and SCLK pins as switches to deliver the signal to the OLEDs.

My question: is the limited current available to the MOSI and SCLK pins a valid concern? And if so, will this switching circuit do the job? I suspect not, since the Vb and Vc are essentially on the same level, but I can't think of another solution to the problem.

enter image description here

  • How many OLEDs do you plan to drive? Unless it's dozens I doubt you don't need any additional circuitry. Even if it's more I'm not convinced there will be a problem - perhaps the OLEDs tri-state the signals until CS is asserted. – joan Dec 11 '17 at 12:11
  • Its going to be around a dozen. I was thinking the same, but I wasn't sure if the tapping a dozen devices off a 20mA pin would cause voltage levels not to be registered properly. You don't think having ~1.5mA per OLED MOSI/SCLK pin will be a problem? – Yassie Dec 11 '17 at 12:16
  • The MOSI and SCLK GPIO should be able to supply 16mA each. Why do you think the OLED will draw 1.5mA? That seems to be an awful lot for an input. I'm quite happy that things work if you have 50k+ ohms in line to an input which would limit the current to less than 0.067mA. – joan Dec 11 '17 at 12:22
  • I'm not sure if it draws 1.5mA, I just got the estimate with 16mA per pin / 12 OLEDs. Are you saying that the MOSI and SCLK pins on the OLEDs can function with current > 100uA? I ask because I'm not super familiar and the datasheets don't seem to state a typical operating current – Yassie Dec 11 '17 at 14:03
  • I'd have thought so, however you are much more likely to get an authoritative answer on an electronics site. – joan Dec 11 '17 at 14:17

This schematic will not work due to very high input resistance of OLED driver (CMOS, I believe) on the emitter. If you want to use simple NPN transistor amplifier, you need to invert your signal from Pi. If you need proper amplifier of digital signal, see what is push-pull output circuit, either MOS or bipolar.

I believe, the Pi output can drive dozens of OLED displays. How much - it's hard to say, because it's hard to measure input current consumption on frequently changing signal (power consumption increases with frequency). But definitely many of them.

The best solution for you can be the use of some buffer IC (for example, hex 74HC4050 non-inverting buffer with max output current of 25mA). You can connect Raspberry Pi output to all six inputs of buffers and then redistribute output of each buffer to, let say, 10 OLEDs (sure, they can handle more then 10, this is just for example). This will do the trick.

This way you can connect more then one buffer IC and then connect unlimited loads (OLEDs etc.) to them, or even cascade buffers and then redistribute signal.


The circuit you propose will actually REDUCE the current; if you want to use an emitter-follower omit the resistor in the collector.

I have other reservations about this circuit; there is no active pull-down, so it will degrade speed, as there is nothing to discharge line capacitance.

Finally I doubt the screen actually needs any current.

Your Answer

