Files
planar-EL512.256-H/README.md
T
mangavalkandClaude Opus 5.5 873bdcd23e Set up PlatformIO project for EL512.256-H on ESP32
PlatformIO skeleton (esp32dev, Arduino, Adafruit GFX) with a local EL512
library: EL512Panel (1 bpp framebuffer, two-bit-mode row encoder, I2S DMA
refresh stub) and EL512_GFX (Adafruit_GFX subclass). Adds a test sketch,
pin map, README with wiring and timing, and moves the datasheet to
docs/datasheet/.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 21:00:42 +02:00

3.3 KiB
Raw Blame History

Planar EL512.256-H on ESP32

Drive a Planar EL512.256-H (512 × 256, monochrome electroluminescent) panel from an ESP-WROOM-32 (classic ESP32), with an Adafruit GFX compatible driver so the usual drawing, text and font APIs work.

The panel has no frame memory and needs a continuous video stream. The ESP32's I2S0 peripheral in 8-bit parallel (LCD) mode streams a precomputed frame from DMA, so the CPU is free while the panel refreshes.

Status: project skeleton. Framebuffer, GFX layer and row encoder are in place; the I2S/DMA start-up (EL512Panel::startI2S()) is still a stub.

Hardware

  • ESP-WROOM-32 dev board (esp32dev)
  • Planar EL512.256-H, configured for two-bit parallel mode (mode jumper OFF, see datasheet)
  • Datasheet: docs/datasheet/EL512.256-H3 FRB.pdf
  • Check the panel's logic-level and supply requirements in the datasheet before wiring.

Wiring

Panel signal Function ESP32 GPIO DMA byte bit
VCLK Video clock (rising edge) 18 I2S clock
VID Pixel data, even columns 19 0
TVID Pixel data, odd columns (two-bit mode) 21 1
HS Horizontal sync 22 2
VS Vertical sync 23 3
ENABLE Display enable 25 —
_LOWPWR Low-power mode (active low) 26 —
GND Ground GND —

The pin map lives in include/pins.h.

Timing

Parameter Value
Pixel clock (VCLK) 5 MHz, 2 pixels per clock
Clocks per row 272 (256 data + 16 blanking)
Lines per frame 261 (256 visible + 5 blanking)
Refresh 5 MHz / (272 × 261) ≈ 70.4 Hz

Layout

platformio.ini        build config (esp32dev, Arduino, Adafruit GFX)
include/pins.h        pin map
src/main.cpp          test sketch: test pattern + text
lib/EL512/            local library
  src/EL512Panel.*    framebuffer, row encoder, I2S DMA refresh (stub)
  src/EL512_GFX.*     Adafruit_GFX subclass
test/                 unit tests (placeholder)
docs/                 datasheet and notes

Build and flash

Requires PlatformIO (CLI or the VS Code extension).

pio run
pio run -t upload
pio device monitor

Using the driver

#include <EL512.h>
#include "pins.h"

EL512Panel panel({el512pins::VCLK, el512pins::VID, el512pins::TVID, el512pins::HS,
                  el512pins::VS, el512pins::ENABLE, el512pins::LOWPWR_N});
EL512_GFX display(panel);

void setup() {
  display.begin();
  display.setTextColor(1);
  display.print("Hello");
  display.display();   // push the drawing buffer to the refresh stream
}

See docs/README.md for design notes and the plan.