Stromlaufplan HifiBerry MiniAmp 1.0

  • Da ich befürchte, bei meinem DAB+-Radio-Projekt von einigen Unzulänglichkeiten des Orginal HifiBerry MiniAmps eingeholt zu werden, habe ich heute die Leiterplatte durchgemessen und nach bestem Wissen und Gewissen mit EAGLE 7.5.0 einen Stromlaufplan davon gezeichnet und den will ich Euch nicht vorenthalten ;)


    siehe auch:

    Stromlaufplan HifiBerry DAC+ Hier habe ich bereits vor geraumer Zeit einen Schaltplan von dieser Leiterplatte gezeichnet


    Besonderheiten beim MiniAmp:

    Beim MiniAmp wird nicht der I2S-D/A-Wandler PCM5122 verwendet, der eine Steuerung über I2C böte, sondern das "kleinere" Modell PCM5101A zusammen mit dem Class-D Verstärker-IC PAM8403. Das bedeutet, dass die Wiedergabelautstärke beim MiniAmp nur über die I2S-Audiodaten selbst gesteuert werden kann. In Raspbian müssen dazu spezielle ALSA-Einstellungen vorgenommen werden, damit die Pegel in den I2S-Audiodaten vom RPi entsprechend der eingestellten Lautstärke angepasst werden.


    Genial am MiniAmp ist, dass er sofort läuft, wenn korrekte I2S-Audiodaten am I2S-Bus (RPi-Pins 12, 35, 40) anliegen.

    Gleichzeitig ist aber keine direkte Lautstärkeregelung möglich: Das muss dann entweder softwaremäßig über die Manipulation der I2S-Daten (siehe ALSA-Einstellungen im Spoiler) erfolgen oder durch zusätzliche Hardware, die die Lautstärke im analogen Backend regelt (empfehle ich jedoch nicht).


    Tatsächlich verwendete GPIO-Pins beim MiniAmp:

    Neben den obligatorischen GND-, 3.3V- und 5V-Pins sind dies konkret:

    Pin 12 (GPIO 18, PCM_CLK): I2S-BCLK

    Pin 35 (GPIO 19): I2S-SYNC

    Pin 40 (GPIO 21): I2S-DATA


    Pin 36 (GPIO 16): MUTE (PAM8403)

    Pin 37 (GPIO 26): SHDN (PAM8403)


    Beim MiniAmp werden weder die I2C-Pins 3 (GPIO 2) I2C-SDA1 und 5 (GPIO 3): I2C-SCL1 verwendet, noch ist ein ID-EEPROM (I2C) an den ID-Pins 27 und 28 angeschlossen.


    So, jetzt habe ich genug geschwafelt, der Rest ist in den Dateianhängen zu finden.

    Viel Spaß,

    schlizbäda

  • ...und es ist schon so, wie ich es erwartet habe:

    Bei direktem Anschluss des MiniAmp am I2S-Bus an einer anderen Audioquelle als dem RPi, konkret am I2S-Bus des MonkeyBoards im Rahmen meines DAB+-Radio-Projektes, ist kein steuernder RPi erforderlich, da der MiniAmp die I2C-Ansteuerung nicht hat.


    Allerdings kommt alles andere als ein schöner Klang heraus: Man hört zwar ansatzweise die vom Radiomodul über I2S wiedergegebene Musik, aber die Lautsprecher kratzen furchtbar!

    Vermutlich sind die Audiodaten zu hochpegelig, was irgendwo in der Kette (vermutlich im Verstärker-IC) zu äußerst unschönen Verzerrungen (Clipping?) führt. Wahrscheinlich müsste man die I2S-Daten digital auf niedrigere Amplituden umrechnen :baeh2:, damit sie "leiser" aus dem D/A-Wandler kommen und der Verstärker nicht mehr übersteuert/verzerrt.

    Ich glaube nämlich nicht, dass es am BurrBrown I2S-D/A-Wandler PCM5101A liegt...

    EDIT 17.02.2019:

    Ich weiß nicht, was da los war. Nachdem ich sah, dass es in der KeyStone-C-Bibliothek für mein DAB+-Radio die Routine BOOL SetVolume(char volume) gibt, versuchte ich es nochmals erneut mit dem MiniAmp zunächst mit niedrigeren Werten und schließlich bis zur vollen Lautstärke: Keine Verzerrungen mehr! Es lag beim ersten Versuch dann wohl eher an schlechter Verdrahtung oder sonstiger Schlamperei.

    Aber Undeine Fake-Ansteuerung über I2C ist nicht notwendig, um Kommandos für die Wiedergabe an die Soundkarte zu senden -- mit allen Vor- und Nachteilen.