Protokol I2S : Cara Kerja, Perbedaan & Aplikasinya

Coba Instrumen Kami Untuk Menghilangkan Masalah





Sistem digital dan persyaratan data audio dalam Handset Seluler, Komputer & Otomatisasi Rumah produk telah berubah secara dramatis selama periode waktu tertentu. Sinyal audio dari atau ke prosesor menjadi digital. Data ini dalam sistem yang berbeda diproses melalui banyak perangkat seperti DSP , ADC, DAC, Antarmuka I/O Digital, dll. Agar perangkat ini dapat berkomunikasi satu sama lain data audio, diperlukan protokol standar. Salah satunya adalah protokol I2S. Ini adalah antarmuka bus serial, dirancang oleh Philip Semiconductor pada Februari 1986 untuk antarmuka audio digital antar perangkat. Artikel ini membahas gambaran umum tentang I protokol 2S yang bekerja dengan aplikasi.


Apa itu Protokol I2S?

Protokol yang digunakan untuk mengirimkan data audio digital dari satu perangkat ke perangkat lain dikenal sebagai protokol I2S atau Inter-IC Sound. Protokol ini mentransmisikan data audio PCM (pulse-code modulated) dari satu IC ke IC lainnya dalam perangkat elektronik. I2S memainkan peran kunci dalam mentransmisikan file audio yang direkam sebelumnya dari MCU ke DAC atau amplifier. Protokol ini juga dapat dimanfaatkan untuk mendigitalkan audio menggunakan mikrofon. Tidak ada kompresi dalam protokol I2S, jadi Anda tidak dapat memutar OGG atau MP3 atau format audio lain yang memadatkan audio, namun Anda dapat memutar file WAV.



Fitur

Itu Fitur protokol I2S termasuk berikut ini.

  • Ini memiliki 8 hingga 32 bit data untuk setiap sampel.
  • Tx & Rx FIFO menyela.
  • Ini mendukung DMA.
  • Periode pemilihan kata 16-bit, 32-bit, 48-bit, atau 64-bit.
  • Streaming audio dua arah secara bersamaan.
  • Lebar sampel 8-bit, 16-bit, dan 24-bit.
  • Ini memiliki tingkat sampel yang berbeda.
  • Kecepatan data hingga 96 kHz melalui periode pemilihan kata 64-bit.
  • FIFO stereo yang disisipkan atau FIFO saluran kanan & kiri Independen
  • Pengaktifan independen Tx & Rx.

Protokol Komunikasi I2S Bekerja

I2S protokol komunikasi adalah protokol 3 Kawat yang hanya menangani data audio melalui bus serial 3-baris yang mencakup SCK (Continuous Serial Clock), WS (Word Select) & SD (Serial Data).



Koneksi 3-Kawat I2S:

SCK

SCK atau Serial Clock adalah baris pertama dari protokol I2S yang juga dikenal sebagai BCLK atau bit clock line yang digunakan untuk mendapatkan data pada siklus yang sama. Frekuensi clock serial didefinisikan secara sederhana dengan menggunakan rumus seperti Frequency = Sample Rate x Bits untuk setiap channel x no. saluran.

WS

Dalam protokol komunikasi I2S, WS atau pemilihan kata adalah jalur yang juga dikenal sebagai kabel FS (Frame Select) yang memisahkan saluran kanan atau kiri.

Jika WS = 0 maka saluran kiri atau saluran-1 digunakan.

Jika WS = 1 maka saluran kanan atau saluran-2 digunakan.

SD

Data Serial atau SD adalah kabel terakhir di mana muatan ditransmisikan dalam 2 pelengkap. Jadi, sangat penting bahwa MSB pertama kali ditransfer, karena pengirim & penerima mungkin memiliki panjang kata yang berbeda. Dengan demikian, pemancar atau penerima harus mengenali berapa banyak bit yang ditransmisikan.

  • Jika panjang kata penerima lebih besar dari pemancar, maka kata dipersingkat (bit LSB diatur ke nol).
  • Jika panjang kata penerima kurang dari panjang kata pemancar, maka bit LSB diabaikan.

Itu pemancar dapat mengirim data baik di ujung depan atau ujung belakang pulsa jam . Ini dapat dikonfigurasi dalam yang sesuai register kontrol . Tetapi penerima mengunci data serial dan WS hanya di ujung depan pulsa jam . Pemancar mentransmisikan data hanya setelah satu pulsa clock setelah perubahan WS. Penerima menggunakan sinyal WS untuk sinkronisasi data serial.

Komponen Jaringan I2S

Ketika beberapa komponen I2S terhubung satu sama lain maka ini disebut jaringan I2S. Komponen jaringan ini mencakup nama yang berbeda & juga fungsi yang berbeda. Jadi, diagram berikut menunjukkan 3 jaringan yang berbeda. Di sini papan ESP NodeMCU digunakan sebagai pemancar dan papan breakout audio I2S digunakan sebagai penerima. Tiga kabel yang digunakan untuk menghubungkan pemancar dan penerima adalah SCK, WS & SD.

  Komponen Jaringan I2S
Komponen Jaringan I2S

Pada diagram pertama, transmitter (Tx) adalah master sehingga mengontrol jalur SCK (serial clock) & WS (word select).

Pada diagram kedua, penerima adalah master. Jadi kedua jalur SCK & WS dimulai dari penerima & pemancar berakhir.

Pada diagram ketiga, pengontrol eksterior terhubung ke node dalam jaringan yang berfungsi seperti perangkat master. Jadi perangkat ini menghasilkan SCK & WS.

Dalam semua jaringan I2S di atas, hanya ada satu perangkat master yang tersedia dan banyak komponen lain yang mengirim atau menerima data suara.

Di I2S, perangkat apa pun dapat menjadi master dengan menyediakan sinyal clock.

Diagram Waktu I2S

Untuk pemahaman yang lebih baik tentang I2S & fungsinya, kami memiliki diagram pengaturan waktu protokol komunikasi I2S yang ditunjukkan di bawah ini. Diagram waktu protokol I2S ditunjukkan di bawah ini yang mencakup tiga kabel SCK, WS & SD.

  Diagram Waktu Protokol I2S
Diagram Waktu Protokol I2S

Pada diagram di atas, pertama, jam serial  memiliki Frekuensi = Sample Rate * Bits untuk setiap channel * no. saluran). Kata pilih baris adalah baris kedua yang berubah di antara '1' untuk saluran kanan & '0' untuk saluran kiri.

Baris ketiga adalah jalur data serial dimana data ditransmisikan pada setiap siklus clock di tepi jatuh dilambangkan dengan titik-titik dari TINGGI ke RENDAH.

Selain itu, kita dapat melihat bahwa garis WS bervariasi satu siklus CLK sebelum MSB ditransmisikan yang memberikan waktu kepada penerima untuk menyimpan kata sebelumnya & menghapus register input untuk kata berikutnya. MSB dikirim ketika SCK berubah setelah WS berubah.

Setiap kali data ditransmisikan antara pemancar dan penerima, akan ada penundaan propagasi  yang akan menjadi

delay propagasi = (perbedaan waktu antara jam eksternal dan jam internal penerima )+(perbedaan waktu antara jam internal saat data diterima).

Untuk meminimalkan penundaan propagasi dan untuk sinkronisasi transmisi data antara pemancar dan penerima  pemancar harus memiliki periode jam  

T > tr  – Untuk mengasumsikan bahwa T adalah periode jam pemancar dan tr adalah periode jam minimum pemancar.

Di bawah kondisi di atas jika kita pertimbangkan misalnya a pemancar  dengan kecepatan transmisi data 2.5MHz maka:

tr = 360ns

jam THC tinggi (minimum) >0,35 T.

jam TLC rendah (minimum> > 0,35T.

Receiver sebagai slave dengan kecepatan transmisi data 2.5MHz maka :

jam Tinggi tHC (minimum) < 0,35 T

jam TLC rendah (minimum) <0,35T.

waktu setup tst(minimum) < 0.20T.

Arduino Protokol I2S

Tujuan utama dari proyek ini adalah membuat antarmuka theremin I2S menggunakan library Arduino I2S. Komponen yang diperlukan untuk membuat proyek ini adalah; Arduino MKR Nol, Papan tempat memotong roti , Kabel jumper, Adafruit MAX98357A, 3W, speaker 4 ohm, dan RobotGeek Slider.

Pustaka Arduino I2S memungkinkan Anda untuk mengirim & menerima data audio digital melalui bus I2S. Jadi contoh ini bertujuan untuk menjelaskan bagaimana memanfaatkan perpustakaan ini untuk menggerakkan DAC I2S untuk mereproduksi suara yang dihitung dalam desain Arduino.

Sirkuit ini dapat dihubungkan sebagai; DAC I2S yang digunakan dalam contoh ini hanya membutuhkan tiga kabel serta catu daya untuk bus I2S. Koneksi untuk I2S pada Arduino MKRZero adalah sebagai berikut;

Serial Data (SD) pada pin A6;

Serial Clock (SCK) pada pin2;

Frame atau Word Select (FS) pada pin3;

Bekerja

Pada dasarnya, theremin memiliki dua kontrol pitch dan volume. Jadi, kedua parameter ini dimodifikasi dengan menggerakkan dua potensiometer geser, namun Anda juga dapat menyesuaikannya untuk membacanya. Kedua potensiometer dihubungkan dalam bentuk pembagi tegangan, sehingga menggerakkan potensiometer ini Anda akan mendapatkan nilai dari 0 hingga 1023. Setelah itu, nilai-nilai ini dipetakan di antara frekuensi maksimum & minimum dan volume terkecil dan tertinggi.

  Diagram Termin I2S
Diagram Termin I2S

Suara yang ditransmisikan pada bus I2S adalah gelombang sinus sederhana yang amplitudo & frekuensinya dimodifikasi berdasarkan pembacaan potensiometer.

Kode

Kode untuk menghubungkan Theremin dengan Arduino MKRZero, potensiometer 2-slider & DAC I2S diberikan di bawah ini.

#sertakan

const int maxFrequency = 5000; //frekuensi maksimum yang dihasilkan
const int minFrekuensi = 220; //frekuensi minimum yang dihasilkan
const int maxVolume = 100; //volume maksimal dari frekuensi yang dihasilkan
const int minVolume = 0; //volume min dari frekuensi yang dihasilkan
const int sampleRate = 44100; //sampel frekuensi yang dihasilkan
const int ukuran wav = 256; //ukuran buffer
sinus pendek[ukuran wav]; //buffer dimana nilai sinus disimpan
const int frekuensiPin = A0; //pin terhubung ke pot yang menentukan frekuensi sinyal
const int amplitudoPin = A1; //pin terhubung ke pot yang menentukan amplitudo sinyal
tombol const int = 6; //pin terhubung ke tombol kontrol  untuk menampilkan frekuensi

batalkan pengaturan()
{

Serial.begin(9600); //konfigurasi port serial
// Inisialisasi pemancar I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println('Gagal menginisialisasi I2S!');

sementara (1);
}

menghasilkanSine(); // isi buffer dengan nilai sinus
pinMode(tombol, INPUT_PULLUP); //letakkan pin tombol di input pullup

}
lingkaran kosong() {

if (digitalRead(tombol) == RENDAH)

{

float frekuensi = peta(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //frekuensi peta
int amplitudo = peta(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //peta amplitudo
playWave(frekuensi, 0,1, amplitudo); //memainkan suara
//mencetak nilai pada serial
Serial.print(“Frekuensi = “);
Serial.println(frekuensi);
Serial.print(“Amplitudo = “);
Serial.println(amplitudo);

}

}
batal menghasilkanSine() {
for (int i = 0; i < wavSize; ++i) {
sine[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 digunakan untuk tidak memiliki angka kecil
}
}
void playWave(frekuensi float, detik float, amplitudo int) {
// Putar ulang buffer bentuk gelombang yang disediakan untuk yang ditentukan
// jumlah detik.
// Pertama hitung berapa banyak sampel yang perlu diputar ulang untuk dijalankan
// untuk jumlah detik yang diinginkan.

iterasi int unsigned = detik * sampleRate;

// Kemudian hitung 'kecepatan' di mana kita bergerak melalui gelombang
// buffer berdasarkan frekuensi nada yang dimainkan.

float delta = (frekuensi * wavSize) / float(sampleRate);

// Sekarang ulangi semua sampel dan mainkan, hitung
// posisi dalam buffer gelombang untuk setiap momen dalam waktu.

for (unsigned int i = 0; i < iterasi; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
sampel pendek = amplitudo * sinus[pos];

// Gandakan sampel sehingga dikirim ke saluran kiri dan kanan.
// Tampaknya urutannya adalah saluran kanan, saluran kiri jika Anda ingin menulis
// suara stereo.

while (I2S.availableForWrite() < 2);
I2S.write(contoh);
I2S.write(contoh);

}
}

Perbedaan antara Protokol I2C dan I2S

Perbedaan antara Protokol I2C dan I2S meliputi yang berikut ini.

2C

I2S

Itu protokol I2C singkatan dari protokol bus antar-IC I2S adalah singkatan dari Inter-IC Sound protocol .
Ini terutama digunakan untuk menjalankan sinyal di antara sirkuit terintegrasi yang ditempatkan pada PCB serupa. Ini digunakan untuk menghubungkan perangkat audio digital.
Ini menggunakan dua jalur antara beberapa master & slave seperti SDA & SCL . Ini menggunakan tiga baris WS, SCK  & SD.
Ini mendukung multi-master & multi-slave. Ini mendukung master tunggal.
Protokol ini mendukung peregangan CLK. Protokol ini tidak memiliki peregangan CLK.
I2C menyertakan bit start & stop overhead tambahan. I2S tidak termasuk bit start & stop.

Keuntungan

Itu keuntungan dari bus I2S termasuk berikut ini.

  • I2S menggunakan jalur data CLK & serial yang terpisah. Jadi ia memiliki desain penerima yang sangat sederhana dibandingkan dengan sistem asinkron.
  • Ini adalah perangkat master tunggal sehingga tidak ada masalah dengan sinkronisasi data.
  • Mikrofon berbasis I2S o/p tidak memerlukan ujung depan analog tetapi digunakan dalam mikrofon nirkabel dengan menggunakan pemancar digital. Dengan menggunakan ini, Anda dapat memiliki koneksi digital sepenuhnya antara pemancar & transduser.

Kekurangan

Itu kerugian dari bus I2S termasuk berikut ini.

  • I2S tidak diusulkan untuk mentransfer data melalui kabel.
  • I2S tidak didukung dalam aplikasi tingkat tinggi.
  • Protokol ini memiliki masalah sinkronisasi antara tiga jalur sinyal yang terlihat pada bit rate & frekuensi sampling yang tinggi. Jadi masalah ini terutama terjadi karena variasi penundaan propagasi antara jalur jam & jalur data.
  • I2S tidak menyertakan mekanisme deteksi kesalahan, sehingga dapat menyebabkan kesalahan dalam decoding data.
  • Hal ini terutama digunakan untuk komunikasi antar-IC pada PCB serupa.
  • Tidak ada konektor khas & kabel interkoneksi untuk I2S, sehingga desainer yang berbeda menggunakan konektor yang berbeda.

Aplikasi

Itu aplikasi protokol I2S termasuk berikut ini.

  • I2S digunakan untuk menghubungkan perangkat audio digital.
  • Protokol ini banyak digunakan dalam mentransfer data audio dari DSP atau mikrokontroler ke codec audio untuk memutar audio.
  • Awalnya, antarmuka I2S digunakan dalam desain pemutar CD. Sekarang, dapat ditemukan di mana data audio digital sedang dikirim antar IC.
  • I2S digunakan dalam DSP, ADC audio, DAC, mikrokontroler, konverter laju sampel, dll.
  • I2S dirancang khusus untuk digunakan di antara sirkuit terpadu untuk mengkomunikasikan data audio digital.
  • Protokol ini memainkan peran penting dalam menghubungkan mikrokontroler & perangkat periferalnya saat I2S berfokus pada transmisi data audio antara perangkat audio digital.

Jadi, ini semua tentang ikhtisar tentang Spesifikasi protokol I2S yang meliputi cara kerja, perbedaan, dan penerapannya. I²S adalah protokol serial sinkron 3 kabel digunakan untuk mentransfer audio stereo digital antara dua sirkuit terpadu. Itu Penganalisis Protokol I2S adalah decoder sinyal yang mencakup semua DigiView Logic Analyzers. Perangkat lunak DigiView ini hanya menyediakan kemampuan pencarian, navigasi, ekspor, pengukuran, plot & pencetakan yang luas ke semua jenis sinyal. Ini pertanyaan untuk Anda, apa itu protokol I3C?