Since some time now I have a couple of very old OLED displays - 128x128 pixels. These are driven by the ssd1339 chip for which I found the datasheet online. Based on this I created my own driver and demo application.

Adapter board

The first challenge was to find an appropriate way to connect to the display. It uses an FCC connector that is quite narrow pitched. My first try was actually to solder a couple of jumper wires on to this but it quickly failed. I decided to make my own adapter and produce an adequate pcb.

Adapter board from FCC to 2.54mm pin header

I also made a custom cable to be avoid messing up the wiring if I disconnect and then reconnect the oled to the breadbord. The  oled board itself has a FCC connector and is powered by 3.3V.

OLED backside showing the SSD1339 chip the boost converter and the FCC connector


The flat cable is also quite sensitive. A holder proved to be very good as it avoided shorts and bad contacts. The holder is designed in OpenSCAD and it will hold the the adapter and display together.

Driver examples are quite seldom, but I did manage to find something that could be analysed. I found the serdisplib but I could not use it directly... it wort mentioning nevertheless.

The small oled showing filled rectangles

Source code

For the OLED display I have created a new library in my project. This gets linked into the project as a git submodule andneeds to be included into the qbs files of the project and app. The init function requires function pointers to the GPIO interface for setting various pins to high/low (basically bit-banging). The 8 data lines are directly written to port A in my case.

All ssd1339 commands are implemented including the graphic accelerator ones. From the concept this interface is quite interesting but I'm disappointed of the low brightness and color accuracy of this display.

The repository for this project can be fount in github: stm32f411ce-oled