Bagaimana cara mengeluarkan sinyal audio melalui GPIO?

12

Apakah ada cara untuk mengeluarkan sinyal audio melalui GPIO dan apakah ada kerugian dengan cara ini?

Trevor
sumber
1
Salah satu metode yang sangat menarik untuk mengeluarkan sinyal audio apa pun melalui pin I / O digital menggunakan perangkat keras minimal adalah ini: romanblack.com/BTc_alg.htm
slebetman

Jawaban:

9

Saluran jack audio (kiri dan kanan) disediakan oleh PWM yang digerakkan oleh PWIO (saluran 0 oleh GPIO 12 atau 18, dan saluran 1 oleh GPIO 13 atau 19).

Jadi jika Anda menghubungkan sirkuit yang sesuai dengan GPIO tersebut, Anda akan mendapatkan audio.

Lihat BCM2835 ARM Peripherals untuk detail tentang perangkat GPIO dan PWM.


DIedit UNTUK MENAMBAH

Beberapa latar belakang

Pada Pis baru-baru ini output jack audio disediakan oleh saluran PWM 0 dan 1. Saluran PWM 0 diumpankan ke GPIO40 yang terhubung ke saluran kanan (stereo), dan saluran PWM 1 diumpankan ke GPIO45 yang terhubung ke (stereo) saluran kiri.

Saluran PWM ini juga dapat dimasukkan ke GPIO yang dapat diakses pengguna.

Saluran PWM 0 dapat dialihkan ke GPIO12 dan GPIO18.

Saluran PWM 1 dapat dialihkan ke GPIO13 dan GPIO19.

Anda merutekan PWM ke GPIO dengan menetapkan mode GPIO tertentu sebagai berikut:

  • GPIO12 - mengatur mode ALT0
  • GPIO13 - mengatur mode ALT0
  • GPIO18 - mengatur mode ALT5
  • GPIO19 - mengatur mode ALT5

Lihat halaman 102 dari referensi spesifikasi Broadcom di atas.

Ada berbagai cara mengatur mode GPIO.

Utilitas babi saya menggunakan perintah M.

Misalnya babi m 18 5 akan mengatur GPIO18 ke mode ALT5.

joan
sumber
Apakah saya perlu menggunakan kedua saluran? dan mengapa ada atau ada, katakan saya menggunakan Pi 3 dan berapa jumlah GPIO yang memiliki perangkat keras PWM? Menurut ini , hanya ada satu pin memiliki PWM, yaitu pin 12 (GPIO18).
Trevor
@IlDivinCodino Anda dapat menggunakan satu atau dua saluran. Stereo membutuhkan dua, mono satu. Jawaban saya menyebutkan GPIO yang dapat digunakan, Atau berarti Anda dapat menggunakan GPIO (atau keduanya jika Anda dapat menemukan alasan untuk melakukannya).
joan
Pigpio library @ joan's sendiri (IIRC) memungkinkan PWM melalui pin sewenang-wenang - Saya ingin tahu berapa banyak saluran audio yang bisa Anda dapatkan dengan cara itu.
Chris H
1
@ChrisH pigpio DMA PWM berjangka waktu dibatasi karena hanya sejumlah frekuensi tetap yang dapat dihasilkan dengan sejumlah langkah terbatas antara mati dan sepenuhnya aktif. Itu bagus untuk banyak aplikasi, tetapi mungkin bukan audio (Saya tidak tahu bagaimana PWM digunakan untuk menghasilkan audio jadi ini adalah dugaan saya).
joan
2
@ Joan, Ini adalah frekuensi diskrit yang akan lebih menjadi masalah (siklus tugas 50:50 mungkin terbaik untuk volume maksimum). Jadi itu akan baik untuk alarm tetapi tidak untuk pemutaran umum. Saya mungkin memiliki kesempatan untuk bermain dengannya selama akhir pekan.
Chris H
2

Sama seperti jawaban Joan sudah menyarankan, keluaran analog Pi hanya itu. Adafruit memiliki artikel yang menjelaskan sirkuit ini secara rinci untuk digunakan dengan Pi Zero (yang datang tanpa itu), lihat di sini .

Ghanima
sumber
Anda harus memiliki deskripsi untuk artikel tersebut, cukup taruh tautannya bukan cara yang baik untuk menjawab di stackexchange. Terkadang tautannya bisa mati.
Trevor
2
1) ini bukan hanya menempatkan tautan, tetapi juga memberikan konteks (meskipun hanya sedikit seperti yang saya akui), 2) tautan busuk tidak akan menjadi masalah karena merupakan tautan internal di dalam raspberrypi.SE, bukan tautan eksternal (dengan demikian saya akan berdebat itu akan sama gigih seperti pertanyaan Anda). Idenya adalah untuk tidak mengulangi informasi yang diberikan di sana dan tidak menutup kedua pertanyaan sebagai dupes satu sama lain (karena tidak, imho).
Ghanima