OLED (SPI)
A small monochrome (or colour, with SH1106/SSD1331 controllers) OLED module driven over SPI instead of I²C. The panel and pixel array are usually identical to the I²C variant; the difference is that a 4-wire SPI bus (MOSI, SCK, CS, DC) can shovel pixel data at >10 MHz.
Same SSD1306-class controller and same OLED panel. The MCU clocks pixel bytes over MOSI on each SCK edge while CS holds the controller selected and DC distinguishes command bytes from data bytes. Because SPI is a clocked synchronous link with no device addressing overhead, frame rates of 60–80 Hz are easy even on an Arduino Uno.
In plain terms
Take the I²C OLED, swap in a parallel-clock-and-data link, and you can blit full screens at video frame rates.
Why designers use it
- Animation-heavy UIs where I²C bandwidth chokes the frame rate.
- Audio meters, oscilloscope front ends, and game-of-life demos that need fluid motion.
- DMA-friendly designs (STM32, ESP32) where the SPI peripheral can stream a frame buffer with no CPU intervention.
Best for
- Animations
- Meters
- Game UI
Key specifications
- Resolution: 128 × 64 typ.
- Interface: SPI @ up to 10–40 MHz
- Wires: MOSI, SCK, CS, DC, RST
- Voltage: 3.3 V
- Frame rate: 60–80 fps achievable
When not to use it
- When pin count is more critical than speed — I²C uses two pins instead of four.
- On long cables — SPI's high edge rates radiate and pick up noise more than I²C.
- Where you don't need the higher refresh — I²C is fine for static UIs.
Common mistakes
- Forgetting to drive the chip-select line low before each transaction.
- Skipping the reset pulse and getting a controller stuck in an intermediate state.
- Sharing the SPI bus with another device but never raising the OLED's CS — every transaction looks like garbage.
Where you will find it
- An ESP32-based portable spectrum analyser drives a 1.3-inch SH1106 OLED over SPI at 40 MHz with DMA, yielding a smooth 60 fps waterfall display that an I²C bus could never match.
- Open-source RC transmitters (e.g. EdgeTX) use SPI OLEDs for the on-screen UI: hundreds of menu transitions per second feel instantaneous.
- Small handheld retro-game consoles (e.g. Arduboy) use an SSD1306 SPI OLED to push 60 fps Pong, Snake, and Game-of-Life builds from an ATmega32U4.
A short history
Solomon Systech and Sino Wealth released SPI variants of their OLED controllers (SSD1306, SSD1309, SH1106, SSD1331) alongside the I²C versions throughout 2010–2014, mostly to support cell-phone sub-displays where the host SoC already had spare SPI peripherals. As makers discovered that the same panels could be driven 10× faster than over I²C, SPI OLEDs became the go-to choice for any animation-heavy hobby project.
Good to know
- SPI OLEDs let you blit a full 128 × 64 frame in ~200 µs at 40 MHz — fast enough for double-buffered animation.
- The same SSD1306 die supports both I²C and SPI; a strap pin on the back of the module selects the bus mode.
- Most SPI OLED libraries reuse 90 % of the I²C library code — only the byte-write primitive differs.