Як виводити аудіосигнали через GPIO?


12

Чи є якийсь спосіб виводити аудіосигнали через GPIO і чи є такий недолік у цього способу?


1
Один дуже цікавий метод виведення будь-якого аудіосигналу через будь-який цифровий штифт вводу / виводу за допомогою мінімального обладнання: romanblack.com/BTc_alg.htm
slebetman

Відповіді:


9

Канали аудіороз'єму (зліва та справа) забезпечуються GPIO, керованим ШІМ (канал 0 - GPIO 12 або 18, а канал 1 - GPIO 13 або 19).

Тож якщо ви підключите відповідну схему до цих GPIO, ви отримаєте аудіо.

Детальніше про периферійні пристрої GPIO та ШІМ див. У периферійних пристроях BCM2835 ARM .


ВИДАЛЕНО ДОДАТИ

Якесь тло

На останньому Пісі вихід аудіороз'єму забезпечується каналами ШІМ 0 і 1. ШІМ-канал 0 подається на GPIO40, який підключений до (стерео) правого каналу, а канал 1 ШІМ подається на GPIO45, який підключений до (стерео) лівий канал.

Ці ШІМ-канали можуть додатково подаватися на доступний користувачеві GPIO.

ШІМ-канал 0 може бути перенаправлений до GPIO12 та GPIO18.

ШІМ-канал 1 може бути перенаправлений до GPIO13 та GPIO19.

Ви спрямовуєте ШІМ до GPIO, встановлюючи певний режим GPIO таким чином:

  • GPIO12 - встановлений режим ALT0
  • GPIO13 - встановлений режим ALT0
  • GPIO18 - встановлений режим ALT5
  • GPIO19 - встановлений режим ALT5

Див. Сторінку 102 посилання на специфікацію Broadcom вище.

Існують різні способи встановлення режиму GPIO.

Мої свинки утиліта використовує M команду.

Наприклад, свині m 18 5 переведуть GPIO18 в режим ALT5.


Чи потрібно використовувати обидва канали? і чому там чи там, скажімо, я використовую Pi 3 і яка кількість GPIO, у яких є апаратні PWM? Відповідно до цього , є лише один штифт PWM, тобто контакт 12 (GPIO18).
Тревор

@IlDivinCodino Ви можете використовувати один або два канали. На стерео необхідні два, моно. У моїй відповіді згадується придатний GPIO, або означає, що ви можете використовувати або GPIO (або обидва, якщо ви можете знайти причину для цього).
Джоан

Власна бібліотека pigpio @ joan (IIRC) дозволяє отримати ШІМ через довільні шпильки - мені цікаво, скільки аудіоканалів ви могли отримати таким чином.
Кріс Х

1
PWM з тимчасовою піктограмою pigmenio DMA обмежена тим, що може бути створено лише фіксовану кількість частот з обмеженою кількістю кроків між вимкненим і повністю включеним. Це добре для багатьох застосунків, але, мабуть, не для аудіо (я не знаю, як ШІМ використовується для генерації аудіо, тому з моєї сторони це здогад).
Джоан

2
@joan, Це дискретні частоти, які б більше викликали проблему (робочий цикл 50:50, мабуть, найкращий для максимальної гучності). Тож було б добре для тривоги, але не для загального відтворення. У мене, можливо, буде шанс пограти з цим у вихідні.
Кріс Х

2

Як вже підказує відповідь Джоан, аналоговий аудіо вихід Пі - це саме те. Adafruit має статтю, яка детально описує цю схему для використання з Pi Zero (який поставляється без неї), дивіться тут .


у вас повинен бути опис статті, просто помістити посилання - це не гарний спосіб відповісти в stackexchange. Колись посилання може загинути.
Тревор

2
1) це не просто посилання на посилання, це дає контекст (хоч і трохи, як я визнаю); 2) гниття посилань, ймовірно, не є проблемою, оскільки це внутрішнє посилання в Rasberrypi.SE, а не зовнішнє посилання (я, таким чином, стверджую, що це буде так само наполегливо, як і ваше запитання). Ідея полягала в тому, щоб не повторювати надану там інформацію і не закривати обидва питання як обдурки одне до одного (бо їх немає, імхо).
Ghanima
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.