Find a file
2018-10-23 01:10:41 +01:00
ESP32-RGB64x32MatrixPanel-I2S-DMA.cpp New Version 2018-10-23 01:00:47 +01:00
ESP32-RGB64x32MatrixPanel-I2S-DMA.h New Version 2018-10-23 01:00:47 +01:00
ESP32-RGB64x32MatrixPanel-I2S-DMA.ino New Version 2018-10-23 01:00:47 +01:00
esp32_i2s_parallel.c Inital commit 2018-10-13 03:03:34 +01:00
esp32_i2s_parallel.h New Version 2018-10-23 01:00:47 +01:00
image.jpg Update image.jpg 2018-10-23 01:10:41 +01:00
README.md New Version 2018-10-23 01:00:47 +01:00

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