Gibt es irgendwo eine vernünftige Beschreibung (am besten auf deutsch, wenn nicht auf deutsch, dann auf Englisch), wie man a2dp und avrc mit einem Esp32 benutzt?
In 9 Stunden gar nicht gegooglelt? https://github.com/bluekitchen/btstack https://github.com/esp32vn/esp32-a2dp-sink https://github.com/redisr/esp32-p2-a2dp
Timmo H. schrieb: > https://github.com/bluekitchen/btstack > https://github.com/esp32vn/esp32-a2dp-sink > https://github.com/redisr/esp32-p2-a2dp Vielen Dank ? ?
Flo S. schrieb: > Timmo H. schrieb: >> https://github.com/bluekitchen/btstack >> https://github.com/esp32vn/esp32-a2dp-sink >> https://github.com/redisr/esp32-p2-a2dp > > Vielen Dank ? ? Dank nicht mir sondern Google. Das sind quasi die ersten 3 Links die Google bei der suche nach "esp32 a2dp" ausspuckt. Das Ergebnis hättest du also auch schon vor 10 Stunden haben können
:
Bearbeitet durch User
Einfach verhungern lassen, statt zu googlen @ Timmo. Fuehrt ja so zum Ziel.
T.Roll schrieb: > Einfach verhungern lassen, statt zu googlen @ Timmo. > Fuehrt ja so zum Ziel. Vielen Dank für diesen Tollen Beitrag (NICHT!) und diese tolle Stimmung mal wieder hier im Forum! Ich hatte in der Zeit was besseres zu tun als was für mein Bastelprojekt rauszusuchrn.
Flo S. schrieb: > T.Roll schrieb: >> Einfach verhungern lassen, statt zu googlen @ Timmo. >> Fuehrt ja so zum Ziel. > > Vielen Dank für diesen Tollen Beitrag (NICHT!) und diese tolle Stimmung > mal wieder hier im Forum! > Ich hatte in der Zeit was besseres zu tun als was für mein Bastelprojekt > rauszusuchrn. also lässt du andere für dich suchen weil die ja nichts besseres zu tun haben? frecher geht's garnicht mehr
Timmo H. schrieb: > In 9 Stunden gar nicht gegooglelt? > https://github.com/bluekitchen/btstack > https://github.com/esp32vn/esp32-a2dp-sink > https://github.com/redisr/esp32-p2-a2dp Leider ist das nicht für die Arduino IDE geeignet. Ich suche jetzt seid 3 Stunden nach Libarys für die arduino IDE und habe nix gefunden.
Flo S. schrieb: > Timmo H. schrieb: >> In 9 Stunden gar nicht gegooglelt? >> https://github.com/bluekitchen/btstack >> https://github.com/esp32vn/esp32-a2dp-sink >> https://github.com/redisr/esp32-p2-a2dp > > Leider ist das nicht für die Arduino IDE geeignet. > Ich suche jetzt seid 3 Stunden nach Libarys für die arduino IDE und habe > nix gefunden. Danach hattest du ja auch nicht gefragt. Soweit ich weiß hat bis auf BLE noch keiner eine Arduino-Lib gemacht. Aber du kannst ja durchaus die in den Beispielen verwendeten API-Funktionen auch aus Arduino heraus aufrufen.
Timmo H. schrieb: > Aber du kannst ja durchaus die in > den Beispielen verwendeten API-Funktionen auch aus Arduino heraus > aufrufen. Wo muss man die ganzen BT dateien hinkopieren, damit nich irgendwelche #include Dateinen fehlen?
Autor: Timmo H. (masterfx) >Dank nicht mir sondern Google. Das sind quasi die ersten 3 Links die >Google bei der suche nach "esp32 a2dp" ausspuckt. Das Ergebnis hättest >du also auch schon vor 10 Stunden haben können Dass die Suchergebnisse von Google Nutzer- und Vorgeschichten-abhängig sind, ist Dir so weit geläufig?
Durchaus, bekomme aber die gleichen Ergebnisse auf einem neutralen Rechner (andere IP cookies täglich gelöscht)
:
Bearbeitet durch User
Timmo H. schrieb:
andere IP cookies täglich gelöscht
Hab ich gemacht. Hab auch nen anderen Browser ausprobiert (Tor Browser)
und mich nicht bei Google angemeldet. Ich bekomme aber trotzdem nichts
für die Arduino IDE auch wenn ich nach '' esp32 a2dp avrc Arduino IDE ''
gesucht habe.
Dass du nichts für arduino findest schrieb ich ja schon, da hilft auch das cookie löschen nichts. Das bezog sich auf Joachims Kommentar
Flo S. schrieb: > Leider ist das nicht für die Arduino IDE geeignet. Ich habe das selbe Problem. Desswegen suche ich jetzt nach einem IC oder Modul, was das unterstützt und vom ESP32 gesteuert werden kann.
Ich wollte auch was mit machen, also direkt geht in Arduino nicht aber man könnte natürlich ne Lib machen. Nen eigenen IC braucht man aber nicht dafür, es gibt von espressif das sdk da gibt aich beispiele. Werd mich mal dran setzt ob das so klappt
So grad mal 10min rum gespielt, das klappt ganz easy in Arduino mit dem Example von espressif.. Kanns pairen, und bei Lied starten etc bekommt der ESP das als event. Also die links von oben sind schon richtig, werd das nurnoch in ne Lib verpacken damits den code net so zumüllt. Für alle die auch was in die richtung machen wollen hier schonmal das momentane, einfach aus dem Beispiel oben zusammen kopiert, sollte aber so laufen.
1 | ... siehe Anhang |
sorry keine ahnung wie man das in nen spoiler oder so packt. -- Welchen Teil von "Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang" hast Du jetzt nicht verstanden? -rufus
:
Bearbeitet durch User
> sorry keine ahnung wie man das in nen spoiler oder so packt.
Meinst du diese Dinger die auf manche Autos montiert sind?
So große Dateien gehören in einen Anhang.
> sorry keine ahnung wie man das in nen spoiler oder so packt. Hier gibt es ein gutes Tutorial, wie man das Ganze in eine Library verpackt: https://www.arduino.cc/en/Hacking/LibraryTutorial
Hallo, Esp schrieb: > So grad mal 10min rum gespielt, das klappt ganz easy in Arduino mit dem > Example von espressif.. vielen Dank erstmal, compiliert hier ohne Fehler. Muß ich mal mit rumspielen. Was mir auffällt: 75% Flash belegt? Ich bin im Moment zwar auch bei 77%, aber mit 4" SPI-Touchdisplay mit der TFT_eSPI-Lib, ESP8266Audio mit MP3-Software-Decoder und Ausgabe über I2S. Was mir gerade auffällt: ich muß mal schauen, wie beim ESP32 OTA organisiert wird. Beim ESP8266 waren da ja der halbe Programmflash als Puffer nötig. Beim ESP32 offenbar nicht. Gruß aus Berlin Michael
Michael U. schrieb: > compiliert hier ohne Fehler Bei mir kommen Fehlermeldungen. Irgendwas ist mit ESP_LOGE nicht richtig. Ich habe den Code einfach kopiert und ein paar *.h Dateien auch kopiert (siehe Blder im Anhang).
Flo S. schrieb: > Irgendwas ist mit ESP_LOGE nicht richtig. Lies doch, was da steht: "ret" ist hier nicht bekannt.
Rufus Τ. F. schrieb: > "ret" ist hier nicht bekannt. Das habe ich gelesen. ich weiß nur nicht, wie ich diesen Fehler beheben soll. Ein paar andere Fahler bei mir habe ich aber behoben: Ich habe viele *.h Dateien in den Projektordner kopiert, obwohl sie schon standartmäßig in der Arduino IDE vorhanden sind. Ich bekomme aber noch die selbe Meldung. Die Dateien, die ich jetzt im Projektordner habe sind im Anhang.
:
Bearbeitet durch User
Hallo, ich habe nur seinen Sketch kopiert, neuen Sketch erstellt, seinen Inhalt rein und compiliert. IDE 1.8.5 portable installiert, ESP32 github vom 31.05.2018 Gerade nochmal Compiler-Meldungen eingeschaltet und compiliert: keine warnings, keine errors. Mal geflasht: mein Handy findet zumindest einen ESP_SPEAKER. Gruß aus Berlin Michael
Michael U. schrieb: > seinen Inhalt Ich muss noch diese Dateien (aus dem Anhang) einfügen. Die habe ich aus der ESP Idf kopiert. Wenn die nicht drind sind, steht in den Fehlermeldungen, dass die benötigt werden. Wenn ich sie dann eingefüge habe, kommt diese Fehlermeldung
1 | 'ret' was not declared in this scope |
, von der ich oben geschrieben habe. Ich weiß nur nicht, wie ich die beheben soll.
Hallo, ich würde jetzt mal kühn behaupten, daß an der Installation von IDE / ESP32 was nicht stimmt... Habe gerade mal die aktuelle github-Version vom ESP32/Arduino reingeworfen: mit Vorsicht zu genießen, mein Streamplayer crasht komplett, // WiFi.disconnect(); // WiFi.softAPdisconnect(true); mindestens einer der beiden Aufrufe endet in einer Guru Meditation. Ohne geht WiFi, allerdings ist auch die I2S-Ausgabe kaputt. Außerdem statt 77% Flash sind 87% belegt... Habe erstmal meine ESP32 Version von Ende Mai wieder reingenommen. Gruß aus Berlin Michael
Michael U. schrieb: > ich würde jetzt mal kühn behaupten, daß an der Installation von IDE / > ESP32 was nicht stimmt... Danke für den Tipp. Jetzt geht es. Leider ist der Esp in einer Neustartschleife. Das wird am seiellen Monitor ausgespuckt:
1 | ets Jun 8 2016 00:22:57 |
2 | |
3 | rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) |
4 | configsip: 0, SPIWP:0xee |
5 | clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 |
6 | mode:DIO, clock div:1 |
7 | load:0x3fff0018,len:4 |
8 | load:0x3fff001c,len:808 |
9 | load:0x40078000,len:6084 |
10 | load:0x40080000,len:6696 |
11 | entry 0x400802e4 |
12 | E (317) spiram: SPI RAM enabled but initialization failed. Bailing out. |
13 | ESP_ERROR_CHECK failed: esp_err_t 0x103 (ESP_ERR_INVALID_STATE) at 0x400d12a4 |
14 | file: "C:\Users\flo08\Documents\Arduino\esp32-avrc-a2dp-test\esp32-avrc-a2dp-test.ino" line 344 |
15 | func: void setup() |
16 | expression: esp_bt_controller_mem_release(ESP_BT_MODE_BLE) |
17 | |
18 | Backtrace: 0x400928c8:0x3ffb1f20 0x40092e50:0x3ffb1f40 0x400d12a4:0x3ffb1f60 0x4016847e:0x3ffb1fa0 |
19 | |
20 | Rebooting... |
Dann startet der ESP neu und gibt das wieder aus...
Na, das ist ja tatsächlich sehr komfortabel. Da steht sogar, welche Funktion in welcher Zeile des Codes das Problem verursacht. Schon mal nachgesehen, was da passiert?
Hallo, passiert bei mir mit der aktuellen ESP32 Version von github auch, mit meiner alten geht es. Da sind wohl noch einige Bugs in der Geschichte, die Umstellung auf das aktuelle IDK ist ja erst 3 Tage alt... Mal schauen, ob mein Bekannter da Zeit und Lust hat, tiefer einzusteigen und ein paar Bugreports zu machen. Gruß aus Berlin Michael
Rufus Τ. F. schrieb: > Na, das ist ja tatsächlich sehr komfortabel. Da steht sogar, welche > Funktion in welcher Zeile des Codes das Problem verursacht. > > Schon mal nachgesehen, was da passiert? Ich habe das gelesen. Ich weiß aber nicht, wie ich das beheben soll.
Michael U. schrieb: > mit meiner alten geht es Kann man irgendwo die alten Versionen runterladen? Oder kann jemand die alte Version, falls sie noch jemand hat, auf Google Drive, Media fire oder Dropbox,... Hochladen?
:
Bearbeitet durch User
Flo S. schrieb: > Kannman irgendwo die alten Versionen runterladen? Jetzt klappt es ? Ich habe einfach auf GitHub nach einem Fork gesucht, der noch nicht aktuallisiert wurde.
Wie kann ich denn das Sigal, was aus dem ESP rauskommt, an die internen DACs weiterleiten?
:
Bearbeitet durch User
Hallo, Du bist der Zeit etwas zu weit voraus. ;-) Ich muß mich erstmal mit Audio über BT befassen, wie kommen da die Daten überhaupt an? Komprimiert? In welchem Format? Schön wäre es aus meiner Sicht, wenn ESP8266Audio um eine passende Stream- und Decoderfunktion erweitert würde. Keine Ahnung, ob er da irgendwelche Pläne hat, ich würde dann ohnehin lieber über I2S ausgeben, das wäre dann damit aber kein Problem. Mal etwas abwarten, ich habe hier noch genug Beschäftigung rumliegen... Mir würde im Moment z.B. schon reichen, wenn ich rausfinde, wie ich eine eingebundene SD-Card wieder komplett abmelden kann, ich brauche den Ram für den Stream-Puffer und es läuft ja nie gleichzeitig z.B. MP3-Stream und Play von SD. Gruß aus Berlin Michael
:
Bearbeitet durch User
Michael U. schrieb: > Ich muß mich erstmal mit Audio über BT befassen, wie kommen da die Daten > überhaupt an? Komprimiert? In welchem Format? Bei mir gibt es 2 pins, wo Daten rauskommen. Ich wollte testen, was passiert, wenn man das Signal an die DACs leitet. Ist nur ein Versuch.
Hallo, Flo S. schrieb: > Bei mir gibt es 2 pins, wo Daten rauskommen. Ich wollte testen, was > passiert, wenn man das Signal an die DACs leitet. Ist nur ein Versuch. ich habe in den Source noch nicht weiter reingeschaut. Deine Antwort sagt mir im Moment auch nicht, was aus den 2 Pins für Daten rauskommen... Gruß aus Berlin Michael
Michael U. schrieb: > Deine Antwort sagt mir im Moment auch nicht, was aus den 2 Pins für > Daten rauskommen... Da bin ich grade bei, das rauszufinden.
Wenn Ihr in den obigen Code schaut https://www.mikrocontroller.net/attachment/highlight/369364 seht Ihr, das in der Funktion
1 | void bt_app_a2d_data_cb(const uint8_t *data, uint32_t len) |
die I2S Ausgabe deaktiviert ist. Wenn man keinen I2S DAC zu Hause hat, kann man einen Sigma-Delta-Wandler programmieren. Das Beispiel findet sich in dieser Library: https://github.com/earlephilhower/ESP8266Audio/blob/master/src/AudioOutputI2SNoDAC.cpp In dieser Funktion:
1 | void AudioOutputI2SNoDAC::DeltaSigma(int16_t sample[2], uint32_t dsBuff[8]) |
Ich verwende diese Art der Wandlung für mein Webradio, das ich quasi täglich benutze: Beitrag "Re: Webradio basteln" Also kurz: mit einem RC-Tiefpass und einem externen Verstärker sollte sich der Ton hörbar machen lassen.
Hallo, Marc, Du schaffst einen alten herrn ganz schön... Ich werde mich durchwühlen, I2S-DAC ist ja verfügbar, weißt Du ja aus Deinem verlinkten Thread. Eigentlich wollte ich ja garnicht mit dem BT-Zeug rumspielen. Muß mal schauen, wie ich den I2S-Kram aus ESP8266Audio da reingepackt bekomme. Vielen Dank nochmal für Deinen bisherigen Anteil an der BT-Geschichte. Gruß aus Berlin Michael
Marc schrieb: > void AudioOutputI2SNoDAC::DeltaSigma(int16_t sample[2], uint32_t > dsBuff[8]) Und wie soll ich das einbauen?
Hallo, ich habe ja geahnt, daß es meinem Bekannten keine Ruhe läßt. Spielt hier im Moment als BT-Lautsprecher vom PC aus. Ausgabe ist I2S, Pins in setup() anpassen wenn nötig. Läuft mit meiner "alten" und seiner aktuellen ESP32-Version. Er hat irgendwie geflucht wegen geänderter Strukturen und Aufrufe, das Espressif-Demo https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/a2dp_sink ist wohl nicht so sonderlich gepflegt. Ich hänge den Arduino Sketch mal an. Ich muß mir das jetzt erstmal ganz in Ruhe anschauen... Gruß aus Berlin Michael
:
Bearbeitet durch User
Vielen Dank ? Es Funktioniert! Wenn man einen Lautsprecher an den i2s Signal pin anschließt, dann hört man die Musik. Sie hört sich aber übersteuert an. Ich vermute, dass das daran liegt, dass das Signal noch digital ist. Wie bekommt man das Signal (vielleicht auch hier mit: Marc schrieb: > void bt_app_a2d_data_cb(const uint8_t *data, uint32_t len) ) An die DACs leiten? Wie kann man die avrc Kommandos aus der avrc_api benutzen?
Michael U. (amiga) >ich habe ja geahnt, daß es meinem Bekannten keine Ruhe läßt. >Spielt hier im Moment als BT-Lautsprecher vom PC aus. Super! Ein ausdrückliches Lob für Dich und Deinen Bekannten von mir. Vielleicht kann man jetzt das Webradio auch als Bluettooth-Lautsprecher benutzen. Jetzt könnte man sich überlegen, ob man das ganze in eine Library verpackt, damit das Haupt-Sketch nicht so zugemüllt wird. >Flo S. (flos6323) >Wenn man einen Lautsprecher an den i2s Signal pin anschließt, dann hört >man die Musik. >Sie hört sich aber übersteuert an. Das Standard Format der I2S schnittstlle sind 32 Bit Daten, 16 Bit für den linken und 16 Bit für den rechten Kanal. Wenn man keinen I2S Dac hat, kann man die I2S Schnittstelle dazu missbrauchen, den Bitstrom eines Sigma-Delta-Modulators auf die Schnittstelle zu geben und damit einen Ton zu erzeugen. Wenn man den Datenausgang der I2S Schnittstelle auf einen RC-Tiefpass gibt, erhält man dann ein gutes Mono-Signal. Sigma-Delta-Modulator klingt kompliziert, ist aber eine ziemlich übersichtliche Funktion. Du musst also vor die Ausgabe auf die I2S-Schnitstelle deinen DAC-Wert in den Sigma-Delta-modulierten Wert umwandeln. Den Link auf die Funktion, die das kann, habe ich Dir oben geschickt. Das Ergebnis dürfte besser klingen als die Ausgabe auf die 8Bit DACs.
Marc schrieb: > Wenn man den Datenausgang der I2S Schnittstelle > auf einen RC-Tiefpass gibt, erhält man dann ein gutes Mono-Signal. Ich werde mir dann wol einen I2s DAC besorgen, weil eich ein stereo Signal brauche.
Hallo, Marc schrieb: > Super! Ein ausdrückliches Lob für Dich und Deinen Bekannten von mir. > Vielleicht kann man jetzt das Webradio auch als Bluettooth-Lautsprecher > benutzen. Habe ich bei meinem unfertigen auch so angedacht. > Jetzt könnte man sich überlegen, ob man das ganze in eine Library > verpackt, damit das Haupt-Sketch nicht so zugemüllt wird. Mal schauen, ob er die Zeit dazu findet, er hat darüber schon nachgedacht und definitv die besseren C++ Kenntnisse als ich... Ausgabe bei mir mit einem I2S-DAC, ich hatte mal 2 Module bestellt, sind zwar nicht China-billig, aber noch bezahlbar: https://www.amazon.de/Adafruit-I2S-Stereo-Decoder-UDA1334A/dp/B079GB1Z1M/ref=sr_1_1?ie=UTF8&qid=1530512098&sr=8-1&keywords=I2S+UDA1334A hmmm, ich hatte die noch unter 10€ gefunden... Es gehen auch die PCM5102A Module, die sind etwas billiger zu finden. Aus China hatte ich auch noch für ein paar I2S-ICs für cent-Beträge, da muß man natürlich noch etwas Kleinkram drumrum löten, gehen aber auch sehr gut. Im Moment bin ich aber für das Webradio bei 2 Verstärkermodulen mit I2S gelandet: https://www.amazon.de/Adafruit-I2S-Class-Amplifier-Breakout/dp/B01GFNYKK6/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1530512563&sr=1-1-catcorr&keywords=I2S+verst%C3%A4rker Lassen sich mit 2 Widerständen auf R oder L Ausgabe setzen, also nur I2S parallel ran und fertig. Kosten leider auch etwas mehr... Gerade noch was interessantes gefunden wenn 2x2W an 4 Ohm reichen: https://www.ebay.de/itm/Digilent-PmodAMP3-410-270-Pmod-AMP3-Stereo-Power-Amplifier-/322799332282 Gruß aus Berlin Michael
:
Bearbeitet durch User
Michael U. schrieb: > Ich hänge den Arduino Sketch mal an. Wie kann man die avrc Kommandos aus der avrc_api benutzen?
Michael schrieb >Im Moment bin ich aber für das Webradio bei 2 Verstärkermodulen mit I2S >gelandet: >https://www.amazon.de/Adafruit-I2S-Class-Amplifier... >Lassen sich mit 2 Widerständen auf R oder L Ausgabe setzen, also nur I2S >parallel ran und fertig. Von denen habe ich auch welche. Allerdings habe ich bis jetzt nur einen für Mono benutzt. Für Stereo bräuchtest Du den B-Typ oder müsstest einen Inverter in die LRCLK Leitung schalten: RCLK specifies whether left-channel data or right- channel data is currently being read by the digital audio interface. The MAX98357A indicates the left channel word when LRCLK is low, and the MAX98357B indicates the left channel word when LRCLK is high
Hallo, Marc schrieb: > Für Stereo bräuchtest Du den B-Typ oder müsstest einen Inverter in die > LRCLK Leitung schalten: nein, hat mich auch erst irritiert. Die haben nur R/L zur LRCLK-Phase vertauscht, wozu auch immer... Für die Zuordnung ist SD zuständig, Datenblatt Seite 17, Table 5. SD_MODE Control. Das Verstehen und dann die Berechnung der Widerstandswerte hat mich ziemlich genervt, H-Pegel an SD braucht bei 5V betriebsspannung einen Strombegrenzungswiderstand, ist bei mir 15k, ergibt dann den linken Kanal. Beim 2. ist der Widerstand 360k gegen + und macht dann den rechten Kanal. Das gilt alles für beide Versionen, A und B. Flo S. schrieb: > Wie kann man die avrc Kommandos aus der avrc_api benutzen? Bis jetzt keine Ahnung. Ich muß mich erstmal mit dem ganzen BT-Kram auseinandersetzen... Windows sagt mir eine Audiosenke, eine Remotesteuerung und 2 unbekannte Dienste. Audiosenke ist klar, der Rest im Zusammenspiel mit dem ESP noch völlig unklar. Zumindest läuft der Lautsprecher hier erstmal absolut stabil. Gruß aus Berlin Michael
:
Bearbeitet durch User
Michael U. schrieb: > Flo S. schrieb: >> Wie kann man die avrc Kommandos aus der avrc_api benutzen? Ich habe in bisschen herrunprobiert. Die Commands, mit dem man einen befehl mit dem esp32 sendet, funktionieren schon mal.(AVRC _commands.h im Anhang) Die Datei einfach in den Projektordner kopieren, dann
1 | #include "AVRC _commands.h" |
oben hinschriben und die Funftionen benutzen. Die Funktionen, wo man Informationen vom Abspierer bekommt, machen grade noch ein paar Probleme. Wenn ich das hinbekommen habe, lade ich eine neue Version von AVRC _commands.h hoch.
:
Bearbeitet durch User
... es sei denn, sie sind als inline spezifiziert. Das aber ist ein i.d.R. voreiliger Optimierungsschritt.
Hier ein kleiner Zwischenbericht meinerseits: Ich habe das BlueTooth-Beispiel von oben auf meinen neuen ESP32 programmiert. 1. Das Programm hat nicht funktioniert und im Terminal einen Fehler geworfen 2. Ich habe es noch mal mit einer älteren ESP32-Arduino Installation probiert: Erst ging es nicht wegen einem Brown-Out-Fehler. Zusätzliches Netzteil mit USB-Hub brachte die Lösung. 3. Ich kann die I2S Signale mit dem Oszilloscope sehen. Leider unterscheidet sich das neue ESP32-Pinout von dem alten und ich kann nirgends eine Pinout-Description finden... Von Hand heraus gemessen: G27: SD, Data G26: SCK, Clock G25: WS, Word Select Zusammen mit dem MAX98357A funktioniert es.
Hallo, wenn Du Dich auf den Source aus meinem Archiv beziehst: das I2S-Pinout steht hardcoded ab ca. Zeile 75
1 | i2s_pin_config_t pin_config = { |
2 | .bck_io_num = 33, |
3 | .ws_io_num = 32, |
4 | .data_out_num = 15, |
5 | .data_in_num = -1 //Not used |
6 | }; |
Du kannst die eigentlich frei auf fast alle Pins mappen. Der Digilent PmodAMP3 ist gestern angekommen, Unterlagen findet man bei Digilent. Ich habe erstmal J1 nachgerüstet und den 0 Ohm entfernt, um den Verstärker mit 5V betreiben zu können, Logik ist max. 3,6V. 3,3V habe ich meist nicht mit ausreichend Strom verfügbar, 2x1,3W an 4 Ohm wollen auch fast 1A. Die verstärker an USB ist da höchstens für einen leisen Test und mit 8 oder 16 Ohm Lautsprechern machbar, sonst stürzt das sowieso ab. Allerdings geht es mir gerade wie Dir: anderes EPS-Board genommen, Pins umsortiert und trotzdem noch nichts gehört... Muß ich mir heute mal genau anschauen. Gruß aus Berlin Michael
Ich habe mich gestern mal wieder dran gewagt und honbekommen, das das I2S signal su dem dac kommt. Ich habe das Beispiel aus a2dp_sink.zip von oben genommen. Ich habe die i2s Config etwas angepasst:
1 | i2s_config_t i2s_config = { |
2 | .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_PDM ), // Only TX |
3 | .sample_rate = 44100, |
4 | .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, |
5 | .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, //2-channels |
6 | .communication_format = I2S_COMM_FORMAT_I2S_MSB, |
7 | .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, |
8 | .dma_buf_count = 6, |
9 | .dma_buf_len = 60, // |
10 | .use_apll = false, |
11 | //.fixed_mclk = -1,
|
12 | };
|
13 | |
14 | i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); |
15 | |
16 | /*i2s_pin_config_t pin_config = {
|
17 | .bck_io_num = 26,
|
18 | .ws_io_num = 25,
|
19 | .data_out_num = 27,
|
20 | .data_in_num = -1 //Not used
|
21 | };*/
|
22 | i2s_set_dac_mode(I2S_DAC_CHANNEL_BOTH_EN); |
23 | i2s_set_pin(I2S_NUM_0, NULL); |
Jetzt spielt es aus den eingebauten DACs. Leider ist das Audiosignal ziemlich verrauscht, wenn ich etwas leise abspiele. Außerdem sind die Töne, die da raus kommen zu tief. Die Musik ist aber noch erkennbar. Hat jemand ne Idee, wie man das beheben kann? Wenn ich einn Sinus Ton abspiele kommt ein verzerrter Sinus raus. Die obere Halbwelle ist breit gezogen und die untere ist Zusammengequetscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.