Eine sehr interessante Methode zur Ausgabe eines Audiosignals über einen beliebigen digitalen I / O-Pin mit minimaler Hardware ist: romanblack.com/BTc_alg.htm
slebetman 10.06.16
Antworten:
9
Die Audiobuchsenkanäle (links und rechts) werden von einem PWM-gesteuerten GPIO bereitgestellt (Kanal 0 von GPIO 12 oder 18 und Kanal 1 von GPIO 13 oder 19).
Wenn Sie also eine geeignete Schaltung an diesen GPIO anschließen, erhalten Sie Audio.
In den letzten Pis wird der Audioausgang von den PWM-Kanälen 0 und 1 bereitgestellt. PWM-Kanal 0 wird an GPIO40 weitergeleitet, der mit dem (Stereo) rechten Kanal verbunden ist, und PWM-Kanal 1 wird an GPIO45 weitergeleitet, der mit dem (Stereo) verbunden ist. linker Kanal.
Diese PWM-Kanäle können zusätzlich einem vom Benutzer zugänglichen GPIO zugeführt werden.
PWM-Kanal 0 kann auf GPIO12 und GPIO18 geroutet werden.
PWM-Kanal 1 kann auf GPIO13 und GPIO19 geroutet werden.
Sie leiten PWM an ein GPIO weiter, indem Sie einen bestimmten GPIO-Modus wie folgt festlegen:
GPIO12 - Modus ALT0 einstellen
GPIO13 - Modus ALT0 einstellen
GPIO18 - Modus ALT5 einstellen
GPIO19 - Modus ALT5 einstellen
Siehe Seite 102 der obigen Broadcom-Spezifikationsreferenz.
Es gibt verschiedene Möglichkeiten, einen GPIO-Modus einzustellen.
Das Dienstprogramm " Meine Schweine" verwendet den Befehl " M" .
Beispiel: Schweine m 18 5 setzen GPIO18 in den Modus ALT5.
Muss ich beide Kanäle benutzen? und warum gibt es oder sagen, ich verwende Pi 3 und wie viele GPIOs haben Hardware-PWM? Nach diesem , gibt es nur einen Pin PWM hat, dh Stift 12 (GPIO18).
Trevor,
@IlDivinCodino Sie können einen oder zwei Kanäle verwenden. Stereo benötigt zwei, Mono eins. In meiner Antwort wird das verwendbare GPIO erwähnt. Oder Sie können entweder GPIO verwenden (oder beides, wenn Sie einen Grund dafür finden).
Joan
@ joans eigene (IIRC) Pigpio- Bibliothek ermöglicht PWM über beliebige Pins - ich frage mich, wie viele Audiokanäle Sie auf diese Weise erhalten könnten.
Chris H
1
@ChrisH pigpio DMA-zeitgesteuertes PWM ist dahingehend beschränkt, dass nur eine feste Anzahl von Frequenzen mit einer begrenzten Anzahl von Schritten zwischen Aus und vollständig Ein erzeugt werden kann. Das ist für viele Anwendungen in Ordnung, aber wahrscheinlich nicht für Audio (ich weiß nicht, wie PWM zum Erzeugen von Audio verwendet wird, also ist dies eine Vermutung von meiner Seite).
Joan
2
@joan, es sind die diskreten Frequenzen , die ein größeres Problem darstellen (ein Tastverhältnis von 50:50 ist wahrscheinlich am besten für die maximale Lautstärke geeignet ). Es wäre also gut für einen Alarm, aber nicht für die allgemeine Wiedergabe. Ich könnte eine Chance haben, über das Wochenende damit zu spielen.
Chris H
2
Genau wie Joans Antwort bereits andeutet, ist der analoge Audioausgang des Pi genau das. Adafruit hat einen Artikel, der diese Schaltung im Detail für die Verwendung mit dem Pi Zero (der ohne ihn geliefert wird) beschreibt, hier .
du solltest eine beschreibung für den artikel haben, einfach den link setzen ist keine gute möglichkeit in stackexchange zu antworten. Irgendwann könnte die Verbindung sterben.
Trevor,
1
1) es ist nicht nur das Setzen des Links, es gibt Kontext (wenn auch nur ein wenig, wie ich zugebe), 2) Link Rot ist wahrscheinlich kein Problem, da es ein interner Link innerhalb von raspberrypi.SE ist, kein externer Link (also würde ich argumentieren, es wird genauso hartnäckig sein wie Ihre Frage). Die Idee war, die dort bereitgestellten Informationen nicht zu wiederholen und beide Fragen nicht als Dummköpfe miteinander zu schließen (weil sie es nicht sind, imho).
Antworten:
Die Audiobuchsenkanäle (links und rechts) werden von einem PWM-gesteuerten GPIO bereitgestellt (Kanal 0 von GPIO 12 oder 18 und Kanal 1 von GPIO 13 oder 19).
Wenn Sie also eine geeignete Schaltung an diesen GPIO anschließen, erhalten Sie Audio.
Weitere Informationen zu GPIO- und PWM-Peripheriegeräten finden Sie unter BCM2835 ARM-Peripheriegeräte .
EDITIERT ZUM HINZUFÜGEN
Etwas Hintergrund
In den letzten Pis wird der Audioausgang von den PWM-Kanälen 0 und 1 bereitgestellt. PWM-Kanal 0 wird an GPIO40 weitergeleitet, der mit dem (Stereo) rechten Kanal verbunden ist, und PWM-Kanal 1 wird an GPIO45 weitergeleitet, der mit dem (Stereo) verbunden ist. linker Kanal.
Diese PWM-Kanäle können zusätzlich einem vom Benutzer zugänglichen GPIO zugeführt werden.
PWM-Kanal 0 kann auf GPIO12 und GPIO18 geroutet werden.
PWM-Kanal 1 kann auf GPIO13 und GPIO19 geroutet werden.
Sie leiten PWM an ein GPIO weiter, indem Sie einen bestimmten GPIO-Modus wie folgt festlegen:
Siehe Seite 102 der obigen Broadcom-Spezifikationsreferenz.
Es gibt verschiedene Möglichkeiten, einen GPIO-Modus einzustellen.
Das Dienstprogramm " Meine Schweine" verwendet den Befehl " M" .
Beispiel: Schweine m 18 5 setzen GPIO18 in den Modus ALT5.
quelle
Genau wie Joans Antwort bereits andeutet, ist der analoge Audioausgang des Pi genau das. Adafruit hat einen Artikel, der diese Schaltung im Detail für die Verwendung mit dem Pi Zero (der ohne ihn geliefert wird) beschreibt, hier .
quelle