I2S - No audio output

VanKurt
Posts: 3
Joined: Wed Mar 01, 2023 2:21 pm

I2S - No audio output

Postby VanKurt » Wed Mar 01, 2023 2:29 pm

I'm trying to send I2S data from my ESP32 DevKit 1 to a MAX98357A I2S audio amplifier. The data is read from the SPIFFS file system and sent to the I2S memory. The problem is, that there is no audio output at all, the speaker is totally silent.

(I already tested my hardware setup with some library I found online, which worked fine. So the hardware is OK, and the error must be in my code...)

My code is rather simple:

Code: Select all

#include <Arduino.h>
#include "SPIFFS.h"
#include "driver/i2s.h"
#include "driver/gpio.h"

// Pins
#define PIN_OUT_AUDIO_BCLK 23
#define PIN_OUT_AUDIO_LCLK 22
#define PIN_OUT_AUDIO_DATA 4

// I2S configuration
static const i2s_port_t i2s_num = i2s_port_t::I2S_NUM_0;
i2s_mode_t i2s_mode = (i2s_mode_t)(i2s_mode_t::I2S_MODE_MASTER | i2s_mode_t::I2S_MODE_TX);

static const i2s_config_t i2s_config = {
    .mode = i2s_mode,
    .sample_rate = 44100,
    .bits_per_sample = i2s_bits_per_sample_t::I2S_BITS_PER_SAMPLE_8BIT,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_STAND_MSB),
    .intr_alloc_flags = 0, // default interrupt priority
    .dma_buf_count = 8,
    .dma_buf_len = 64,
    .use_apll = false};

static const i2s_pin_config_t pin_config = {
    .bck_io_num = PIN_OUT_AUDIO_BCLK,
    .ws_io_num = PIN_OUT_AUDIO_LCLK,
    .data_out_num = PIN_OUT_AUDIO_DATA,
    .data_in_num = I2S_PIN_NO_CHANGE};

void setup()
{
  SPIFFS.begin();

  fs::File file = SPIFFS.open("/click2.wav");

  i2s_driver_install(i2s_num, &i2s_config, 0, NULL);
  i2s_set_pin(i2s_num, &pin_config);

  while (file.available())
  {
    uint8_t sample = file.read();

    size_t bytesWritten = 0;
    i2s_write(i2s_num, &sample, 1, &bytesWritten, 100);

    delayMicroseconds(3); // Just for testing
  }
}

void loop()
{
}

Febmaster
Posts: 1
Joined: Fri Nov 01, 2024 10:15 pm

Re: I2S - No audio output

Postby Febmaster » Fri Nov 01, 2024 10:19 pm

I'm facing the same issue, already tried a dozen of different configs but did not get one tone out.
While with other (huge) libs is is working. But this seems to be an overkill and compile time is 50 times longer!
Did you already got a solution?

Who is online

Users browsing this forum: Baidu [Spider], PhilipK and 83 guests