Mikrocontroller und Digitale Elektronik
›
Thread
Esp32 und PCM510x Mute Problem
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
}
Valentin schrieb:
Da immer Stille zu hören
war, habe ich gelesen, dass manche dieser Boards gemuted sind.
Was spricht dagegen, Dir das Datenblatt des DACs anzusehen? Der ist das IC auf Deinem Board ...
Ansonsten könntest Du Deinen Code mal mit dem vergleichen, was in https://github.com/pschatzmann/arduino-audio-driver gemacht wird (das ist halt für Arduino, sollte aber trotzdem lesbar sein).
Deine Signale hast Du Dir auch mal mit einem Logikanalysator bzw. Oszilloskop angesehen?
Probiers mal damit. Pins setzen über
1
#define WCLK_PIN 14
2
#define BCLK_PIN 33
3
#define DOUT_PIN 32
4
out -> SetPinout ( BCLK_PIN , WCLK_PIN , DOUT_PIN );
https://github.com/earlephilhower/ESP8266Audio/blob/master/examples/PlayRTTTLToI2SDAC/PlayRTTTLToI2SDAC.ino
PCM5102 VIN mit 5V extern versorgen (nicht über ESP32 3V3 Pin)
https://forum.pjrc.com/index.php?threads/problem-with-pcm5102a.76661
18.01.2026 13:05 :
Bearbeitet durch User
↑ Nach oben
← Zurück zu Mikrocontroller und Digitale Elektronik
Antwort schreiben