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)


    EDIT 21.12.2019:
    Auch Pin 38 (GPIO 20 / PCM_DIN) sollte/darf bei Betrieb des MiniAmps am RPi nicht anderweitig verwendet werden, da er für I2S als Eingangspin für Tonaufnahmen reserviert ist, siehe Beitrag #22 im Thread "Kein Ton über HiFiBerry MiniAmp am RPi 4". Pin 38 wird zwar auf der MiniAmp-Leiterplatte nicht verwendet, es könnte aber sein, dass ALSA (oder ander Linux-Audiotreiber) diesbezüglich möglicherweise keinen Spaß verstehen. Danke Benzinbruder :

    HiFiBerry MiniAmp

    GPIOs 18-21 (pins 12, 35, 38 and 40) are used for the sound interface. GPIO16 can be used to mute the power stage. GPIO26 shuts down the power stage. You can’t use these GPIOs for any other purpose.


    Ansonsten:

    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.