From 2b4a90255f647c46ab57d0669befb9747f98ef55 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:55:10 +0100 Subject: [PATCH 1/2] Fix Arduino and IDF CI * Platform pioarduino / Arduino core 3.1.3 IDF 5.3.2.250210 --- .github/workflows/esp-idf-with-gfx.yml | 5 +++-- examples/PIO_TestPatterns/platformio.ini | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/esp-idf-with-gfx.yml b/.github/workflows/esp-idf-with-gfx.yml index a05b8f3..8d21077 100644 --- a/.github/workflows/esp-idf-with-gfx.yml +++ b/.github/workflows/esp-idf-with-gfx.yml @@ -12,7 +12,7 @@ on: jobs: build: - name: esp-idf 5.3.1 with Adafruit GFX + name: esp-idf v5.3.2 with Adafruit GFX runs-on: ubuntu-latest @@ -39,12 +39,13 @@ jobs: uses: actions/checkout@v4 with: repository: 'espressif/arduino-esp32' + ref: 3.1.3 path: 'examples/esp-idf/with-gfx/components/arduino' - name: Edit Adafruit_BusIO CMakeLists.txt run: sed -i 's/arduino-esp32)/arduino)/g' examples/esp-idf/with-gfx/components/Adafruit_BusIO/CMakeLists.txt - name: esp-idf build uses: espressif/esp-idf-ci-action@v1 with: - esp_idf_version: v5.3.1 + esp_idf_version: v5.3.2 target: esp32 path: 'examples/esp-idf/with-gfx' diff --git a/examples/PIO_TestPatterns/platformio.ini b/examples/PIO_TestPatterns/platformio.ini index 185513a..a245f55 100644 --- a/examples/PIO_TestPatterns/platformio.ini +++ b/examples/PIO_TestPatterns/platformio.ini @@ -4,7 +4,7 @@ description = HUB75 ESP32 I2S DMA test patterns example ;src_dir = src [env] -platform = espressif32 +platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip board = wemos_d1_mini32 lib_deps = fastled/FastLED From c5fd8d2d52bc19245fec2656172e6e818c8e8b45 Mon Sep 17 00:00:00 2001 From: mrcodetastic <12006953+mrcodetastic@users.noreply.github.com> Date: Mon, 17 Mar 2025 13:59:39 +0000 Subject: [PATCH 2/2] Update ESP32-HUB75-MatrixPanel-I2S-DMA.cpp --- src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp b/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp index 068bc24..86acc0f 100644 --- a/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp +++ b/src/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp @@ -510,45 +510,41 @@ void MatrixPanel_I2S_DMA::clearFrameBuffer(bool _buff_id) --row_idx; ESP32_I2S_DMA_STORAGE_TYPE *row = fb->rowBits[row_idx]->getDataPtr(0); // set pointer to the HEAD of a buffer holding data for the entire matrix row - ESP32_I2S_DMA_STORAGE_TYPE abcde = (ESP32_I2S_DMA_STORAGE_TYPE)row_idx; // get last pixel index in a row of all colourdepths int x_pixel = fb->rowBits[row_idx]->width * fb->rowBits[row_idx]->colour_depth; - + abcde <<= BITS_ADDR_OFFSET; // shift row y-coord to match ABCDE bits in vector from 8 to 12 do { --x_pixel; - if (m_cfg.driver == HUB75_I2S_CFG::SM5266P) { - // modifications here for row shift register type SM5266P - // https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/164 - row[x_pixel] = abcde & (0x18 << BITS_ADDR_OFFSET); // mask out the bottom 3 bits which are the clk di bk inputs + // modifications here for row shift register type SM5266P + // https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/164 + row[x_pixel] = abcde & (0x18 << BITS_ADDR_OFFSET); // mask out the bottom 3 bits which are the clk di bk inputs } else if (m_cfg.driver == HUB75_I2S_CFG::DP3246_SM5368) { - row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = 0x0000; + row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = 0x0000; } else { - row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = abcde; + row[ESP32_TX_FIFO_POSITION_ADJUST(x_pixel)] = abcde; } } while (x_pixel != fb->rowBits[row_idx]->width); // spare the first "width's" worth of pixels as they are the LSB pixels/colordepth - // colour_index[0] (LSB) x_pixels must be "marked" with a previous's row address, 'cause it is used to display - // previous row while we pump in MSBs's for a new row - + // The colour_index[0] (LSB) x_pixels must be "marked" with a previous's row address, because it is used to display + // previous row while we pump in MSBs's for the next row. if (row_idx == 0) { abcde = ROWS_PER_FRAME-1; // wrap around } else { abcde = row_idx-1; } - + abcde <<= BITS_ADDR_OFFSET; // shift row y-coord to match ABCDE bits in vector from 8 to 12 - do { --x_pixel;