Comment sortir des signaux audio via GPIO?

12

Existe-t-il un moyen de produire des signaux audio via GPIO et y a-t-il un inconvénient à cette façon?

Trevor
la source
1
Une méthode très intéressante de sortie de n'importe quel signal audio via n'importe quelle broche d'E / S numérique en utilisant un matériel minimal est la suivante: romanblack.com/BTc_alg.htm
slebetman

Réponses:

9

Les canaux de prise audio (gauche et droite) sont fournis par GPIO piloté par PWM (canal 0 par GPIO 12 ou 18, et canal 1 par GPIO 13 ou 19).

Donc, si vous connectez les circuits appropriés à ces GPIO, vous obtiendrez l'audio.

Voir Périphériques ARM BCM2835 pour plus de détails sur les périphériques GPIO et PWM.


MODIFIÉ POUR AJOUTER

Quelques antécédents

Sur les Pis récents, la sortie jack audio est fournie par les canaux PWM 0 et 1. Le canal PWM 0 est alimenté au GPIO40 qui est connecté au canal droit (stéréo), et le canal PWM 1 est alimenté au GPIO45 qui est connecté au (stéréo) canal gauche.

Ces canaux PWM peuvent en outre être transmis à GPIO accessible à l'utilisateur.

Le canal PWM 0 peut être routé vers GPIO12 et GPIO18.

Le canal PWM 1 peut être routé vers GPIO13 et GPIO19.

Vous routez PWM vers un GPIO en définissant un mode GPIO particulier comme suit:

  • GPIO12 - définir le mode ALT0
  • GPIO13 - définir le mode ALT0
  • GPIO18 - définir le mode ALT5
  • GPIO19 - régler le mode ALT5

Voir page 102 de la référence de spécification Broadcom ci-dessus.

Il existe différentes façons de définir un mode GPIO.

Mon utilitaire porcs utilise la commande M.

Par exemple, les porcs m 18 5 mettront GPIO18 en mode ALT5.

joan
la source
Dois-je utiliser les deux canaux? et pourquoi il y en a ou là, disons que j'utilise Pi 3 et quel est le nombre de GPIO qui ont du PWM matériel? Selon cela , il n'y a qu'une seule broche a PWM, c'est la broche 12 (GPIO18).
Trevor
@IlDivinCodino Vous pouvez utiliser un ou deux canaux. La stéréo nécessite deux, une mono. Ma réponse mentionne le GPIO utilisable, ou signifie que vous pouvez utiliser l'un ou l'autre GPIO (ou les deux si vous pouvez trouver une raison de le faire).
joan
La bibliothèque pigpio de @ joan (IIRC) permet le PWM sur des broches arbitraires - je me demande combien de canaux audio vous pourriez obtenir de cette façon.
Chris H
1
@ChrisH pigpio DMA temporisé PWM est limité en ce que seul un nombre fixe de fréquences peut être généré avec un nombre limité d'étapes entre off et full on. C'est bien pour de nombreuses applications, mais probablement pas pour l'audio (je ne sais pas comment PWM est utilisé pour générer de l'audio, donc c'est une supposition de ma part).
joan
2
@joan, ce sont les fréquences discrètes qui seraient plus problématiques (un rapport cyclique 50:50 est probablement le meilleur pour un volume maximum). Ce serait donc bon pour une alarme mais pas pour une lecture générale. J'aurais peut-être une chance de jouer avec lui le week-end.
Chris H
2

Tout comme la réponse de Joan le suggère déjà, la sortie audio analogique du Pi est exactement cela. Adafruit a un article décrivant ces circuits en détail pour une utilisation avec le Pi Zero (qui vient sans), voir ici .

Ghanima
la source
vous devriez avoir une description de l'article, il suffit de mettre le lien n'est pas un bon moyen de répondre dans stackexchange. Parfois, le lien pourrait mourir.
Trevor
2
1) ce n'est pas seulement mettre le lien, c'est donner du contexte (quoique juste un peu comme je l'admets), 2) la pourriture des liens n'est probablement pas un problème car c'est un lien interne au sein de raspberrypi.SE, pas un lien externe (je le ferais donc soutiennent qu'il sera tout aussi persistant que votre question). L'idée était de ne pas répéter les informations qui y étaient fournies et de ne pas fermer les deux questions comme des dupes l'une à l'autre (parce qu'elles ne le sont pas, à mon humble avis).
Ghanima