Hallo,
ich versuche seit einiger Zeit von einem ESP32 Musik abzuspielen. Ich
habe den oben gezeigten ESP32 der per 5V per Step Down betrieben wird.
Leider sind einige Pins belegt für meine Led-Steuerung. Ich habe einen
PCM510x wie auf dem Bild zu sehen. Nun habe ich BCK an D33 LRCK an D14
und Din an D32. Außerdem habe ich VIN und GND direkt an den ESP32 3,3v
und GND angeschlossen. Dann mit unterschiedlichen Codes versucht einen
Testton zu erzeugen und per AUX auszugeben. Da immer Stille zu hören
war, habe ich gelesen, dass manche dieser Boards gemuted sind. Also habe
ich XSMT auf 3,3v und auch einmal auf GND überbrückt in beiden Fällen
ist weiterhin nichts zu hören. Da ich mich nicht so gut damit auskenne
und gerne die Musik aus meiner SD karte abspielen würde, wäre es super,
wenn hier jemand mir weiter helfen könnte.
Viele Grüße
Valentin
P.S.
1 | Hier folgt der zuletzt verwendete Code:
|
2 | #include <driver/i2s.h>
|
3 | #include <math.h>
|
4 |
|
5 | #define I2S_BCK 33
|
6 | #define I2S_LCK 14
|
7 | #define I2S_DIN 32
|
8 |
|
9 | #define SAMPLE_RATE 44100
|
10 | #define AMPLITUDE 16000
|
11 |
|
12 | void setup() {
|
13 | Serial.begin(115200);
|
14 | delay(1000);
|
15 |
|
16 | i2s_config_t i2s_config = {
|
17 | .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
|
18 | .sample_rate = SAMPLE_RATE,
|
19 | .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
|
20 | .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
|
21 | .communication_format = I2S_COMM_FORMAT_STAND_I2S,
|
22 | .intr_alloc_flags = 0,
|
23 | .dma_buf_count = 8,
|
24 | .dma_buf_len = 64,
|
25 | .use_apll = false,
|
26 | .tx_desc_auto_clear = true,
|
27 | .fixed_mclk = 0
|
28 | };
|
29 |
|
30 | i2s_pin_config_t pin_config = {
|
31 | .bck_io_num = I2S_BCK,
|
32 | .ws_io_num = I2S_LCK,
|
33 | .data_out_num = I2S_DIN,
|
34 | .data_in_num = -1
|
35 | };
|
36 |
|
37 | esp_err_t err;
|
38 | err = i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
|
39 | Serial.printf("i2s_driver_install: %d\n", err);
|
40 |
|
41 | err = i2s_set_pin(I2S_NUM_0, &pin_config);
|
42 | Serial.printf("i2s_set_pin: %d\n", err);
|
43 |
|
44 | err = i2s_set_clk(I2S_NUM_0, SAMPLE_RATE, I2S_BITS_PER_SAMPLE_16BIT, I2S_CHANNEL_STEREO);
|
45 | Serial.printf("i2s_set_clk: %d\n", err);
|
46 |
|
47 | Serial.println("PCM510x Testton 440Hz startet...");
|
48 | }
|
49 |
|
50 | void loop() {
|
51 | static float phase = 0;
|
52 | int16_t sample[2];
|
53 |
|
54 | float s = sin(phase) * AMPLITUDE;
|
55 | sample[0] = sample[1] = (int16_t)s;
|
56 |
|
57 | size_t bytes_written;
|
58 | i2s_write(I2S_NUM_0, sample, sizeof(sample), &bytes_written, portMAX_DELAY);
|
59 |
|
60 | phase += 2.0 * M_PI * 440.0 / SAMPLE_RATE;
|
61 | if (phase > 2.0 * M_PI) phase -= 2.0 * M_PI;
|
62 | }
|