Jak wyprowadzać sygnały audio przez GPIO?


12

Czy jest jakiś sposób na wyprowadzenie sygnałów audio przez GPIO i czy ma to jakąś wadę?


1
Jedną z bardzo interesujących metod wyprowadzania dowolnego sygnału audio przez dowolny cyfrowy pin we / wy przy użyciu minimalnego sprzętu jest: romanblack.com/BTc_alg.htm
slebetman

Odpowiedzi:


9

Kanały jack audio (lewy i prawy) są dostarczane przez GPIO sterowane PWM (kanał 0 przez GPIO 12 lub 18, a kanał 1 przez GPIO 13 lub 19).

Więc jeśli podłączysz odpowiednie obwody do tych GPIO, otrzymasz dźwięk.

Szczegółowe informacje na temat urządzeń peryferyjnych GPIO i PWM można znaleźć w BCM2835 Peryferia ARM .


EDYTOWANE, ABY DODAĆ

Trochę tła

W ostatnim Pizu wyjście jack audio jest zapewnione przez kanały PWM 0 i 1. Kanał PWM 0 jest podawany do GPIO40, który jest podłączony do prawego kanału (stereo), a kanał PWM 1 jest podawany do GPIO45, który jest podłączony do (stereo) lewy kanał.

Te kanały PWM można dodatkowo zasilać dostępnym dla użytkownika GPIO.

Kanał 0 PWM może być kierowany do GPIO12 i GPIO18.

Kanał PWM 1 może być kierowany do GPIO13 i GPIO19.

Kierujesz PWM do GPIO, ustawiając określony tryb GPIO w następujący sposób:

  • GPIO12 - ustaw tryb ALT0
  • GPIO13 - ustaw tryb ALT0
  • GPIO18 - ustaw tryb ALT5
  • GPIO19 - ustaw tryb ALT5

Zobacz str. 102 powyższego opisu specyfikacji Broadcom.

Istnieją różne sposoby ustawiania trybu GPIO.

Narzędzie My Pigs korzysta z polecenia M.

Np. Świnie m 18 5 przestawią GPIO18 w tryb ALT5.


Czy muszę korzystać z obu kanałów? i dlaczego są lub istnieją, powiedzmy, że używam Pi 3 i jaka jest liczba GPIO, które mają sprzętowy PWM? Zgodnie z tym , tylko jeden pin ma PWM, czyli pin 12 (GPIO18).
Trevor,

@IlDivinCodino Możesz użyć jednego lub dwóch kanałów. Stereo wymaga dwóch, mono jeden. Moja odpowiedź wspomina o użytecznym GPIO, Lub oznacza, że ​​możesz użyć dowolnego GPIO (lub obu, jeśli znajdziesz powód, aby to zrobić).
joan

Własna biblioteka pigpio @ joan (IIRC) pozwala na PWM przez dowolne piny - zastanawiam się, ile kanałów audio można by uzyskać w ten sposób.
Chris H

1
@ChrisH pigpio DMA z pomiarem czasu PWM jest ograniczony, ponieważ można wygenerować tylko określoną liczbę częstotliwości z ograniczoną liczbą kroków od wyłączenia do pełnego włączenia. To jest w porządku dla wielu aplikacji, ale prawdopodobnie nie audio (nie wiem, jak PWM jest używany do generowania dźwięku, więc to zgaduję z mojej strony).
joan

2
@joan, to dyskretne częstotliwości byłyby większym problemem (cykl pracy 50:50 jest prawdopodobnie najlepszy dla maksymalnej głośności). Byłoby to dobre na alarm, ale nie na ogólne odtwarzanie. Mogę mieć szansę zagrać z nim w weekend.
Chris H

2

Tak jak sugeruje odpowiedź Joan, analogowe wyjście audio Pi jest właśnie takie. Adafruit ma artykuł opisujący szczegółowo ten zespół obwodów do użytku z Pi Zero (który jest bez niego), patrz tutaj .


powinieneś mieć opis artykułu, po prostu umieszczenie linku nie jest dobrym sposobem na odpowiedź w stosie wymiany. Kiedyś link może umrzeć.
Trevor,

2
1) nie tylko umieszcza link, ale daje kontekst (choć tylko trochę, jak przyznaję), 2) zgnilizna linku nie jest prawdopodobnie problemem, ponieważ jest to link wewnętrzny w raspberrypi.SE, a nie link zewnętrzny (dlatego też argumentować, że będzie tak samo uparty jak twoje pytanie). Chodziło o to, aby nie powtarzać zawartych tam informacji i nie zamykać obu pytań jako duplikatów (ponieważ nie są, imho).
Ghanima
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.