Ich habe in den letzten Tagen diese Platine bestückt und in Betrieb genommen. Leider gab es erst mal keine Tonausgabe, obwohl in der Debug-Ausgabe das Abspielen einer Sound-Datei angezeigt wurde. Ich habe keine Kopfhörer-Platine, die entsprechenden Kontakte auf dem PCB sind daher einfach offen.
Das Problem war letztendlich, dass am MAX98357 am Pin SD eine zu geringe Spannung anlag. Mein MAX98357 ist nicht von Adafruit [1], sondern von AliExpress. Gemessen habe ich an dem Pin eine Spannung von ca. 0,05 V, was laut [2] eben ein Shutdown des Amps bewirkt (" If SD is connected to ground directly (voltage is under 0.16V) then the amp is shut down"). Die Spannung sollte ja eigentlich höher sein, da auch auf diesem Breakout-Board ein 1 MOhm Widerstand nach VCC geht, und intern im Chip ein 100 kOhm Widerstand nach GND geht (SD_MODE Pulldown Resistor).
Ich habe dann mit verschiedenen Widerständen auf dem PCB-Board zwischen HP_Detect (ist mit SD des Amps verbunden) und 3,3 V am Ausgang für die Kopfhörer-Platine experimentiert, und ein 100 kOhm Widerstand hat die Spannung an SD auf 0,48 V gebracht (für den „(Left + Right)/2“ Modus). Damit kam dann endlich zuverlässig der Sound am Lautsprecher an. (Größere Widerstände, die nach der Berechnungsformel im Datenblatt eigentlich passender wären, haben nicht zuverlässig funktioniert).
@biologist : Evtl. sollte man den Hinweis oben („Info: liegt hier GND an so schaltet MAX auf lautlos“) und auf Github noch ergänzen, dass hier ein zusätzlicher Pull-Up-Widerstand erforderlich sein könnte, zumindest wenn es Probleme mit dem Sound gibt. Die Spannung muss > 0,355 V sein, sonst geht der Amps auf Shutdown.
Insgesamt ist dieser SD Pin ja schon recht merkwürdig. Vier Funktionen auf einen Anschluss zu legen - zu aktivieren mit festen Spannungsbereichen - führt sicherlich öfters mal zu Problemen.
[1] Overview | Adafruit MAX98357 I2S Class-D Mono Amp | Adafruit Learning System
[2] Pinouts | Adafruit MAX98357 I2S Class-D Mono Amp | Adafruit Learning System