Como emitir sinais de áudio através do GPIO?

12

Existe alguma maneira de emitir sinais de áudio através do GPIO e existe alguma desvantagem dessa maneira?

Trevor
fonte
1
Um método muito interessante de emitir qualquer sinal de áudio através de qualquer pino digital I / O usando hardware mínima é esta: romanblack.com/BTc_alg.htm
slebetman

Respostas:

9

Os canais da tomada de áudio (esquerda e direita) são fornecidos pelo GPIO controlado por PWM (canal 0 pelo GPIO 12 ou 18 e canal 1 pelo GPIO 13 ou 19).

Portanto, se você conectar os circuitos apropriados aos GPIO, obterá áudio.

Consulte BCM2835 ARM Peripherals para obter detalhes sobre o periférico GPIO e PWM.


EDITADO PARA ADICIONAR

Alguma experiência

Nos Pis recentes, a saída da tomada de áudio é fornecida pelos canais PWM 0 e 1. O canal PWM 0 é alimentado ao GPIO40, que é conectado ao canal direito (estéreo), e o canal PWM 1 é alimentado ao GPIO45, que é conectado ao (estéreo) canal esquerdo.

Esses canais PWM também podem ser alimentados ao GPIO acessível ao usuário.

O canal 0 do PWM pode ser roteado para GPIO12 e GPIO18.

O canal 1 do PWM pode ser roteado para GPIO13 e GPIO19.

Você encaminha o PWM para um GPIO definindo um modo GPIO específico da seguinte maneira:

  • GPIO12 - modo de configuração ALT0
  • GPIO13 - modo de configuração ALT0
  • GPIO18 - modo de configuração ALT5
  • GPIO19 - modo de configuração ALT5

Consulte a página 102 da referência de especificação da Broadcom acima.

Existem várias maneiras de definir um modo GPIO.

Meu utilitário de porcos usa o comando M.

Por exemplo, os porcos m 18 5 ajustam o GPIO18 no modo ALT5.

joan
fonte
Preciso usar os dois canais? e por que existem ou existem, digamos, eu estou usando o Pi 3 e qual é o número dos GPIOs que possuem hardware PWM? De acordo com isso , existe apenas um pino com PWM, que é o pino 12 (GPIO18).
Trevor
@IlDivinCodino Você pode usar um ou dois canais. O estéreo requer dois, um mono. Minha resposta menciona o GPIO utilizável, ou significa que você pode usar o GPIO (ou ambos, se encontrar um motivo para fazê-lo).
10136 joan
A biblioteca pigpio da própria joan ( IIRC ) permite o PWM através de pinos arbitrários - eu me pergunto quantos canais de áudio você poderia conseguir dessa maneira.
Chris H
1
O PWM com tempo de DMA do pigpio @ChrisH é restrito, pois apenas um número fixo de frequências pode ser gerado com um número limitado de etapas entre desativado e totalmente ativado. Isso é bom para muitos aplicativos, mas provavelmente não para áudio (não sei como o PWM é usado para gerar áudio, portanto, isso é um palpite da minha parte).
10136
2
@ joan, são as frequências discretas que seriam mais problemáticas (um ciclo de trabalho de 50:50 é provavelmente o melhor para o volume máximo). Portanto, seria bom para um alarme, mas não para a reprodução geral. Talvez eu tenha chance de brincar com ele no fim de semana.
Chris H
2

Assim como a resposta de Joan já sugere, a saída de áudio analógico do Pi é exatamente isso. A Adafruit possui um artigo que descreve esse circuito em detalhes para uso com o Pi Zero (que vem sem ele), veja aqui .

Ghanima
fonte
você deve ter uma descrição para o artigo, basta colocar o link não é uma boa maneira de responder em stackexchange. Em algum momento o link pode estar morrendo.
Trevor
1
1) não é apenas colocar o link, é dar contexto (embora um pouco, como eu admito), 2) o rot rot não é provavelmente um problema, pois é um link interno no raspberrypi.SE, não um link externo (portanto, seria argumentar que será tão persistente quanto sua pergunta). A idéia era não repetir as informações fornecidas lá e não fechar as duas perguntas como enganadoras umas às outras (porque elas não são, imho).
Ghanima