如何通过GPIO输出音频信号?


Answers:


9

音频插孔通道(左和右)由PWM驱动的GPIO提供(通道0由GPIO 12或18提供,通道1由GPIO 13或19提供)。

因此,如果将适当的电路连接到这些GPIO,您将获得音频。

有关GPIO和PWM 外设的详细信息,请参见BCM2835 ARM外设


编辑添加

一些背景

在最近的Pis上,音频插孔输出由PWM通道0和1提供。PWM通道0被馈送到GPIO40,该GPIO40连接到(立体声)右声道,而PWM通道1被馈给GPIO45,该GPIO45被连接到(立体声)。左声道。

这些PWM通道可以另外馈送到用户可访问的GPIO。

PWM通道0可以路由到GPIO12和GPIO18。

PWM通道1可以路由到GPIO13和GPIO19。

您可以通过如下设置特定的GPIO模式将PWM路由至GPIO:

  • GPIO12-设置模式ALT0
  • GPIO13-设置模式ALT0
  • GPIO18-设置模式ALT5
  • GPIO19-设置模式ALT5

请参阅上面的Broadcom规格参考的第102页。

有多种设置GPIO模式的方法。

我的Pigs实用程序使用M命令。

例如,猪18 5将GPIO18设置为模式ALT5。


我需要同时使用两个频道吗?以及为什么存在存在,比如说我正在使用Pi 3,那么具有硬件PWM的GPIO的数量是多少?根据,只有一个销具有PWM,即销12(GPIO18)。
Trevor

@IlDivinCodino您可以使用一个或两个通道。立体声需要两个,单声道一个。我的答案提到了可用的GPIO,或者意味着您可以使用其中一个GPIO(如果可以找到一个理由,也可以使用两个)。
2013年

@joan自己的(IIRC)Pigpio库允许通过任意引脚进行PWM-我想知道您可以通过这种方式获得多少个音频通道。
克里斯·H

1
@ChrisH Pigpio DMA定时PWM受到限制,因为只有在关闭和完全打开之间可以使用有限数量的步长生成固定数量的频率。这对很多应用程序都很好,但可能对音频不是(我不知道如何使用PWM来生成音频,所以这是我的猜测)。
2016年

2
@joan,更多的是离散频率问题(50:50占空比可能是最大音量的最佳选择)。因此,对于警报而言将是有益的,但对于一般播放而言则不然。我可能有机会在周末玩它。
克里斯·H

2

就像琼的答案已经暗示的那样,Pi的模拟音频输出就是这样。Adafruit有一篇文章详细介绍了与Pi Zero(不带Pi Zero)一起使用的该电路,请参见此处


您应该对文章进行描述,只是将链接放在stackexchange中不是一个很好的答案。有时链接可能会消失。
Trevor

2
1)不仅仅是放置链接,它还提供了上下文信息(尽管我承认这只是一点点),2)链接腐烂不是问题,因为它是raspberrypi.SE中的内部链接,而不是外部链接(我会这样)认为这将与您的问题一样持久)。这样做的目的是不重复此处提供的信息,并且不要将两个问题都当成是相互重复(因为它们不是,恕我直言)。
加纳玛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.