diff options
| author | mrfaptastic <12006953+mrfaptastic@users.noreply.github.com> | 2022-09-30 03:17:19 +0100 |
|---|---|---|
| committer | mrfaptastic <12006953+mrfaptastic@users.noreply.github.com> | 2022-09-30 03:17:19 +0100 |
| commit | ebe75dcaba0239d225243cdedd31aaf860abbd0a (patch) | |
| tree | fda21143906b93de687447af52c40f9329956d21 /ESP32-HUB75-MatrixPanel-leddrivers.cpp | |
| parent | 86063fe594cda6a572bd335e7e34af7c75226aad (diff) | |
Update to include S3 support.
Refactor tonnes of code. Double buffering not yet fully tested. PSRAM support doesn't work at all - garbled mess.
Enable in platformIO using:
build_flags =
-DSPIRAM_FRAMEBUFFER=1
Diffstat (limited to 'ESP32-HUB75-MatrixPanel-leddrivers.cpp')
| -rw-r--r-- | ESP32-HUB75-MatrixPanel-leddrivers.cpp | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/ESP32-HUB75-MatrixPanel-leddrivers.cpp b/ESP32-HUB75-MatrixPanel-leddrivers.cpp deleted file mode 100644 index bb482a2..0000000 --- a/ESP32-HUB75-MatrixPanel-leddrivers.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - Various LED Driver chips might need some specific code for initialisation/control logic - -*/ - -#include <Arduino.h> -#include "ESP32-HUB75-MatrixPanel-I2S-DMA.h" - -#define CLK_PULSE digitalWrite(_cfg.gpio.clk, HIGH); digitalWrite(_cfg.gpio.clk, LOW); - -/** - * @brief - pre-init procedures for specific led-drivers - * this method is called before DMA/I2S setup while GPIOs - * aint yet assigned for DMA operation - * - */ -void MatrixPanel_I2S_DMA::shiftDriver(const HUB75_I2S_CFG& _cfg){ - switch (_cfg.driver){ - case HUB75_I2S_CFG::ICN2038S: - case HUB75_I2S_CFG::FM6124: - case HUB75_I2S_CFG::FM6126A: - fm6124init(_cfg); - break; - case HUB75_I2S_CFG::MBI5124: - /* MBI5124 chips must be clocked with positive-edge, since it's LAT signal - * resets on clock's rising edge while high - * https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/files/5952216/5a542453754da.pdf - */ - m_cfg.clkphase=true; - break; - case HUB75_I2S_CFG::SHIFTREG: - default: - break; - } -} - - -void MatrixPanel_I2S_DMA::fm6124init(const HUB75_I2S_CFG& _cfg){ - #if SERIAL_DEBUG - Serial.println( F("MatrixPanel_I2S_DMA - initializing FM6124 driver...")); - #endif - bool REG1[16] = {0,0,0,0,0, 1,1,1,1,1,1, 0,0,0,0,0}; // this sets global matrix brightness power - bool REG2[16] = {0,0,0,0,0, 0,0,0,0,1,0, 0,0,0,0,0}; // a single bit enables the matrix output - - for (uint8_t _pin:{_cfg.gpio.r1, _cfg.gpio.r2, _cfg.gpio.g1, _cfg.gpio.g2, _cfg.gpio.b1, _cfg.gpio.b2, _cfg.gpio.clk, _cfg.gpio.lat, _cfg.gpio.oe}){ - pinMode(_pin, OUTPUT); - digitalWrite(_pin, LOW); - } - - digitalWrite(_cfg.gpio.oe, HIGH); // Disable Display - - // Send Data to control register REG1 - // this sets the matrix brightness actually - for (int l = 0; l < PIXELS_PER_ROW; l++){ - for (uint8_t _pin:{_cfg.gpio.r1, _cfg.gpio.r2, _cfg.gpio.g1, _cfg.gpio.g2, _cfg.gpio.b1, _cfg.gpio.b2}) - digitalWrite(_pin, REG1[l%16]); // we have 16 bits shifters and write the same value all over the matrix array - - if (l > PIXELS_PER_ROW - 12){ // pull the latch 11 clocks before the end of matrix so that REG1 starts counting to save the value - digitalWrite(_cfg.gpio.lat, HIGH); - } - CLK_PULSE - } - - // drop the latch and save data to the REG1 all over the FM6124 chips - digitalWrite(_cfg.gpio.lat, LOW); - - // Send Data to control register REG2 (enable LED output) - for (int l = 0; l < PIXELS_PER_ROW; l++){ - for (uint8_t _pin:{_cfg.gpio.r1, _cfg.gpio.r2, _cfg.gpio.g1, _cfg.gpio.g2, _cfg.gpio.b1, _cfg.gpio.b2}) - digitalWrite(_pin, REG2[l%16]); // we have 16 bits shifters and we write the same value all over the matrix array - - if (l > PIXELS_PER_ROW - 13){ // pull the latch 12 clocks before the end of matrix so that reg2 stars counting to save the value - digitalWrite(_cfg.gpio.lat, HIGH); - } - CLK_PULSE - } - - // drop the latch and save data to the REG1 all over the FM6126 chips - digitalWrite(_cfg.gpio.lat, LOW); - - // blank data regs to keep matrix clear after manipulations - for (uint8_t _pin:{_cfg.gpio.r1, _cfg.gpio.r2, _cfg.gpio.g1, _cfg.gpio.g2, _cfg.gpio.b1, _cfg.gpio.b2}) - digitalWrite(_pin, LOW); - - for (int l = 0; l < PIXELS_PER_ROW; ++l){ - CLK_PULSE - } - - digitalWrite(_cfg.gpio.lat, HIGH); - CLK_PULSE - digitalWrite(_cfg.gpio.lat, LOW); - digitalWrite(_cfg.gpio.oe, LOW); // Enable Display - CLK_PULSE -}
\ No newline at end of file |
