Public Access
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>
This commit is contained in:
commit
873bdcd23e
16 files changed
+555
No files matched your search
@@ -0,0 +1,92 @@
|
||||
# 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](https://github.com/adafruit/Adafruit-GFX-Library)
|
||||
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](docs/datasheet/EL512.256-H3%20FRB.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](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](https://platformio.org/) (CLI or the VS Code extension).
|
||||
|
||||
```bash
|
||||
pio run
|
||||
```
|
||||
|
||||
```bash
|
||||
pio run -t upload
|
||||
```
|
||||
|
||||
```bash
|
||||
pio device monitor
|
||||
```
|
||||
|
||||
## Using the driver
|
||||
|
||||
```cpp
|
||||
#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](docs/README.md) for design notes and the plan.
|
||||
Reference in new issue
Block a user