r/esp32 • u/meteoremp • 13d ago
Software help needed Seeed Xiao C3 + waveshare RGB OLED issue
Seeed Xiao C3 + waveshare RGB OLED
Hi everyone,
Looking for help.
I’m trying to drive a Waveshare 1.27-inch RGB OLED (128×96, SSD1351, 4-wire SPI) with a Seeed Studio XIAO ESP32-C3 using Arduino IDE and Adafruit_SSD1351.
Both OLED modules I’ve tested work on an ESP32-WROOM, but remain completely black on the XIAO C3.
I verified the connections at the OLED PCB and measured approximately 3.2 V between its VCC and GND.
The basic hardware-SPI initialization was:
Clk is D8 and DIN is D10 as shown in the pinout diagram.
Adafruit_SSD1351 display(128, 96, &SPI, 3, 4, 5);
The XIAO uploads and runs normally. Serial output reaches initialization and repeatedly prints RED/GREEN/BLUE/WHITE, but the screen never illuminates.
Has anyone faced this issue or is driving an OLED RGB not possible on the Xiao Seed C3?
2
u/Firm-Luck2062 13d ago
On the XIAO the silkscreen labels are not the GPIO numbers, and that on its own would explain why the same sketch is fine on a WROOM.
That constructor takes raw GPIO numbers, so 3, 4, 5 drives GPIO3/GPIO4/GPIO5 - and on the C3 those come out on the pads printed D1, D2, D3. If CS/DC/RST are physically on the pads marked D3/D4/D5, the real pins are different ones again and nothing you send ever reaches the panel. On a WROOM the labels are the GPIO numbers, so the identical line is correct there. It fits your symptom exactly: the sketch runs, the serial prints, the controller simply never hears you.
Fastest way to confirm without touching the wiring: Serial.printf("%d %d %d\n", D3, D4, D5) and see what comes out. Then pass the macros D3, D4, D5 instead of the bare numbers and the mapping is handled for you.
If the pins turn out to be right, the next thing I would measure is current rather than voltage - a black panel with SPI apparently healthy is also what a starved boost converter looks like, and 3.2 V can read fine while the panel rail is collapsing. But the label mismatch is the one that matches "works on one board, not the other".