Skip to content

Commit

Permalink
Config of I2S for ESP32
Browse files Browse the repository at this point in the history
  • Loading branch information
tomcombriat committed Jan 16, 2025
1 parent e434ba8 commit 1e91f3f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 8 deletions.
31 changes: 23 additions & 8 deletions internal/MozziGuts_impl_ESP32.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,11 @@ namespace MozziPrivate {
size_t bytes_written;
//i2s_write(i2s_num, &_esp32_prev_sample, ESP_SAMPLE_SIZE, &bytes_written, 0);
#if MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_I2S_DAC) || MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_PDM_VIA_I2S)
i2s_channel_write(tx_handle,_esp32_prev_sample, sizeof(_esp32_prev_sample[0]), &bytes_written, 0);// TODO STEREO
# if (MOZZI_AUDIO_CHANNELS > 1)
i2s_channel_write(tx_handle,_esp32_prev_sample, sizeof(_esp32_prev_sample[0]), &bytes_written, 0);
# else
i2s_channel_write(tx_handle,_esp32_prev_sample, 2*sizeof(_esp32_prev_sample[0]), &bytes_written, 0);
# endif
#elif MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_INTERNAL_DAC)
dac_continuous_write(dac_handle, _esp32_prev_sample, ESP_SAMPLE_SIZE, &bytes_written, 0);
/*uint8_t tt = 120;
Expand Down Expand Up @@ -118,7 +122,7 @@ namespace MozziPrivate {
_esp32_prev_sample[0] = f.l();
_esp32_prev_sample[1] = f.r();
# endif
_esp32_can_buffer_next = esp32_tryWriteSample();
_esp32_can_buffer_next = esp32_tryWriteSample();
}
#endif
} // namespace MozziPrivate
Expand Down Expand Up @@ -168,19 +172,30 @@ namespace MozziPrivate {
i2s_new_channel(&chan_cfg, &tx_handle, NULL);
//static const i2s_config_t i2s_config = {
i2s_std_config_t std_cfg = {
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(MOZZI_AUDIO_RATE),
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_MONO), // TODO: add between the different modes? AND STEREO
//.slot_cfg = I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_MONO),
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(MOZZI_AUDIO_RATE),
# if (MOZZI_IS, MOZZI_I2S_FORMAT_PLAIN)
# if (MOZZI_AUDIO_CHANNELS > 1)
.slot_cfg = I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_STEREO),
# else
.slot_cfg = I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_MONO),
# endif
# elif (MOZZI_IS, MOZZI_I2S_FORMAT_LSBJ)
# if (MOZZI_AUDIO_CHANNELS > 1)
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_STEREO), // TODO: add STEREO
# else
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(ESP_SAMPLE_SIZE, I2S_SLOT_MODE_MONO), // TODO: add STEREO
# endif
# endif
.gpio_cfg = {
.mclk = gpio_num_t(MOZZI_I2S_PIN_MCLK),
.bclk = gpio_num_t(MOZZI_I2S_PIN_BCK),
.ws = gpio_num_t(MOZZI_I2S_PIN_WS),
.dout = gpio_num_t(MOZZI_I2S_PIN_DATA),
.din = I2S_GPIO_UNUSED,
.invert_flags = {
.mclk_inv = false,
.bclk_inv = false,
.ws_inv = true,
.mclk_inv = MOZZI_I2S_MBCK_INV,
.bclk_inv = MOZZI_I2S_BCK_INV,
.ws_inv = MOZZI_I2S_WS_INV,
},
},

Expand Down
16 changes: 16 additions & 0 deletions internal/config_checks_esp32.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ MOZZI_CHECK_SUPPORTED(MOZZI_ANALOG_READ, MOZZI_ANALOG_READ_NONE)
MOZZI_CHECK_SUPPORTED(MOZZI_AUDIO_INPUT, MOZZI_AUDIO_INPUT_NONE)

#if MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_I2S_DAC, MOZZI_OUTPUT_PDM_VIA_I2S)
# if !defined(MOZZI_I2S_FORMAT)
# define MOZZI_I2S_FORMAT MOZZI_I2S_FORMAT_PLAIN
# endif
# if !defined(MOZZI_I2S_PIN_BCK)
# define MOZZI_I2S_PIN_BCK 26
# endif
Expand All @@ -115,6 +118,19 @@ MOZZI_CHECK_SUPPORTED(MOZZI_AUDIO_INPUT, MOZZI_AUDIO_INPUT_NONE)
# if !defined(MOZZI_I2S_PIN_MCLK)
# define MOZZI_I2S_PIN_MCLK I2S_GPIO_UNUSED
# endif
# if !defined(MOZZI_I2S_BCK_INV)
# define MOZZI_I2S_BCK_INV 0
# endif
# if !defined(MOZZI_I2S_WS_INV)
# if MOZZI_IS(MOZZI_I2S_FORMAT, MOZZI_I2S_FORMAT_PLAIN)
# define MOZZI_I2S_WS_INV 0
# elif MOZZI_IS(MOZZI_I2S_FORMAT, MOZZI_I2S_FORMAT_LSBJ)
# define MOZZI_I2S_WS_INV 1
# endif
# endif
# if !defined(MOZZI_I2S_MBCK_INV)
# define MOZZI_I2S_MBCK_INV 0
# endif
#endif

#if MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_INTERNAL_DAC, MOZZI_OUTPUT_I2S_DAC, MOZZI_OUTPUT_PDM_VIA_I2S)
Expand Down

0 comments on commit 1e91f3f

Please sign in to comment.