Protokol I2S : Kerja, Perbezaan & Aplikasinya

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Sistem digital dan keperluan data audionya dalam Handset Mudah Alih, Komputer & Automasi Rumah produk telah berubah secara mendadak dalam satu tempoh masa. Isyarat audio dari atau ke pemproses menjadi digital. Data ini dalam sistem yang berbeza diproses melalui banyak peranti seperti DSP , ADC, DAC, antara muka I/O Digital, dsb. Untuk membolehkan peranti ini menyampaikan data audio antara satu sama lain, protokol standard diperlukan. Salah satunya ialah protokol I2S. Ia ialah antara muka bas bersiri, direka oleh Philip Semiconductor pada Februari 1986 untuk antara muka audio digital antara peranti. Artikel ini membincangkan gambaran keseluruhan I Protokol 2S ia berfungsi dengan aplikasi.


Apakah Protokol I2S?

Protokol yang digunakan untuk menghantar data audio digital dari satu peranti ke peranti lain dikenali sebagai protokol I2S atau Inter-IC Sound. Protokol ini menghantar data audio PCM (dimodulasi kod nadi) dari satu IC ke yang lain dalam peranti elektronik. I2S memainkan peranan penting dalam menghantar fail audio yang telah dirakamkan daripada MCU kepada DAC atau penguat. Protokol ini juga boleh digunakan untuk mendigitalkan audio menggunakan mikrofon. Tiada pemampatan dalam protokol I2S, jadi anda tidak boleh memainkan OGG atau MP3 atau format audio lain yang memekatkan audio, namun, anda boleh memainkan fail WAV.



ciri-ciri

The Ciri protokol I2S termasuk yang berikut.

  • Ia mempunyai 8 hingga 32 bit data untuk setiap sampel.
  • Tx & Rx FIFO menyampuk.
  • Ia menyokong DMA.
  • Tempoh pilih perkataan 16-bit, 32-bit, 48-bit atau 64-bit.
  • Penstriman audio dua arah serentak.
  • Lebar sampel 8-bit, 16-bit dan 24-bit.
  • Ia mempunyai kadar sampel yang berbeza.
  • Kadar data adalah sehingga 96 kHz melalui tempoh pilih perkataan 64-bit.
  • FIFO stereo berjalin atau FIFO saluran kanan & kiri Bebas
  • Daya bebas Tx & Rx.

Protokol Komunikasi I2S Berfungsi

I2S protokol komunikasi ialah protokol 3 Wire yang hanya mengendalikan data audio melalui bas bersiri 3 baris yang merangkumi SCK (Jam Bersiri Berterusan), WS (Word Select) & SD (Data Bersiri).



Sambungan 3-Wayar I2S:

SCK

SCK atau Jam Bersiri ialah baris pertama protokol I2S yang juga dikenali sebagai BCLK atau garis jam bit yang digunakan untuk mendapatkan data pada kitaran yang serupa. Kekerapan jam bersiri ditakrifkan secara ringkas dengan menggunakan formula seperti Frekuensi = Kadar Sampel x Bit untuk setiap saluran x tidak. daripada saluran.

WS

Dalam protokol komunikasi I2S, WS atau word select ialah talian yang juga dikenali sebagai wayar FS (Frame Select) yang memisahkan saluran kanan atau kiri.

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

Jika WS = 1 maka saluran atau saluran-2 yang betul digunakan.

SD

Data Bersiri atau SD ialah wayar terakhir di mana muatan dihantar dalam 2 pelengkap. Jadi, adalah sangat penting bahawa MSB mula-mula dipindahkan, kerana kedua-dua pemancar & penerima mungkin termasuk panjang perkataan yang berbeza. Oleh itu, pemancar atau penerima perlu mengenali berapa banyak bit yang dihantar.

  • Jika panjang perkataan penerima lebih besar daripada pemancar, maka perkataan itu dipendekkan (bit LSB ditetapkan kepada sifar).
  • Jika panjang perkataan penerima kurang daripada panjang perkataan pemancar, maka bit LSB diabaikan.

The penghantar boleh menghantar data sama ada pada tepi hadapan atau tepi belakang nadi jam . Ini boleh dikonfigurasikan dalam yang sepadan daftar kawalan . Tetapi penerima menyelak data bersiri dan WS hanya pada tepi hadapan nadi jam . Pemancar menghantar data hanya selepas satu nadi jam selepas perubahan dalam WS. Penerima menggunakan isyarat WS untuk penyegerakan data bersiri.

Komponen Rangkaian I2S

Apabila beberapa komponen I2S disambungkan antara satu sama lain maka ini dipanggil rangkaian I2S. Komponen rangkaian ini termasuk nama yang berbeza & juga fungsi yang berbeza. Jadi, rajah berikut menunjukkan 3 rangkaian yang berbeza. Di sini papan ESP NodeMCU digunakan sebagai pemancar dan papan pecah audio I2S digunakan sebagai penerima. Tiga wayar yang digunakan untuk menyambungkan pemancar dan penerima ialah SCK, WS & SD.

  Komponen Rangkaian I2S
Komponen Rangkaian I2S

Dalam rajah pertama, pemancar (Tx) adalah induk supaya ia mengawal baris SCK (jam bersiri) & WS (pilihan perkataan).

Dalam rajah kedua, penerima adalah tuan. Jadi kedua-dua talian SCK & WS bermula dari penerima & penghantar berakhir.

Dalam rajah ketiga, pengawal luaran disambungkan ke nod dalam rangkaian yang berfungsi seperti peranti induk. Jadi peranti ini menjana SCK & WS.

Dalam rangkaian I2S di atas, hanya terdapat satu peranti induk yang tersedia dan banyak komponen lain yang menghantar atau menerima data bunyi.

Dalam I2S mana-mana peranti boleh menjadi induk dengan menyediakan isyarat jam.

Rajah Masa I2S

Untuk pemahaman yang lebih baik tentang I2S & fungsinya, kami mempunyai gambarajah pemasaan protokol komunikasi I2S yang ditunjukkan di bawah. Gambar rajah pemasaan protokol I2S ditunjukkan di bawah yang merangkumi tiga wayar SCK, WS & SD.

  Rajah Masa Protokol I2S
Rajah Masa Protokol I2S

Dalam rajah di atas, pertama, jam bersiri  mempunyai Frekuensi = Kadar Sampel * Bit untuk setiap saluran * tidak. daripada saluran). Baris pilih perkataan ialah baris kedua yang berubah di antara '1' untuk saluran kanan & '0' untuk saluran kiri.

Baris ketiga ialah talian data bersiri di mana data dihantar pada setiap kitaran jam pada tepi jatuh yang dilambangkan dengan titik dari TINGGI ke RENDAH.

Di samping itu, kita dapat melihat bahawa talian WS mengubah satu kitaran CLK sebelum MSB dihantar yang memberikan masa penerima untuk menyimpan perkataan awal & mengosongkan daftar input untuk perkataan seterusnya. MSB dihantar apabila SCK berubah selepas WS berubah.

Apabila data dihantar antara penghantar dan penerima akan berlaku kelewatan penyebaran  yang akan

kelewatan penyebaran = (perbezaan masa antara jam luaran dan jam dalaman penerima )+( perbezaan masa antara jam dalaman hingga apabila data diterima).

Untuk meminimumkan kelewatan penyebaran dan untuk penyegerakan penghantaran data antara pemancar dan penerima  pengirim mesti mempunyai tempoh jam  

T > tr  – Untuk mengandaikan bahawa T ialah tempoh jam pemancar dan tr ialah tempoh jam minimum pemancar.

Di bawah keadaan di atas jika kita pertimbangkan sebagai contoh a pemancar  dengan kadar penghantaran data 2.5MHz kemudian:

tr = 360ns

jam THC tinggi (minimum) >0.35 T.

jam TLC rendah (minimum> > 0.35T.

Penerima sebagai hamba dengan kadar penghantaran data 2.5MHz kemudian:

jam THC tinggi (minimum) < 0.35 T

jam TLC rendah (minimum) < 0.35T.

masa persediaan tst(minimum) < 0.20T.

Arduino Protokol I2S

Objektif utama projek ini adalah untuk membuat antara muka I2S  theremin menggunakan perpustakaan Arduino I2S. Komponen yang diperlukan untuk membuat projek ini ialah; Arduino MKR Zero, Papan roti , wayar Jumper, Adafruit MAX98357A, 3W, pembesar suara 4 ohm dan RobotGeek Slider.

Pustaka Arduino I2S hanya membenarkan anda menghantar & menerima data audio digital melalui bas I2S. Jadi contoh ini menyasarkan untuk menerangkan cara menggunakan perpustakaan ini untuk memacu DAC I2S untuk menghasilkan semula bunyi yang dikira dalam reka bentuk Arduino.

Litar ini boleh disambungkan sebagai; DAC I2S yang digunakan dalam contoh ini hanya memerlukan tiga wayar serta bekalan kuasa untuk bas I2S. Sambungan untuk I2S pada Arduino MKRZero mengikuti sebagai;

Data Bersiri (SD) pada pin A6;

Jam Bersiri (SCK) pada pin2;

Bingkai atau Word Select (FS) pada pin3;

sedang bekerja

Pada asasnya, theremin mempunyai dua kawalan pic dan volum. Jadi, kedua-dua parameter ini diubah suai dengan menggerakkan dua potensiometer slaid, namun, anda juga boleh melaraskannya untuk membacanya. Kedua-dua potensiometer disambungkan dalam bentuk pembahagi voltan, jadi menggerakkan potensiometer ini anda akan mendapat nilai dari 0 hingga 1023. Selepas itu, nilai ini dipetakan di antara frekuensi maksimum & minimum dan volum paling sedikit dan tertinggi.

  Rajah Termin I2S
Gambarajah Termin I2S

Bunyi yang dihantar pada bas I2S ialah gelombang sinus mudah yang amplitud & frekuensinya diubah suai berdasarkan bacaan potensiometer.

Kod

Kod untuk menghubungkan Theremin dengan Arduino MKRZero, potensiometer 2-gelangsar & DAC I2S diberikan di bawah.

#include

const int maxFrequency = 5000; //kekerapan terjana maksimum
const int minFrequency = 220; // frekuensi terhasil minimum
const int maxVolume = 100; // volum maksimum frekuensi yang dijana
const int minVolume = 0; // isipadu min bagi frekuensi yang dijana
const int sampleRate = 44100; //samplerate frekuensi yang dihasilkan
const int wavSize = 256; //saiz penimbal
sinus pendek [wavSize]; //penampan di mana nilai sinus disimpan
const int frequencyPin = A0; //pin disambungkan ke pasu yang menentukan kekerapan isyarat
const int amplitudPin = A1; //pin disambungkan ke pasu yang menentukan amplitud isyarat
butang const int = 6; //pin disambungkan ke kawalan butang  untuk memaparkan kekerapan

persediaan batal()
{

Serial.begin(9600); //konfigurasi port bersiri
// Mulakan pemancar I2S.
jika (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println('Gagal untuk memulakan I2S!');

manakala (1);
}

generateSine(); // mengisi penimbal dengan nilai sinus
pinMode(butang, INPUT_PULLUP); //letak pin butang dalam pullup input

}
gelung kosong() {

jika (digitalRead(butang) == RENDAH)

{

kekerapan apungan = peta(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); // kekerapan peta
int amplitud = peta(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //amplitud peta
playWave(frekuensi, 0.1, amplitud); //memainkan bunyi
//cetak nilai pada siri
Serial.print(“Frequency = “);
Serial.println(frekuensi);
Serial.print(“Amplitud = “);
Serial.println(amplitud);

}

}
void generateSine() {
untuk (int i = 0; i
sinus[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 digunakan untuk tidak mempunyai nombor kecil
}
}
void playWave(frekuensi terapung, saat terapung, amplitud int) {
// Main semula penimbal bentuk gelombang yang disediakan untuk yang ditentukan
// jumlah saat.
// Mula-mula hitung berapa banyak sampel yang perlu dimainkan semula untuk dijalankan
// untuk jumlah saat yang dikehendaki.

lelaran int tidak ditandatangani = saat * kadar sampel;

// Kemudian hitung 'kelajuan' di mana kita bergerak melalui gelombang
// penimbal berdasarkan kekerapan nada dimainkan.

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

// Sekarang gelung melalui semua sampel dan mainkannya, mengira
// kedudukan dalam penampan gelombang untuk setiap saat dalam masa.

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

// Duplikat sampel supaya ia dihantar ke saluran kiri dan kanan.
// Nampaknya pesanan adalah saluran kanan, saluran kiri jika anda mahu menulis
// bunyi stereo.

manakala (I2S.availableForWrite() < 2);
I2S.write(sampel);
I2S.write(sampel);

}
}

Perbezaan antara Protokol I2C dan I2S

Perbezaan antara Protokol I2C dan I2S termasuk yang berikut.

2C

I2S

The protokol I2C bermaksud protokol bas antara IC I2S adalah singkatan dari Inter-IC Sound protocol .
Ia digunakan terutamanya untuk menjalankan isyarat antara litar bersepadu yang diletakkan pada PCB yang serupa. Ia digunakan untuk menyambungkan peranti audio digital.
Ia menggunakan dua baris antara beberapa tuan & hamba seperti SDA & SCL . Ia menggunakan tiga baris WS, SCK  & SD.
Ia menyokong multi-master & multi-slave. Ia menyokong tuan tunggal.
Protokol ini menyokong regangan CLK. Protokol ini tidak mempunyai regangan CLK.
I2C termasuk bit permulaan & henti overhed tambahan. I2S tidak termasuk sebarang bit mula & henti.

Kelebihan

The kelebihan bas I2S termasuk yang berikut.

  • I2S menggunakan talian data CLK & bersiri yang berasingan. Jadi ia mempunyai reka bentuk penerima yang sangat mudah berbanding dengan sistem tak segerak.
  • Ia adalah peranti induk tunggal jadi tiada masalah dengan penyegerakan data.
  • Mikrofon berdasarkan I2S o/p tidak memerlukan hujung hadapan analog tetapi digunakan dalam mikrofon wayarles dengan menggunakan pemancar digital. Dengan menggunakan ini, anda boleh mempunyai sambungan digital sepenuhnya antara pemancar & transduser.

Keburukan

The keburukan bas I2S termasuk yang berikut.

  • I2S tidak dicadangkan untuk memindahkan data melalui kabel.
  • I2S tidak disokong dalam aplikasi peringkat tinggi.
  • Protokol ini mempunyai masalah penyegerakan antara tiga talian isyarat yang dilihat pada kadar bit tinggi & kekerapan pensampelan. Jadi masalah ini berlaku terutamanya kerana variasi kelewatan penyebaran antara garis jam & talian data.
  • I2S tidak termasuk mekanisme pengesanan ralat, jadi ia boleh menyebabkan ralat dalam penyahkodan data.
  • Ia digunakan terutamanya untuk komunikasi antara IC pada PCB yang serupa.
  • Tiada penyambung biasa & kabel penyambung untuk I2S, jadi pereka bentuk yang berbeza menggunakan penyambung yang berbeza.

Aplikasi

The aplikasi protokol I2S termasuk yang berikut.

  • I2S digunakan untuk menyambungkan peranti audio digital.
  • Protokol ini digunakan secara meluas dalam memindahkan data audio daripada DSP atau mikropengawal kepada codec audio untuk memainkan audio.
  • Pada mulanya, antara muka I2S digunakan dalam reka bentuk pemain CD. Kini, ia boleh didapati di mana data audio digital dihantar antara IC.
  • I2S digunakan dalam DSP, ADC audio, DAC, mikropengawal, penukar kadar sampel, dsb.
  • I2S direka khusus untuk digunakan di antara litar bersepadu untuk menyampaikan data audio digital.
  • Protokol ini memainkan peranan penting dalam menyambungkan mikropengawal &  peranti persisiannya apabila I2S memfokuskan pada penghantaran data audio antara peranti audio digital.

Oleh itu, ini adalah mengenai gambaran keseluruhan Spesifikasi protokol I2S yang merangkumi kerja, perbezaan dan aplikasinya. I²S ialah protokol bersiri segerak 3 wayar digunakan untuk memindahkan audio stereo digital antara dua litar bersepadu. The Penganalisis Protokol I2S ialah penyahkod isyarat yang merangkumi semua Penganalisis Logik DigiView. Perisian DigiView ini hanya menyediakan carian luas, navigasi, eksport, pengukuran, plot & keupayaan mencetak kepada semua jenis isyarat. Berikut adalah soalan untuk anda, apakah protokol I3C?