Files
mangavalkandClaude Opus 5.5 3640c7fb3f Implement I2S0 8-bit LCD-mode DMA refresh
startI2S() sets up I2S0 in 8-bit parallel (LCD) mode at 5 MHz
(PLL_D2 160 MHz / 32, BCK div 1), routes stream bits 0..3 to
VID/TVID/HS/VS via I2S0O_DATA_OUT16+n and BCK to VCLK, and loops
DMA over an 18-descriptor chain of whole lines. stopI2S() stops TX,
returns the pins to GPIO low and frees the chain.

encodeRow() now stores clock c at c ^ 2 to match the 8-bit mode
byte order (bytes 2, 3, 0, 1 per word, as in bitluni's ESP32Lib).

Builds with no warnings; not yet checked on hardware.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:08:36 +02:00

23 lines
709 B
C++

// Pin map for the EL512.256-H panel on an ESP-WROOM-32 (esp32dev).
//
// VCLK, VID, TVID, HS and VS are driven by I2S0 in 8-bit parallel (LCD) mode,
// so their levels come from a DMA byte stream. ENABLE and _LOWPWR are plain GPIO.
#pragma once
#include <stdint.h>
namespace el512pins {
// I2S-driven signals
constexpr int8_t VCLK = 18; // I2S0 BCK out -> panel VCLK
constexpr int8_t VID = 19; // byte bit 0
constexpr int8_t TVID = 21; // byte bit 1
constexpr int8_t HS = 22; // byte bit 2
constexpr int8_t VS = 23; // byte bit 3
// Static control lines
constexpr int8_t ENABLE = 25; // high = display enabled
constexpr int8_t LOWPWR_N = 26; // _LOWPWR, active low
} // namespace el512pins