Skip to content

Integration log for FastLED #38

@zackees

Description

@zackees

Integration Log

The branch with the this driver is located at

https://github.com/FastLED/FastLED/tree/esp32s3-i2s

How to test in FastLED

clone fastled, switch to the esp32s3-i2s branch and open up the repo in VSCode

git clone https://github.com/fastled/fastled
cd fastled
git checkout esp32s3-i2s
./install # Optional, but it provides VSCode with intellisense definitions
code .  # launch vscode

VSCODE: Click the upload button (the esp32s3-i2s branch already set to i2s demo for esp32s3)

Image

the example will now load

First Pass Results

First pass required a fix. This has been applied, see below.

FastLED compiles with IDF 5.4 so it might be newer than you are on.

Manually tested yet? No.

ESP32-S3 I2S Compilation Issues and Fixes

Issue Description

The ESP32-S3 Blink example compilation was failing with the following error:

src/third_party/yves/I2SClockLessLedDriver/src/I2SClockLessLedDriver.h:685:35: error: 'gdma_channel_alloc_config_t::<unnamed struct>' has no non-static data member named 'isr_cache_safe'

Root Cause

The newer ESP-IDF version (used by the platform) has removed the isr_cache_safe field from the gdma_channel_alloc_config_t structure. The third-party I2S driver code was still trying to initialize this deprecated field.

Fix Applied

File: src/third_party/yves/I2SClockLessLedDriver/src/I2SClockLessLedDriver.h
Line: 685

Before:

gdma_channel_alloc_config_t dma_chan_config = {
    .sibling_chan = NULL,
    .direction = GDMA_CHANNEL_DIRECTION_TX,
    .flags = {
        .reserve_sibling = 0,
    .isr_cache_safe= true}};

After:

gdma_channel_alloc_config_t dma_chan_config = {
    .sibling_chan = NULL,
    .direction = GDMA_CHANNEL_DIRECTION_TX,
    .flags = {
        .reserve_sibling = 0}};

Result

After removing the unsupported isr_cache_safe field, the ESP32-S3 Blink example compiles successfully. The compilation completes with only deprecation warnings (expected with newer ESP-IDF versions) but no errors.

Additional Warnings (Non-blocking)

The following warnings remain but do not prevent compilation:

  • Deprecated driver/periph_ctrl.h header usage
  • MIN macro redefinition warning
  • Deprecated gdma_new_channel function (should use gdma_new_ahb_channel or gdma_new_axi_channel)
  • Narrowing conversion warning in ISR handler

These warnings indicate areas for future improvement but do not block current functionality.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions