diff --git a/_i2_s_e_s_p32_v1_8h_source.html b/_i2_s_e_s_p32_v1_8h_source.html
index df2267988..dcbb92661 100644
--- a/_i2_s_e_s_p32_v1_8h_source.html
+++ b/_i2_s_e_s_p32_v1_8h_source.html
@@ -255,285 +255,286 @@
204 if (size > 0) result.dma_frame_num = size / frame_size;
-
-
-
-
-
- 210 i2s_std_clk_config_t clk_cfg =
- 211 I2S_STD_CLK_DEFAULT_CONFIG((uint32_t)cfg.
sample_rate);
-
- 213 clk_cfg.mclk_multiple = (i2s_mclk_multiple_t) cfg.
mclk_multiple;
-
-
-
- 217 clk_cfg.mclk_multiple = I2S_MCLK_MULTIPLE_384;
- 218 LOGI(
"mclk_multiple=384");
-
-
-
-
-
-
- 225 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
-
- 227 LOGI(
"tx: %d, rx: %d", txPin, rxPin);
- 228 i2s_std_config_t std_cfg = {
- 229 .clk_cfg = getClockConfig(cfg),
- 230 .slot_cfg = getSlotConfig(cfg),
-
-
- 233 .mclk = (gpio_num_t)cfg.pin_mck,
- 234 .bclk = (gpio_num_t)cfg.pin_bck,
- 235 .ws = (gpio_num_t)cfg.pin_ws,
- 236 .dout = (gpio_num_t)txPin,
- 237 .din = (gpio_num_t)rxPin,
-
-
-
-
-
-
-
-
-
-
- 248 if (i2s_channel_init_std_mode(tx_chan, &std_cfg) != ESP_OK) {
- 249 LOGE(
"i2s_channel_init_std_mode %s",
"tx");
-
-
- 252 if (i2s_channel_enable(tx_chan) != ESP_OK) {
- 253 LOGE(
"i2s_channel_enable %s",
"tx");
-
-
-
-
-
- 259 if (i2s_channel_init_std_mode(rx_chan, &std_cfg) != ESP_OK) {
- 260 LOGE(
"i2s_channel_init_std_mode %s",
"rx");
-
-
- 263 if (i2s_channel_enable(rx_chan) != ESP_OK) {
- 264 LOGE(
"i2s_channel_enable %s",
"rx");
-
-
-
-
- 269 LOGD(
"%s - %s", __func__,
"started");
-
-
-
-
- 274 i2s_chan_handle_t &rx_chan)
override {
-
- 276 auto clock_cfg = getClockConfig(cfg);
- 277 if (tx_chan !=
nullptr) {
- 278 i2s_channel_disable(tx_chan);
- 279 rc = i2s_channel_reconfig_std_clock(tx_chan, &clock_cfg) == ESP_OK;
- 280 i2s_channel_enable(tx_chan);
-
- 282 if (rx_chan !=
nullptr) {
- 283 i2s_channel_disable(rx_chan);
- 284 rc = i2s_channel_reconfig_std_clock(rx_chan, &clock_cfg) == ESP_OK;
- 285 i2s_channel_enable(rx_chan);
-
-
-
-
-
-
-
-
-
-
- 296 return I2S_PDM_TX_SLOT_DEFAULT_CONFIG(
-
-
-
-
-
- 302 return I2S_CHANNEL_DEFAULT_CONFIG(
- 303 (i2s_port_t)cfg.port_no,
- 304 cfg.is_master ? I2S_ROLE_MASTER : I2S_ROLE_SLAVE);
-
-
- 307 i2s_pdm_tx_clk_config_t getTxClockConfig(I2SConfigESP32V1 &cfg) {
- 308 return I2S_PDM_TX_CLK_DEFAULT_CONFIG((uint32_t)cfg.sample_rate);
-
-
- 311 bool startChannels(I2SConfigESP32V1 &cfg, i2s_chan_handle_t &tx_chan,
- 312 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
- 313 if (cfg.rx_tx_mode == TX_MODE) {
- 314 i2s_pdm_tx_config_t pdm_tx_cfg = {
- 315 .clk_cfg = getTxClockConfig(cfg),
- 316 .slot_cfg = getTxSlotConfig(cfg),
-
-
- 319 .clk = (gpio_num_t)cfg.pin_bck,
- 320 .dout = (gpio_num_t)txPin,
-
-
-
-
-
-
-
- 328 if (i2s_channel_init_pdm_tx_mode(tx_chan, &pdm_tx_cfg) != ESP_OK) {
- 329 LOGE(
"i2s_channel_init_pdm_tx_mode %s",
"tx");
-
-
- 332 if (i2s_channel_enable(tx_chan) != ESP_OK) {
- 333 LOGE(
"i2s_channel_enable %s",
"tx");
-
-
-
- 337 LOGE(
"Only TX supported for PDM");
-
-
-
-
-
-
-
-
-
-
-
- 349 struct DriverTDM :
public DriverCommon {
- 350 i2s_tdm_slot_config_t getSlotConfig(I2SConfigESP32V1 &cfg) {
-
- 352 for (
int j = 0; j < cfg.channels; j++) {
-
-
- 355 return I2S_TDM_MSB_SLOT_DEFAULT_CONFIG(
- 356 (i2s_data_bit_width_t)cfg.bits_per_sample, I2S_SLOT_MODE_STEREO,
- 357 (i2s_tdm_slot_mask_t)slots);
-
-
- 360 i2s_chan_config_t getChannelConfig(I2SConfigESP32V1 &cfg) {
- 361 return I2S_CHANNEL_DEFAULT_CONFIG(
- 362 (i2s_port_t)cfg.port_no,
- 363 cfg.is_master ? I2S_ROLE_MASTER : I2S_ROLE_SLAVE);
-
-
- 366 i2s_tdm_clk_config_t getClockConfig(I2SConfigESP32V1 &cfg) {
- 367 return I2S_TDM_CLK_DEFAULT_CONFIG((uint32_t)cfg.sample_rate);
-
-
- 370 bool startChannels(I2SConfigESP32V1 &cfg, i2s_chan_handle_t &tx_chan,
- 371 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
- 372 i2s_tdm_config_t tdm_cfg = {
- 373 .clk_cfg = getClockConfig(cfg),
- 374 .slot_cfg = getSlotConfig(cfg),
-
-
- 377 .mclk = (gpio_num_t)cfg.pin_mck,
- 378 .bclk = (gpio_num_t)cfg.pin_bck,
- 379 .ws = (gpio_num_t)cfg.pin_ws,
- 380 .dout = (gpio_num_t)txPin,
- 381 .din = (gpio_num_t)rxPin,
-
-
-
-
-
-
-
-
-
- 391 if (cfg.rx_tx_mode == TX_MODE) {
- 392 if (i2s_channel_init_tdm_mode(tx_chan, &tdm_cfg) != ESP_OK) {
- 393 LOGE(
"i2s_channel_init_tdm_tx_mode %s",
"tx");
-
-
-
- 397 if (cfg.rx_tx_mode == RX_MODE) {
- 398 if (i2s_channel_init_tdm_mode(rx_chan, &tdm_cfg) != ESP_OK) {
- 399 LOGE(
"i2s_channel_init_tdm_tx_mode %s",
"rx");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 418 LOGE(
"invalid channels: %d", cfg.
channels);
-
-
-
-
- 423 if (!newChannels(cfg, driver)) {
-
-
-
-
- 428 is_started = driver.startChannels(cfg, tx_chan, rx_chan, txPin, rxPin);
-
-
- 431 LOGE(
"Channels not started");
-
-
-
-
-
- 437 i2s_chan_config_t chan_cfg = driver.getChannelConfig(cfg);
-
-
- 440 if (i2s_new_channel(&chan_cfg, NULL, &rx_chan) != ESP_OK) {
-
-
-
-
-
- 446 if (i2s_new_channel(&chan_cfg, &tx_chan, NULL) != ESP_OK) {
-
-
-
-
-
- 452 if (i2s_new_channel(&chan_cfg, &tx_chan, &rx_chan) != ESP_OK) {
-
-
-
-
-
-
-
- 460 DriverCommon &getDriver(I2SConfigESP32V1 &cfg) {
- 461 switch (cfg.signal_type) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 476 LOGE(
"Unsupported singal_type");
-
-
-
-
- 481 using I2SDriver = I2SDriverESP32V1;
-
-
-
-
+ 205 LOGI(
"dma_frame_num: %d", result.dma_frame_num);
+
+
+
+
+
+ 211 i2s_std_clk_config_t clk_cfg =
+ 212 I2S_STD_CLK_DEFAULT_CONFIG((uint32_t)cfg.
sample_rate);
+
+ 214 clk_cfg.mclk_multiple = (i2s_mclk_multiple_t) cfg.
mclk_multiple;
+
+
+
+ 218 clk_cfg.mclk_multiple = I2S_MCLK_MULTIPLE_384;
+ 219 LOGI(
"mclk_multiple=384");
+
+
+
+
+
+
+ 226 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
+
+ 228 LOGI(
"tx: %d, rx: %d", txPin, rxPin);
+ 229 i2s_std_config_t std_cfg = {
+ 230 .clk_cfg = getClockConfig(cfg),
+ 231 .slot_cfg = getSlotConfig(cfg),
+
+
+ 234 .mclk = (gpio_num_t)cfg.pin_mck,
+ 235 .bclk = (gpio_num_t)cfg.pin_bck,
+ 236 .ws = (gpio_num_t)cfg.pin_ws,
+ 237 .dout = (gpio_num_t)txPin,
+ 238 .din = (gpio_num_t)rxPin,
+
+
+
+
+
+
+
+
+
+
+ 249 if (i2s_channel_init_std_mode(tx_chan, &std_cfg) != ESP_OK) {
+ 250 LOGE(
"i2s_channel_init_std_mode %s",
"tx");
+
+
+ 253 if (i2s_channel_enable(tx_chan) != ESP_OK) {
+ 254 LOGE(
"i2s_channel_enable %s",
"tx");
+
+
+
+
+
+ 260 if (i2s_channel_init_std_mode(rx_chan, &std_cfg) != ESP_OK) {
+ 261 LOGE(
"i2s_channel_init_std_mode %s",
"rx");
+
+
+ 264 if (i2s_channel_enable(rx_chan) != ESP_OK) {
+ 265 LOGE(
"i2s_channel_enable %s",
"rx");
+
+
+
+
+ 270 LOGD(
"%s - %s", __func__,
"started");
+
+
+
+
+ 275 i2s_chan_handle_t &rx_chan)
override {
+
+ 277 auto clock_cfg = getClockConfig(cfg);
+ 278 if (tx_chan !=
nullptr) {
+ 279 i2s_channel_disable(tx_chan);
+ 280 rc = i2s_channel_reconfig_std_clock(tx_chan, &clock_cfg) == ESP_OK;
+ 281 i2s_channel_enable(tx_chan);
+
+ 283 if (rx_chan !=
nullptr) {
+ 284 i2s_channel_disable(rx_chan);
+ 285 rc = i2s_channel_reconfig_std_clock(rx_chan, &clock_cfg) == ESP_OK;
+ 286 i2s_channel_enable(rx_chan);
+
+
+
+
+
+
+
+
+
+
+ 297 return I2S_PDM_TX_SLOT_DEFAULT_CONFIG(
+
+
+
+
+
+ 303 return I2S_CHANNEL_DEFAULT_CONFIG(
+ 304 (i2s_port_t)cfg.port_no,
+ 305 cfg.is_master ? I2S_ROLE_MASTER : I2S_ROLE_SLAVE);
+
+
+ 308 i2s_pdm_tx_clk_config_t getTxClockConfig(I2SConfigESP32V1 &cfg) {
+ 309 return I2S_PDM_TX_CLK_DEFAULT_CONFIG((uint32_t)cfg.sample_rate);
+
+
+ 312 bool startChannels(I2SConfigESP32V1 &cfg, i2s_chan_handle_t &tx_chan,
+ 313 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
+ 314 if (cfg.rx_tx_mode == TX_MODE) {
+ 315 i2s_pdm_tx_config_t pdm_tx_cfg = {
+ 316 .clk_cfg = getTxClockConfig(cfg),
+ 317 .slot_cfg = getTxSlotConfig(cfg),
+
+
+ 320 .clk = (gpio_num_t)cfg.pin_bck,
+ 321 .dout = (gpio_num_t)txPin,
+
+
+
+
+
+
+
+ 329 if (i2s_channel_init_pdm_tx_mode(tx_chan, &pdm_tx_cfg) != ESP_OK) {
+ 330 LOGE(
"i2s_channel_init_pdm_tx_mode %s",
"tx");
+
+
+ 333 if (i2s_channel_enable(tx_chan) != ESP_OK) {
+ 334 LOGE(
"i2s_channel_enable %s",
"tx");
+
+
+
+ 338 LOGE(
"Only TX supported for PDM");
+
+
+
+
+
+
+
+
+
+
+
+ 350 struct DriverTDM :
public DriverCommon {
+ 351 i2s_tdm_slot_config_t getSlotConfig(I2SConfigESP32V1 &cfg) {
+
+ 353 for (
int j = 0; j < cfg.channels; j++) {
+
+
+ 356 return I2S_TDM_MSB_SLOT_DEFAULT_CONFIG(
+ 357 (i2s_data_bit_width_t)cfg.bits_per_sample, I2S_SLOT_MODE_STEREO,
+ 358 (i2s_tdm_slot_mask_t)slots);
+
+
+ 361 i2s_chan_config_t getChannelConfig(I2SConfigESP32V1 &cfg) {
+ 362 return I2S_CHANNEL_DEFAULT_CONFIG(
+ 363 (i2s_port_t)cfg.port_no,
+ 364 cfg.is_master ? I2S_ROLE_MASTER : I2S_ROLE_SLAVE);
+
+
+ 367 i2s_tdm_clk_config_t getClockConfig(I2SConfigESP32V1 &cfg) {
+ 368 return I2S_TDM_CLK_DEFAULT_CONFIG((uint32_t)cfg.sample_rate);
+
+
+ 371 bool startChannels(I2SConfigESP32V1 &cfg, i2s_chan_handle_t &tx_chan,
+ 372 i2s_chan_handle_t &rx_chan,
int txPin,
int rxPin) {
+ 373 i2s_tdm_config_t tdm_cfg = {
+ 374 .clk_cfg = getClockConfig(cfg),
+ 375 .slot_cfg = getSlotConfig(cfg),
+
+
+ 378 .mclk = (gpio_num_t)cfg.pin_mck,
+ 379 .bclk = (gpio_num_t)cfg.pin_bck,
+ 380 .ws = (gpio_num_t)cfg.pin_ws,
+ 381 .dout = (gpio_num_t)txPin,
+ 382 .din = (gpio_num_t)rxPin,
+
+
+
+
+
+
+
+
+
+ 392 if (cfg.rx_tx_mode == TX_MODE) {
+ 393 if (i2s_channel_init_tdm_mode(tx_chan, &tdm_cfg) != ESP_OK) {
+ 394 LOGE(
"i2s_channel_init_tdm_tx_mode %s",
"tx");
+
+
+
+ 398 if (cfg.rx_tx_mode == RX_MODE) {
+ 399 if (i2s_channel_init_tdm_mode(rx_chan, &tdm_cfg) != ESP_OK) {
+ 400 LOGE(
"i2s_channel_init_tdm_tx_mode %s",
"rx");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 419 LOGE(
"invalid channels: %d", cfg.
channels);
+
+
+
+
+ 424 if (!newChannels(cfg, driver)) {
+
+
+
+
+ 429 is_started = driver.startChannels(cfg, tx_chan, rx_chan, txPin, rxPin);
+
+
+ 432 LOGE(
"Channels not started");
+
+
+
+
+
+ 438 i2s_chan_config_t chan_cfg = driver.getChannelConfig(cfg);
+
+
+ 441 if (i2s_new_channel(&chan_cfg, NULL, &rx_chan) != ESP_OK) {
+
+
+
+
+
+ 447 if (i2s_new_channel(&chan_cfg, &tx_chan, NULL) != ESP_OK) {
+
+
+
+
+
+ 453 if (i2s_new_channel(&chan_cfg, &tx_chan, &rx_chan) != ESP_OK) {
+
+
+
+
+
+
+
+ 461 DriverCommon &getDriver(I2SConfigESP32V1 &cfg) {
+ 462 switch (cfg.signal_type) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 477 LOGE(
"Unsupported singal_type");
+
+
+
+
+ 482 using I2SDriver = I2SDriverESP32V1;
+
+
+
+
@@ -550,7 +551,7 @@
-
+
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition: AudioTypes.h:26