arduino-audio-tools
Loading...
Searching...
No Matches
I2SConfigESP32V1.h
Go to the documentation of this file.
1#pragma once
2#include "AudioToolsConfig.h"
4
5#ifndef PIN_I2S_MCK
6# define PIN_I2S_MCK -1
7#endif
8
9namespace audio_tools {
10
13
21 public:
22
28
30 I2SConfigESP32V1(const I2SConfigESP32V1 &cfg) = default;
31
37 rx_tx_mode = mode;
38 switch(mode){
39 case RX_MODE:
41 break;
42 case TX_MODE:
44 break;
45 default:
48 break;
49 }
50 }
51
55 I2SSignalType signal_type = Digital; // e.g. the ESP32 supports analog input or output or PDM picrophones
56 bool is_master = true;
57 int port_no = 0; // processor dependent port
60 int pin_data = -1; // rx or tx pin dependent on mode: tx pin for RXTX_MODE
61 int pin_data_rx = -1; // rx pin for RXTX_MODE
68 bool auto_clear = I2S_AUTO_CLEAR;
72 int mclk_multiple = -1;
73
74 void logInfo(const char* source="") {
75 AudioInfo::logInfo(source);
76 LOGI("rx/tx mode: %s", RxTxModeNames[rx_tx_mode]);
77 LOGI("port_no: %d", port_no);
78 LOGI("is_master: %s", is_master ? "Master":"Slave");
79 LOGI("sample rate: %d", (int) sample_rate);
80 LOGI("bits per sample: %d", bits_per_sample);
81 LOGI("number of channels: %d", channels);
82 LOGI("signal_type: %s", i2s_signal_types[signal_type]);
83 LOGI("buffer_count:%d", buffer_count);
84 LOGI("buffer_size (frames):%d", buffer_size);
85 LOGI("auto_clear: %s",auto_clear? "true" : "false");
86 if (signal_type==Digital){
87 LOGI("i2s_format: %s", i2s_formats[i2s_format]);
88 }
89 if (use_apll) {
90 LOGI("use_apll: %s", use_apll ? "true" : "false");
91 }
92 // LOGI("buffer_count:%d",buffer_count);
93 // LOGI("buffer_size:%d",buffer_size);
94
95 if (pin_mck!=-1){
96 LOGI("pin_mck: %d", pin_mck);
97 }
98 if (pin_bck!=-1){
99 LOGI("pin_bck: %d", pin_bck);
100 }
101 if (pin_ws!=-1){
102 LOGI("pin_ws: %d", pin_ws);
103 }
104 if (pin_data!=-1){
105 LOGI("pin_data: %d", pin_data);
106 }
107 if (pin_data_rx!=-1){
108 LOGI("pin_data_rx: %d", pin_data_rx);
109 }
110 }
111};
112
113using I2SConfig = I2SConfigESP32V1;
114
115}
116
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define DEFAULT_BITS_PER_SAMPLE
Definition AudioToolsConfig.h:99
#define DEFAULT_CHANNELS
Definition AudioToolsConfig.h:95
#define DEFAULT_SAMPLE_RATE
Definition AudioToolsConfig.h:91
#define PIN_I2S_MCK
Definition I2SConfigESP32.h:6
#define PIN_I2S_DATA_IN
Definition I2SConfigSTD.h:18
#define PIN_I2S_WS
Definition I2SConfigSTD.h:14
#define PIN_I2S_BCK
Definition I2SConfigSTD.h:10
#define PIN_I2S_DATA_OUT
Definition I2SConfigSTD.h:22
Configuration for ESP32 i2s for IDF > 5.0.
Definition I2SConfigESP32V1.h:20
int buffer_count
number of DMA buffers (total buffer is buffer_count * buffer_size)
Definition I2SConfigESP32V1.h:64
int pin_mck
Definition I2SConfigESP32V1.h:62
RxTxMode rx_tx_mode
public settings
Definition I2SConfigESP32V1.h:53
int pin_ws
Definition I2SConfigESP32V1.h:58
bool auto_clear
Definition I2SConfigESP32V1.h:68
I2SSignalType signal_type
Definition I2SConfigESP32V1.h:55
int pin_data
Definition I2SConfigESP32V1.h:60
int pin_data_rx
Definition I2SConfigESP32V1.h:61
bool use_apll
Definition I2SConfigESP32V1.h:67
int mclk_multiple
masterclock multiple (-1 = use default)
Definition I2SConfigESP32V1.h:72
I2SConfigESP32V1()
Definition I2SConfigESP32V1.h:23
bool is_master
Definition I2SConfigESP32V1.h:56
int pin_bck
Definition I2SConfigESP32V1.h:59
I2SFormat i2s_format
Definition I2SConfigESP32V1.h:54
void logInfo(const char *source="")
Definition I2SConfigESP32V1.h:74
int port_no
Definition I2SConfigESP32V1.h:57
I2SChannelSelect channel_format
Select left or right channel when channels == 1.
Definition I2SConfigESP32V1.h:70
int buffer_size
size of each DMA buffer in frames (total buffer is buffer_count * buffer_size frames)
Definition I2SConfigESP32V1.h:66
I2SConfigESP32V1(const I2SConfigESP32V1 &cfg)=default
Default Copy Constructor.
I2SConfigESP32V1(RxTxMode mode)
Constructor.
Definition I2SConfigESP32V1.h:33
#define I2S_USE_APLL
Definition esp32.h:94
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:26
@ TX_MODE
Definition AudioTypes.h:26
@ RX_MODE
Definition AudioTypes.h:26
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
static const char * i2s_signal_types[]
Definition AudioTypes.h:450
I2SSignalType
I2S Signal Types: Digital, Analog, PDM.
Definition AudioTypes.h:443
@ Digital
Definition AudioTypes.h:444
I2SConfigESP32 I2SConfig
Definition I2SConfigESP32.h:114
static const char * RxTxModeNames[4]
Text string (description) for RxTxMode.
Definition AudioTypes.h:38
I2SFormat
I2S Formats.
Definition AudioTypes.h:422
@ I2S_STD_FORMAT
Definition AudioTypes.h:423
static const char * i2s_formats[]
Definition AudioTypes.h:432
I2SChannelSelect
Select left or right channel when number of channels = 1.
Definition I2SConfigESP32V1.h:12
Basic Audio information which drives e.g. I2S.
Definition AudioTypes.h:56
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition AudioTypes.h:58
uint16_t channels
Number of channels: 2=stereo, 1=mono.
Definition AudioTypes.h:60
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition AudioTypes.h:62
virtual void logInfo(const char *source="")
Definition AudioTypes.h:127
#define I2S_BUFFER_SIZE
Definition tangnano20k.h:11
#define I2S_BUFFER_COUNT
Definition tangnano20k.h:13