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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.