¿Cómo emitir señales de audio a través de GPIO?

12

¿Hay alguna forma de emitir señales de audio a través de GPIO y hay alguna desventaja con esta forma?

Trevor
fuente
1
Un método muy interesante para emitir cualquier señal de audio a través de cualquier pin de E / S digital con un hardware mínimo es este: romanblack.com/BTc_alg.htm
slebetman

Respuestas:

9

Los canales de conector de audio (izquierdo y derecho) son proporcionados por GPIO controlado por PWM (canal 0 por GPIO 12 o 18 y canal 1 por GPIO 13 o 19).

Entonces, si conecta los circuitos apropiados a esos GPIO, obtendrá audio.

Consulte BCM2835 ARM Peripherals para obtener detalles sobre el periférico GPIO y PWM.


EDITADO PARA AGREGAR

Algunos antecedentes

En Pis reciente, la salida del conector de audio es proporcionada por los canales PWM 0 y 1. El canal 0 PWM se alimenta a GPIO40 que está conectado al canal derecho (estéreo), y el canal 1 PWM se alimenta a GPIO45 que está conectado a (estéreo) canal izquierdo

Estos canales PWM pueden alimentarse adicionalmente a GPIO accesible para el usuario.

El canal 0 de PWM puede enrutarse a GPIO12 y GPIO18.

El canal 1 de PWM puede enrutarse a GPIO13 y GPIO19.

Enruta PWM a un GPIO configurando un modo GPIO particular de la siguiente manera:

  • GPIO12 - modo de ajuste ALT0
  • GPIO13 - modo de ajuste ALT0
  • GPIO18 - modo set ALT5
  • GPIO19 - modo set ALT5

Consulte la página 102 de la referencia de especificaciones de Broadcom arriba.

Hay varias formas de configurar un modo GPIO.

La utilidad de mis cerdos usa el comando M.

Por ejemplo, pigs m 18 5 configurará GPIO18 en modo ALT5.

joan
fuente
¿Necesito usar ambos canales? y por qué hay o hay, digamos que estoy usando Pi 3 y ¿cuál es el número de GPIO que tienen hardware PWM? De acuerdo con esto , solo hay un pin que tiene PWM, que es el pin 12 (GPIO18).
Trevor
@IlDivinCodino Puede usar uno o dos canales. Stereo requiere dos, mono uno. Mi respuesta menciona el GPIO utilizable, o significa que puede usar GPIO (o ambos si puede encontrar una razón para hacerlo).
joan
La propia biblioteca pigpio de @ joan (IIRC) permite PWM sobre pines arbitrarios: me pregunto cuántos canales de audio podría obtener de esa manera.
Chris H
1
@ChrisH pigpio DMA PWM temporizado está restringido porque solo se puede generar un número fijo de frecuencias con un número limitado de pasos entre apagado y encendido total. Eso está bien para muchas aplicaciones, pero probablemente no para audio (no sé cómo se usa PWM para generar audio, así que es una suposición de mi parte).
joan
2
@joan, son las frecuencias discretas las que serían más problemáticas (un ciclo de trabajo de 50:50 es probablemente el mejor para el volumen máximo). Por lo tanto, sería bueno para una alarma, pero no para la reproducción general. Podría tener la oportunidad de jugar con él durante el fin de semana.
Chris H
2

Justo como la respuesta de Joan ya sugiere, la salida de audio analógico de Pi es solo eso. Adafruit tiene un artículo que describe este circuito en detalle para usar con el Pi Zero (que viene sin él), vea aquí .

Ghanima
fuente
debe tener una descripción para el artículo, solo poner el enlace no es una buena manera de responder en stackexchange. En algún momento el enlace podría morir.
Trevor
2
1) no es solo poner el enlace, está dando contexto (aunque sea un poco como lo admito), 2) la descomposición del enlace no es probablemente un problema, ya que es un enlace interno dentro de raspberrypi.SE, no un enlace externo (por lo tanto, lo haría argumenta que será tan persistente como tu pregunta). La idea era no repetir la información proporcionada allí y no cerrar ambas preguntas como engañadas entre sí (porque no lo son, en mi humilde opinión).
Ghanima