anim | ||
.gitattributes | ||
anim.c | ||
anim.h | ||
component.mk | ||
ESP32-RGB64x32MatrixPanel-I2S-DMA.cpp | ||
ESP32-RGB64x32MatrixPanel-I2S-DMA.h | ||
ESP32-RGB64x32MatrixPanel-I2S-DMA.ino | ||
esp32_i2s_parallel.c | ||
esp32_i2s_parallel.h | ||
esp32_I2sParallelDmaLedMatrix-row-based-refresh-16bitv2.ino | ||
LICENSE | ||
Makefile | ||
README.md | ||
README.rst |
Adafruit_GFX comapatable RGB64x32MatrixPanel library for ESP32 based on experimental ESP32 I2S DMA!
ESP32 Arduino library for P3 64x32 RGB LED Matrix Panel, which leverages the DMA functionality of the ESP32's I2S 'LCD Mode' which bascially means that pixel data can be sent straight from memory, via the DMA controller, to the relevant GPIO pins (RGB Matrix) with no overhead to either CPU! Most other library require the CPU to constantly bit-bang the GPIO (either with SPI as well), which results in flickery outcomes when using either CPU and decreased performance of your sketch.
This software is released under the MIT License, see LICENSE.txt.
Installation
You need to install Adafruit_GFX_Library from the "Library > Manage Libraries" menu.
Patching GPIO to avoid eratta of ESP32
You should patch the tools/sdk/ld/esp32.peripherals.ld
to avoid random pixel noise on the display as following:
/* PROVIDE ( GPIO = 0x3ff44000 ); */
PROVIDE ( GPIO = 0x60004000 );
Please refer section 3.3. in https://www.espressif.com/sites/default/files/documentation/eco_and_workarounds_for_bugs_in_esp32_en.pdf for more details.
Wiring ESP32 with the LED Matrix Panel
The panel has HUB75 compatible pins. The library provides two constructors. One with default pin wiring like:
+-----------+ Panel - ESP32 pins
| R1 G1 | R1 - IO25 G1 - IO26
| B1 GND | B1 - IO27
| R2 G2 | R2 - IO14 G2 - IO12
| B2 GND | B2 - IO13
| A B | A - IO23 B - IO22
| C D | C - IO 5 D - IO17
| CLK LAT | CLK - IO16 LAT - IO 4
| OE GND | OE - IO15
+-----------+
The panel must be powered by 5V AC adapter with enough current capacity. (Current varies due to how many LED are turned on at the same time. To drive all the LEDs, you need 5V4A adapter.)
Usage
Work in progress at the moment. Run the .ino file once hooked up.
Notes
Currently WIP. Dirty demo code only. Seems to work extremly well and drive a RGB panel with 24bit color at very high refresh rates.
Based off highly modified 'SmartMatrix' code.
Credits: https://www.esp32.com/viewtopic.php?f=17&t=3188 https://www.esp32.com/viewtopic.php?f=13&t=3256