Skip to content

Commit 2a6baef

Browse files
committed
i2s-i2s examples
1 parent bae31bd commit 2a6baef

File tree

2 files changed

+72
-28
lines changed

2 files changed

+72
-28
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* @file streams-i2s-filter-i2s-2.ino
3+
* @brief Copy audio from I2S to I2S using an FIR filter - We use 2 different i2s ports!
4+
* @author Phil Schatzmann
5+
* @copyright GPLv3
6+
*/
7+
8+
#include "AudioTools.h"
9+
10+
uint16_t sample_rate=44100;
11+
uint16_t channels = 2;
12+
I2SStream in;
13+
I2SStream out;
14+
StreamCopy copier(out, in); // copies sound into i2s
15+
16+
17+
// Arduino Setup
18+
void setup(void) {
19+
// Open Serial
20+
Serial.begin(115200);
21+
// change to Warning to improve the quality
22+
AudioLogger::instance().begin(Serial, AudioLogger::Info);
23+
24+
// start I2S in
25+
Serial.println("starting I2S...");
26+
auto config_in = in.defaultConfig(RX_MODE);
27+
config_in.sample_rate = sample_rate;
28+
config_in.bits_per_sample = 16;
29+
config_in.i2s_format = I2S_STD_FORMAT;
30+
config_in.is_master = true;
31+
config_in.port_no = 0;
32+
config_in.pin_ws = 14;
33+
config_in.pin_bck = 15;
34+
config_in.pin_data = 16;
35+
// config_in.fixed_mclk = sample_rate * 256
36+
// config_in.pin_mck = 2
37+
in.begin(config_in);
38+
39+
// start I2S out
40+
auto config_out = out.defaultConfig(TX_MODE);
41+
config_out.sample_rate = sample_rate;
42+
config_out.bits_per_sample = 16;
43+
config_out.i2s_format = I2S_STD_FORMAT;
44+
config_out.is_master = true;
45+
config_out.port_no = 1;
46+
config_out.pin_ws = 17;
47+
config_out.pin_bck = 18;
48+
config_out.pin_data = 19;
49+
out.begin(config_out);
50+
51+
Serial.println("I2S started...");
52+
}
53+
54+
// Arduino loop - copy sound to out
55+
void loop() {
56+
copier.copy();
57+
}

examples/examples-stream/streams-i2s-i2s/streams-i2s-i2s.ino

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @file streams-i2s-filter-i2s.ino
3-
* @brief Copy audio from I2S to I2S using an FIR filter
3+
* @brief Copy audio from I2S to I2S using an FIR filter - I2S uses 1 i2s port
44
* @author Phil Schatzmann
55
* @copyright GPLv3
66
*/
@@ -9,9 +9,8 @@
99

1010
uint16_t sample_rate=44100;
1111
uint16_t channels = 2;
12-
I2SStream in;
13-
I2SStream out;
14-
StreamCopy copier(out, in); // copies sound into i2s
12+
I2SStream i2s;
13+
StreamCopy copier(i2s, i2s); // copies sound into i2s
1514

1615

1716
// Arduino Setup
@@ -23,30 +22,18 @@ void setup(void) {
2322

2423
// start I2S in
2524
Serial.println("starting I2S...");
26-
auto config_in = in.defaultConfig(RX_MODE);
27-
config_in.sample_rate = sample_rate;
28-
config_in.bits_per_sample = 16;
29-
config_in.i2s_format = I2S_STD_FORMAT;
30-
config_in.is_master = true;
31-
config_in.port_no = 0;
32-
config_in.pin_ws = 14;
33-
config_in.pin_bck = 15;
34-
config_in.pin_data = 16;
35-
// config_in.fixed_mclk = sample_rate * 256
36-
// config_in.pin_mck = 2
37-
in.begin(config_in);
38-
39-
// start I2S out
40-
auto config_out = out.defaultConfig(TX_MODE);
41-
config_out.sample_rate = sample_rate;
42-
config_out.bits_per_sample = 16;
43-
config_out.i2s_format = I2S_STD_FORMAT;
44-
config_out.is_master = true;
45-
config_out.port_no = 1;
46-
config_out.pin_ws = 17;
47-
config_out.pin_bck = 18;
48-
config_out.pin_data = 19;
49-
out.begin(config_out);
25+
auto config = i2s.defaultConfig(RXTX_MODE);
26+
config.sample_rate = sample_rate;
27+
config.bits_per_sample = 16;
28+
config.channels = 2;
29+
config.i2s_format = I2S_STD_FORMAT;
30+
config.pin_ws = 14;
31+
config.pin_bck = 15;
32+
config.pin_data = 16;
33+
config.pin_data_in = 17;
34+
config.fixed_mclk = sample_rate * 256
35+
config.pin_mck = 2
36+
i2s.begin(config);
5037

5138
Serial.println("I2S started...");
5239
}

0 commit comments

Comments
 (0)