ESP32 lässt sich nicht flashen

Und ich wundere mich noch, warum der Neopixel nix anzeigt…


So eine Verbindung wäre ne feine Sache gewesen :rofl:.

Fazit: Es scheint alles zu laufen, aber ich habe Störgeräusche auf dem Kopfhörer. Insbesondere wenn von SD abgespielt wird.

Du verwendest doch MS6324 für den KH , oder ? Ich hatte mal ein Board damit erstellt in Kombi mit NS4150 . Das sollte Weihnachten verschenkt werden . Leider habe ich das gleiche Problem , auch beim Booten und generell bei SD-Zugriff . Mich würde interessieren ob es auch mit SD_SPI ist . Hast du die Möglichkeit das zu testen ?

Da muss ich leider passen. Ich habe den SD-Slot nur mit drei gpios angebunden.
Aber ansonsten muss das ja eher ein Routing/Platzierung-Problem sein. Weil bei einer getrennten Kopfhörerplatine (und ja, ich verwende ms6324 und tda1308) habe ich diese Störgeräusche nicht. Ja ok, vielleicht kurz beim Booten oder beim Ausschalten, aber das finde ich jetzt dramatisch.
Ich werde da mal etwas tiefer einsteigen und es mal mit einem 4lagigen PCB probieren. Da muss ich vorher aber erst ein bisschen lesen.

So sieht die erste Iteration dann in fertig aus. Die Sache mit dem Neopixel habe ich unten per Drahtbrücke gelöst.
Jetzt muss ich also noch den Kopfhörerteil ohne Geräusche beim Abspielen hinkriegen.

1 „Gefällt mir“

cool das du es gefunden hast, sieht gut aus die Platine.

Das mit den Störgeräuschen bekommt man hin, 4 Lagen kann was bringen

Teile besser räumlich trennen, zwischen VCC und VCC_Kopfhörer Teil eine Entstördrossel machen kann auch helfen, oder auch in den GND…

Oder generell die Massen trennen und nur an einem Punkt zusammenführen

Nochmal kurz die Problembeschreibung:

  • Auf dem Lautsprecher ist alles ok - keine Störgeräusche.
  • Auf dem Kopfhörer sind keine Störgeräusche, wenn nichts läuft.
  • Ganz leichte Geräusche hat man, wenn man die Lautstärke lauter/leiser macht. Da hört man quasi die Rasterung; das ist auch vorhanden, wenn der Neopixelring nicht angeschlossen ist (gefühlt sogar einen Tick lauter).
  • Hört man Webradio, so sind leichte Störgeräusche vorhanden. Im Grunde hört man das (oder zumindest ich, mit leichtem Tinnitus) nur, wenn man komplett auf lautlos dreht.
  • Ausgeprägt wird es dann, wenn man etwas von SD abspielt. Das ist auf jeden Fall nicht mehr tolerabel und zeigt sich als zyklisches Klopfen/Knattern.

Also grundsätzlich habe ich mich bemüht, die Bauteile räumlich auf dem PCB in Gruppen anzuordnen. Das wären aus meiner Sicht

  • ESP32 (Kondensatoren + Reset)
  • SD (Kondensatoren + Widerstände)
  • USB (Buchse, Widerstände, CH340C + Kondensatoren, Schottky)
  • Port-Expander (Widerstände, Kondensator)
  • Laderegler (TP5000, Spule, Kondensatoren, Widerstände)
  • Verstärker für Lautsprecher (MAX98357a, Widerstände, Kondensatoren, ggf. Ferrite)
  • Kopfhörerteil (Buchse mit potentialfreien Schaltkontakten, TDA1308, MS6324, Widerstände, Kondensatoren)

Also nehmen wir mal an, dass ich jetzt mal ein 4lagiges Design teste. Wie gehe ich denn vor?

  1. Ich hätte dann eine Powerplane. Und ich hätte auch eine Powerplane.
    a) Bei der Powerplane geht’s ja im Prinzip schon damit los, dass ich switched power und power habe. Vermutlich muss man diese Plane dann halt aufteilen.
    b) Ich konnektiere dann per Via durch, wo ich GND oder POWER brauche, korrekt? Muss aber beachten, dass JLC keine blind und burried Vias unterstützt. D.h. ich muss an dieser Stelle auf allen Lagen Platz haben.

  2. Ich schaue, dass ich die analogen Leiterbahnen kurz halte.

  3. Wie gehe ich denn bei der GND-Plane vor, wenn ich sage, dass ich für den analogen Teil eine eigene Plane will? Dann muss ich ja im Prinzip die große GND-Plane in dieser Ecke aussparen und eine eigene Plane machen mit einer kleinen Freifläche außen herum. Und zur Verbindung der beiden Planes könnte ich dann zB eine Entstördrossel setzen.

Das wäre dann bei 4lagig irrelevant, weil eh gegeben. Oder?

Also bin da gern für Input dankbar. Ansonsten schaue ich halt mal, was ich im Netz so finde.

schade , ich habe es mit SPl nicht . Die Beschreibung der Geräusche deckt sich mit meinen Erfahrungen. Ich experimentiere seit 2 Jahren damit rum . MAX98357 ist sauber , alle anderen DAC´s , PT8211, MS6324 , PCM5102A und AC101 auf dem ESP32-A1S , machen es mehr oder weniger . Manchmal dachte ich ich habe die Lösung . Es liegt definitiv an SD_MMC . Wenn ich mein Devilboard räumlich vom Hauptboard trenne ( Devilboard auf ein Breadboard gesteckt und alles per Dupont-Kabel mit der Fassung des Hauptboards gebrückt ) ist es ok. Hatte deswegen mal die Boards mittels Abschirmblech getrennt , das Layout anders geroutet , alles für die Katz. Ich habe 2 absolut identische Boards hier mit PCM5102A , TDA1308 und NS4150. Beide am gleichen Tag mit den gleichen Bauteilen bestückt. Seltsamerweise macht ein Board Geräusche , das andere nicht ??? Ich glaube es liegt an der gemeinsamen Spannungsversorgung. Ich hatte es letztens mit einem 2.Spannungsregler nur für die Peripherie versucht. Fliegend verdrahtet und es war ok. Aber da ist dann auch wieder Abstand dazwischen. Habe bei Ali noch Teile bestellt , werde aber wegen Urlaub in Kanada erst im nächstenJahr testen können . Mein neuer Ansatz wird eine komplett getrennte Spannungsversorgung für ESP und Audio sein. Der letzte Versuch . Den Kindern ist es egal und man kann auch damit leben , ist halt nicht optimal. Oft liegt es auch an @Wolle ´s Lib , gleichzeitige Verbindung mit einem Browser oder an Arduino , keine Ahnung wie man dem beikommen soll . Wenn es den Fehler mit Datenverlust bei SD_SPI nicht gäbe hätte ich alles bei meinem ersten Board gelassen - MAX98357 und KH-Platine . Da waren nie Störungen .

Mit der mini-Platine und der externen Kopfhörerplatine ist auch alles fein. Der Grund, warum ich das jetzt (endlich) doch nochmal angehe, ist einfach der, dass mich doch regelmäßig Leute anschreiben, die eine solche Platine (mini+Develboard+Kopfhörerplatine+Anschlussleitungen) gerne hätten. Und die meisten Leute hätten das auch gerne in fertig gelötet, was ich ursprünglich eigentlich nur mal als Backup angedacht hatte für Leute, die nicht löten können. Aber ich verstehe das natürlich auch, dass man der fertigen Variante dann eher den Vorzug gibt. Das in dieser Form löten zu lassen ist einfach zu teuer, weil es halt um drei Platinen geht. Aber ich kann auf Dauer auch nicht ständig so viel Zeit aufwenden, um das von Hand zu löten (mit Test locker ne Stunde pro Set). Speziell die Develboards sind schon echt Arbeit. Insofern möchte ich das gerne auf einer Platine vereinen, so dass ich das löten lassen kann und dann lediglich noch MS6324, Kopfhörerbuchse und JST-Buchsen nachlöten muss.

2 „Gefällt mir“

Hi @biologist
Ich möchte das Problem mal zusammenfassen. Ich dachte bis heute es wäre nur mit meinen Boards und mein alleiniges Problem. Jetzt muss ich feststellen das es das nicht ist und wir ( ich schon ca.1,5 Jahre ) nicht recht weiterkommen. Das Problem tritt mit SD_SPI nicht auf, mit den ersten Versionen ging es immer einwandfrei. Und der MAX98357 ist scheinbar resistent, ich denke der hat wegen des weiten Versorgungsspannungsbereiches einen internen LDO. Der Stress fing eigentlich erst mit meiner Idee für eine Kopfhörerplatine an und dann in Verbindung mit SD_MMC. Da bei SD_MMC die Übertragungsrate und damit auch die Taktrate höher ist gehe ich mal von Zeitproblemen aus, die es an anderen Stellen auch schon gab und noch gibt.

Neopixel flackert - gefixt
spor. verzögerte Reaktion RFID-Reader - gefixt
bei mir Bootproblem mit LTC2954 - mit 3.5.0 gefixt , mit 5.2.0 leider noch nicht
Darstellungsproblem im Browser mit großen Cover in MP3-Files
Geräusche bei Zugriff über Browser

Gab es das Problem schon vor dem Refactoring , ich kann mich daran nicht mehr erinnern?

Ich suche schon länger eine Lösung für den Kopfhörer ohne zusätzlichen DAC, also Anschluß am Ausgang des einen oder für Stereo zwei MAX98357. Es gibt im Netz div. Vorschläge für PAM8403/6, habe es aber noch nie ausprobiert. Zum MAX98357 scheint es keine Alternative zu geben . Von Realtek gibt es den ALC5628 mit KH-Ausgang und Mono-Endstufe. Gibt es preiswert bei Ali und eigentlich optimal. Leider nur in QFN und nicht erhältlich bei JLCPCB.

Ich glaube auch nicht wirklich an ein Hardwareproblem. Ich hatte vor einiger Zeit @Wolle ´s Webradio ausprobiert . Läuft auf gleicher Hardware ohne Störung. Ebenso dieses fantastische Projekt.

Also frage ich mich … liegt es am Code ( Freetos ) ?
Vielleicht ist Audio als Task nicht optimal. Oder die Cores, Prios ändern ? Ich kann es nicht beurteilen ob da noch was möglich ist.

Vielleicht können @tuniii oder @tueddy es mal am ESP32-S3 im SD_MMC 4Bit-Mode testen?

Ich habe auch keine Lust mehr noch mehr Zeit zu investieren. Der nächste , letzte Versuch muss klappen. Dazu werde ich ab Januar folgendes ausprobieren.

  1. Eigener LDO für Audio. Der ALC5628 und der PCM5102A haben nicht ohne Grund die Möglichkeit die Spannungsversorgung für analog und digital zu trennen. Dazu will ich auf die vorhandenen Boards eine kleine Zusatzplatine anbringen.
  2. Sollte der Rechenaufwand für Audio für den ESP32 zu hoch sein, was wäre wenn ein DAC das erledigt?
    Der VS1053 kann es , hallo @Wolle , du verwendest das im Webradio-Player , denkst du das es hier laufen würde? RFID und VS1053 am gleichen SPI ? Übrigens !! im Moment eiert TellIP bei mir !!
  3. Alternativ S3 mit mehr Pins.
    a) einfacheres Layout wegen flexibleren Pins vor allem für SD_MMC,
    b) kein UART erforderlich
    c) geringer Ruhestrom

und überhaupt weil es der neuere , aktuellere Chip ist.
Warum Bluetooth mit S3 noch nicht geht verstehe ich nicht und kann mir das jemand erklären. Grundsätzlich muss es doch gehen . Libraries gibt es doch schon, klar , es muss umgesetzt werden.

Ich weiß das nicht alles hierhin gehört , aber ich wollte das mal los werden.

VG

@compactflash ist kann hier nur die Fragen bzgl. des ESP32-S3 beantworten:

Vielleicht können @tuniii oder @tueddy es mal am ESP32-S3 im SD_MMC 4Bit-Mode testen?

Den SD_MMC 1-Bit Modus konnte ich auf dem S3 auf Anhieb zum laufen bringen, den 4-Bit Modus jedoch nicht. Ich meine es gibt hier noch ein Problem mit dem Arduino Framework. 4-Bit Modus bringt nur wenig Performance Vorteil zu Lasten von drei zusätzlichen Pins. Ich habe es erstmal nicht weiter verfolgt…

Warum Bluetooth mit S3 noch nicht geht verstehe ich nicht und kann mir das jemand erklären.

Classic-Bluetooth wird beim S3 vom Arduino-Framework nicht unterstützt. Das bestätigt auch der Autor der BT-Audio Bibliothek. Kein BT-Audio auf dem S3, aus diesem Grund scheidet der S3 für mich schon fast aus…

Habe es kapiert . Ich hatte auch beim Autor angefragt und hier steht es auch eindeutig.

Stell dir vor die KH Platine wäre wie vorher extra vorhanden, obwohl im selben Schaltplan. Dann hättest du GND für den Teil ESP und so weiter und für den KH Teil GND_KH.
Nur die Signale die vorher auch schon „rüber“ gingen sind auf beiden Teilen gleich, alle Versorgungen (dazu gehören GNDs) werden seperat geführt und dann an einem Punkt über eine Entstördrossel „kurzgeschlossen“
Ja der KH hat dann extra Planes auch allen 4 Lagen…

Naja, es war ja vorher GND-technisch auch nicht getrennt. Es ist das gleiche GND. Der Unterschied ist nur, dass es auf einer eigenen Platine hockt und an einer Leitung mit 20 cm Länge hängt :slight_smile:

Ui, den kannte ich gar nicht. Tja, das ist natürlich schade, dass es das bei JLC nicht gibt (ich möchte ja weg davon, ständig Sachen für Andere löten zu müssen) - zumal das Datasheet echt gut ist.
Aber grundsätzlich ist das Löten von QFN nicht so wild, wie man denkt. Also man sollte bisschen Erfahrung mit SMD-Löten haben, aber dann geht’s eigentlich. Ich setze solche Nadeln in GA19 ein. Zugegeben: Ich habe mich von dem Bild täuschen lassen und überlesen, dass die 25 mm lang sind. Das ist viel zu lang. Ich habe dann ein Beinchen von einem bedrahteten Widerstand durch die Nadel gesteckt und mit einem Seitenschneider nach vielleicht 5 mm hinter dem Plastik abgepetzt. Damit drückt man die Öffnung der Nadel ein gutes Stück zusammen (aber wegen dem eingeführten Draht nicht komplett), aber wenn man die Nadel um 90 Grad dreht und dann nochmal mit dem Seitenschneider leicht drückt, dann kriegt man das wieder geöffnet. Ansonsten halt die Nadel gleich passend in GA19 kaufen.

Dann gebe ich Lötpaste (mit einem Spatel oder einem Cocktailstäbchen) in eine Spritze und stecke die Nadel vorne drauf. Im Anschluss erwärme ich den PCB auf vielleicht 45 Grad (pi mal Daumen), so dass im Anschluss die Lötpaste bei der Applikation per Spritze drauf sitzen bleibt. Erwärmt man zu stark, dann haftet die Lötpaste zwar gut, aber dann verdampft auch das Flussmittel recht schnell und das Ganze lässt sich nicht mehr so schön löten.
Na jedenfalls gebe ich quer (richtig gelesen: quer! Man gibt also Lötpaste im Überschuss drauf) zu den Lötpads für die „Beinchen“ dann auf allen vier Seiten eine kleine „Wurst“ aus Lötpaste drauf und in der Mitte (GND-Pad) einen kleinen Klecks. Dann platziere ich den QFN-Chip per Pinzette schon möglichst genau und drücke ihn leicht an. Üblicherweise löte ich dann mittels Hotplate, aber das geht mit Heißluft genauso gut. Der Trick ist einfach nur, wenn die Lötpaste geschmolzen ist, 2-3 mal mit der Pinzette den QFN-Chip von oben anzutippen. Dann setzt der Chip sich nochmal besser und zentriert sich auch. Also so lange man den nicht von der Seite schiebt/antippt, muss man da keine Angst haben, dass man den total verschiebt. Ganz im Gegenteil, es hilft!
Im Anschluss sieht man dann, dass neben dem QFN-Chip noch zu viel geschmolzene Lötpaste vorhanden ist und diverse Brücken. Da braucht man noch nicht mal Flussmittel (weil noch genügend vorhanden ist), sondern fährt einfach mit einem sauberen Lötkolben mit 350°C entlang. Das Zuviel an Löstpaste hängt dann an der Lötspitze und die Brücken sind weg. Man kann da auch mehrfach langgehen. Der Trick hier ist keine feine Lötspitze zu verwenden, auch wenn man glaubt, dass man das muss.


Nachdem ich zuvor (siehe) Bild so eine Lötspitze wie die dritte von links verwendet habe, bin ich seit mehreren Monaten bei der dritten von rechts gelandet und es ist einfach nur grandios, wie gut man damit löten kann. Der flache Teil eignet sich z.B. wunderbar, um über die Kontakte des USB-Connectors (16 bei mir) zu streichen, wobei es hier ggf. extra Flussmittel braucht.

Einfach mal testen :+1:.

Hi @biologist
du lötest bestimmt den TP5000 damit . Wenn das so gut klappt werde ich es wohl auch hinbekommen . Mein Manko sind aber die 70 Jahre alten Augen und ohne große Lupe geht da nix. Ich werde mir mal ein Board mit QFN-Sockeln erstellen und bei JLCPCB ordern. Dann kann ich üben . Kannst du bitte das nächste Mal nach auftragen der Paste ein Foto machen. Ich verstehe nicht wieso du das Board vorher erhitzt . Ich verwende die gleiche Lötpaste , lagere es im Kühlschrank und trotzdem zerfließt die recht schnell, so das ich den Sockel nicht mehr erkennen kann . Die 3. von rechts verwende ich auch z.Bsp. für LTC2954 und PCM5102A , geht gut.

Ja. Und den MAX98357a - der ist noch ne Ecke kleiner.

Davon gehe ich fest aus. Nur mit Lötkolben geht’s nicht, aber mit Heißluft und Lötkolben schon. Auf jeden Fall antippen, wenn es aufgeschmolzen ist - das ist wichtig. Sonst ist die Kontaktierung manchmal nicht vollständig.

Klar, kann ich machen.

Mir geht’s genau anders rum: Das Zeug ist recht zähflüssig und aus dem Kühlschrank eh. Wenn ich das mit der Nadel auftrage, dann bleibt das nicht auf dem PCB kleben sondern will an der Nadel bleiben. Dass bei Raumtemperatur die Lötpaste verfließt habe ich bei allen drei Lötpasten (bleifrei PPD 183 und 138 Grad bzw. verbleit Mechanic 183 Grad) noch nie gesehen.

Bissl Offtopic, aber mir ist gerade folgendes IC ins Auge gesprungen: LM49450

Der Beschaltungsaufwand ist minimal und man hätte gleich Stereo Amp + Kopfhörer. Ist noch halbwegs bezahlbar bei JLC.

EDIT: Sehe gerade, dass das Ding ein externe MCLK Signal braucht, hm…

Das macht man üblicherweise über GPIO0. Oder halt einen externen Oszillator. Also interessant ist der IC auf jeden Fall, mir gefallen die Datasheets von TI auch gut, weil sie beim PCB-Layout auch viele wertvolle Infos geben. Aber man müsste einen Treiber halt dafür schreiben.

Von daher, und weil ich halt auch noch gut 70 MS6324 hier habe, bin ich jetzt erstmal wieder bei MAX vs MS6324+TDA1308 geblieben. Ich habe jetzt einen zweiten PCB geplant, der vier Layer nutzt. Zum ersten Mal habe ich auch richtig viel Arbeit reingesteckt und das Ganze von Hand geroutet. Ein Layer ist komplett für GND, so dass man alle GND-Punkte mit Vias anbindet und nicht mehr routen muss. Ich habe drauf geachtet, die Entkoppelkondensatoren immer schön nah an die ICs zu setzen und bin mit der SMD-Größe runter auf größtenteils 0402 und teilweise 0603. So ist das schön kompakt geworden, allerdings werde ich für das erste Testboard die ganz kleinen Bauteile direkt von JLC auch löten lassen.

Layer 1

3d-Ansicht

Das ist jetzt, wie beim letzten Mal, erstmal nur die LiPo-Variante. Wird also noch ein bisschen dauern.
Hoffe mal, dass ich damit die Probleme beim SD-Zugriff beseitigen kann.

1 „Gefällt mir“

Sieht gut aus! Was mir bei deinen anderen Platinen auch schon aufgefallen ist: Bei dir sind die 2-fach JST-PH-Konnektoren nach meinem Empfinden vertauscht. Rot ist - und Schwarz ist +. Das hatte mich beim Zusammenbauen anfangs etwas verwirrt, da ich dann auch bei meinem Akku das vorkonfektionierte Kabel abschneiden und anders herum wieder ranlöten musste.

Zumindest war es bei den mitgelieferten Kabeln so. Möglicherweise machen andere Hersteller es auch anders, aber das ist eher unwahrscheinlich.

Ja, das betrifft die anderen JST-Stecker. Das habe ich leider relativ am Anfang verbockt. Inzwischen sind aber so viele Sets unterwegs, dass ich das auch nicht mehr ändern will. Für Neopixel hatte ich das irgendwann mal versehentlich gemacht. Dort ist es insofern allerdings kacke, weil das dann wie ein Kurzschluss ist und der LDO auf dem Develboard dabei gegrillt wird.