Esp32 und PCM510x Mute Problem

OP #7995648
Lesenswert?

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
}
#7995669
Lesenswert?

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?

#7995701
Lesenswert?

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

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren