Arduino Nano BLE 33 sense + OLED SSD1327 128x128 SPI

Dear all,

I have used an OLED SSD1327 128X128 pixels (from waveshare) together with an Arduino Nano (the old model) and the U8G2 library. It worked perfectly. Recently I bought an Arduino Nano BLE 33 sense, thinking that I could have easily substituted it without changing the software and the wiring, but it doesn't work.

As an example:

  • I tried the U8G2 example > page buffer > hello world.

  • I uncommented the constructor line:

U8G2_SSD1327_MIDAS_128X128_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

This works with the old Arduino Nano, but does not work with the BLE 33 sense.

Does anybody know how to solve this issue?

Thank you very much in advance :slight_smile:

Best,

Lorenzo

Which pin on the Nano 33 BLE do you have connected to the VCC pin on the OLED?

Hello Pert,

these are the connections OLED > Nano BLE 33 sense

VCC > 3.3volt (between pin REF and D13)
GND > GND
DIN > D11
CLK > D13
CS > D10
DC > D9
RST > D8

The same wiring works on the old Nano

Best,

Lorenzo

OK, I thought maybe the problem was that you were using the VUSB pin on the Nano 33 BLE Sense (equivalent to the 5V pin on the original Nano).

Unfortunately, I don't have any other ideas about what could be wrong, and I don't own a display I can use to try it out myself. Hopefully someone else here on the forum will be able to provide assistance.

Dear pert,

thank you for your reply anyway.
I hope there is somebody that can help me with this...

Dear all,

at the end I switched to the I2C communication which is working nicely (although slower compared to the SPI) with the u8g2 library.
In order to do use this display with the I2C there is a little change you have to do by shifting a resistor on the back. You can find more details here:

https://www.brainy-bits.com/128x128-oled-arduino/

Thank you all for your help,

ciao!

Lorenzo

Hi,
I recently got the same problem as Lorenzo.
After some hours of troubleshooting I found the problem, so I share this: in short, there is a bug in the display PCB from Waveshare.

As stated in the controlled datasheet (https://www.waveshare.com/w/upload/a/ac/SSD1327-datasheet.pdf) at page 20.

[...]
In SPI mode, D0 acts as SCLK, D1 acts as SDIN. For the unused data pins, D2 should be left open.
[...]

Unfortunately, on the pcb from Waveashare, D1 and D2 are connected together. This is necessary for I2C interface, but unwanted for SPI.
When in SPI mode, D2 output is conflicting with D1 input signal.

With some Ardunino board (e.g. Arduino Zero) the display works anyhow, as the processor pin drivers are strong enough to drive the correct levels on MOSI (D1).
The Nano BLE 33 has lower pin strenght, so the voltage levels are not correct and SPI tranfer is corrupted --> display doesn't work.

Workaround (needs HW modification):
-by looking at the bottom of the pcb, where the flat cable coming from the display is soldered, find the pin number 18. (note that pin 25 and pin 1 are indicated with silk print for reference).

  • with a sharp cutter, cut the pcb trace that comes out from pin 18 and connect the to the trace coming out from pin 17. The purpose is to disconnect pin 18 (D2) from pin 17(D1 = MOSI), leaving pin 17 connected the rest of the circuit.

  • check with the multimeter that D2 and D1 are effectively not connected anymore

  • Enjoy the working SPI display on the Nano BLE 33!

Hope this can help,
Luca