Protokol I2S: Fungovanie, rozdiely a jeho aplikácie

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





Digitálne systémy a ich požiadavky na zvukové údaje v rámci mobilných telefónov, počítačov a Domáca automatizácia produkty sa v priebehu času dramaticky zmenili. Audio signál z alebo do procesorov sa digitalizuje. Tieto údaje v rôznych systémoch sú spracovávané prostredníctvom mnohých zariadení ako napr DSP , ADC, DAC, digitálne I/O rozhrania atď. Aby tieto zariadenia mohli medzi sebou komunikovať audio dáta, je potrebný štandardný protokol. Jedným z nich je protokol I2S. Ide o rozhranie sériovej zbernice, ktoré navrhol Philip Semiconductor vo februári 1986 pre digitálne audio rozhranie medzi zariadeniami. Tento článok pojednáva o prehľade I 2S protokol jeho prácu s aplikáciami.


Čo je protokol I2S?

Protokol, ktorý sa používa na prenos digitálnych zvukových údajov z jedného zariadenia do druhého, je známy ako I2S alebo Inter-IC Sound protokol. Tento protokol prenáša PCM (modulované pulzným kódom) audio dáta z jedného IC do druhého v rámci elektronického zariadenia. I2S hrá kľúčovú úlohu pri prenose zvukových súborov, ktoré sú vopred nahrané z MCU do DAC alebo zosilňovača. Tento protokol možno použiť aj na digitalizáciu zvuku pomocou mikrofónu. V protokoloch I2S nie je žiadna kompresia, takže nemôžete prehrávať OGG alebo MP3 alebo iné zvukové formáty, ktoré kondenzujú zvuk, môžete však prehrávať súbory WAV.



Vlastnosti

The Vlastnosti protokolu I2S zahŕňajú nasledujúce.

  • Pre každú vzorku má 8 až 32 dátových bitov.
  • Tx & Rx FIFO prerušenia.
  • Podporuje DMA.
  • 16-bitové, 32-bitové, 48-bitové alebo 64-bitové obdobie výberu slova.
  • Simultánne obojsmerné streamovanie zvuku.
  • 8-bitová, 16-bitová a 24-bitová šírka vzorky.
  • Má rôzne vzorkovacie frekvencie.
  • Rýchlosť prenosu dát je až 96 kHz cez 64-bitovú periódu výberu slova.
  • Prekladané stereo FIFO alebo nezávislé FIFO s pravým a ľavým kanálom
  • Nezávislé povolenie Tx & Rx.

Komunikačný protokol I2S funguje

I2S komunikačný protokol je 3-vodičový protokol, ktorý jednoducho spracováva audio dáta cez 3-riadkovú sériovú zbernicu, ktorá zahŕňa SCK (Continuous Serial Clock), WS (Word Select) a SD (Serial Data).



3-vodičové pripojenie I2S:

SCK

SCK alebo Serial Clock je prvý riadok protokolu I2S, ktorý je známy aj ako BCLK alebo riadok bitových hodín, ktorý sa používa na získanie údajov v podobnom cykle. Frekvencia sériových hodín je jednoducho definovaná pomocou vzorca ako frekvencia = vzorkovacia frekvencia x bity pre každý kanál x počet. kanálov.

WS

V komunikačnom protokole I2S je WS alebo word select linka, ktorá je tiež známa ako FS (Frame Select) vodič, ktorý oddeľuje pravý alebo ľavý kanál.

Ak WS = 0, použije sa ľavý kanál alebo kanál 1.

Ak WS = 1, použije sa pravý kanál alebo kanál 2.

SD

Sériové dáta alebo SD sú posledným vodičom, kde sa prenáša užitočné zaťaženie v rámci 2 doplnkov. Takže je veľmi dôležité, že MSB sa najprv prenesie, pretože vysielač aj prijímač môžu obsahovať rôzne dĺžky slov. Vysielač alebo prijímač teda musí rozpoznať, koľko bitov sa prenáša.

  • Ak je dĺžka slova prijímača väčšia ako vysielača, slovo sa skráti (bity LSB sú nastavené na nulu).
  • Ak je dĺžka slova prijímača menšia ako dĺžka slova vysielača, bity LSB sa ignorujú.

The vysielač môžete odoslať údaje buď na predná hrana alebo zostupná hrana hodinového impulzu . Toto je možné nakonfigurovať v príslušnom kontrolné registre . Ale prijímač zachytí sériové dáta a WS len na nábežnej hrane hodinového impulzu . Vysielač prenáša dáta až po jednom hodinovom impulze po zmene WS. Prijímač využíva signál WS na synchronizáciu sériových dát.

Sieťové komponenty I2S

Keď je navzájom spojených viacero komponentov I2S, nazýva sa to sieť I2S. Komponent tejto siete obsahuje rôzne názvy a tiež rôzne funkcie. Takže nasledujúci diagram ukazuje 3 rôzne siete. Tu sa ako vysielač používa doska ESP NodeMCU a ako prijímač sa používa doska I2S audio breakout. Tri vodiče používané na pripojenie vysielača a prijímača sú SCK, WS a SD.

  Sieťové komponenty I2S
Sieťové komponenty I2S

V prvom diagrame je vysielač (Tx) hlavný, takže riadi linky SCK (sériové hodiny) a WS (výber slov).

V druhom diagrame je prijímač hlavný. Takže linky SCK a WS začínajú od prijímača a končia od vysielača.

V treťom diagrame je k uzlom v sieti pripojený externý ovládač, ktorý funguje ako hlavné zariadenie. Takže toto zariadenie generuje SCK & WS.

Vo všetkých vyššie uvedených sieťach I2S je k dispozícii iba jedno hlavné zariadenie a mnoho ďalších komponentov, ktoré vysielajú alebo prijímajú zvukové dáta.

V I2S môže byť každé zariadenie master poskytnutím hodinového signálu.

I2S časový diagram

Pre lepšie pochopenie I2S a jeho funkčnosti máme nižšie zobrazený časový diagram komunikačného protokolu I2S. Časový diagram protokolu I2S je uvedený nižšie, ktorý zahŕňa tri vodiče SCK, WS a SD.

  Diagram časovania protokolu I2S
Diagram časovania protokolu I2S

Vo vyššie uvedenom diagrame majú sériové hodiny najprv frekvenciu = vzorkovacia frekvencia * bity pre každý kanál * č. kanálov). Riadok výberu slova je druhý riadok, ktorý sa mení medzi „1“ pre pravý kanál a „0“ pre ľavý kanál.

Tretí riadok je sériový dátový riadok, kde sa dáta prenášajú v každom taktovom cykle na zostupnej hrane označenej bodkami od HIGH po LOW.

Okrem toho si môžeme všimnúť, že linka WS sa mení jeden cyklus CLK pred odoslaním MSB, čo dáva prijímaču čas na uloženie predchádzajúceho slova a vymazanie vstupného registra pre ďalšie slovo. MSB sa odošle, keď sa SCK zmení po zmene WS.

Pri každom prenose údajov medzi vysielačom a prijímačom by došlo k oneskoreniu šírenia, ktoré by bolo

oneskorenie šírenia = (časový rozdiel medzi vonkajšími hodinami a vnútornými hodinami prijímača)+( časový rozdiel medzi vnútornými hodinami a príjmom dát).

Na minimalizáciu oneskorenia šírenia a na synchronizáciu prenosu údajov medzi vysielačom a prijímačom sa vyžaduje, aby vysielač mal periódu hodín

T > tr  – Predpokladajme, že T je hodinová perióda vysielača a tr je minimálna hodinová perióda vysielača.

Za vyššie uvedenej podmienky, ak vezmeme do úvahy napríklad a vysielač  s rýchlosťou prenosu dát 2,5 MHz, potom:

tr = 360 ns

hodiny Vysoká tHC (minimum) >0,35 T.

hodiny Low tLC (minimum> > 0,35T.

Prijímač ako slave s rýchlosťou prenosu dát 2,5 MHz potom:

hodiny Vysoká tHC (minimum) < 0,35 T

hodiny Nízka tLC (minimum) < 0,35T.

čas nastavenia tst(minimum) < 0,20T.

I2S protokol Arduino

Hlavným cieľom tohto projektu je vytvoriť I2S  theremin rozhranie pomocou knižnice Arduino I2S. Požadované komponenty na vytvorenie tohto projektu sú; Arduino MKR Zero, Breadboard , prepojovacie káble, Adafruit MAX98357A, 3W, 4 ohmový reproduktor a RobotGeek Slider.

Knižnica Arduino I2S vám jednoducho umožňuje prenášať a prijímať digitálne audio dáta cez zbernicu I2S. Tento príklad sa teda zameriava na vysvetlenie, ako využiť túto knižnicu na riadenie I2S DAC na reprodukciu zvuku vypočítaného v dizajne Arduino.

Tento obvod môže byť zapojený ako; I2S DAC použitý v tomto príklade vyžaduje jednoducho tri vodiče, ako aj napájanie pre zbernicu I2S. Pripojenia pre I2S na Arduino MKRZero nasledujú takto;

sériové dáta (SD) na kolíku A6;

Sériové hodiny (SCK) na kolíku 2;

Rám alebo Word Select (FS) na kolíku 3;

Pracovné

Theremin má v podstate dva ovládacie prvky výšky a hlasitosti. Tieto dva parametre sa teda upravujú pohybom dvoch posuvných potenciometrov, môžete ich však nastaviť aj tak, aby ste ich čítali. Dva potenciometre sú zapojené vo forme deliča napätia, takže pohybom týchto potenciometrov získate hodnoty od 0 do 1023. Potom sú tieto hodnoty mapované medzi maximálnou a minimálnou frekvenciou a najmenšou a najvyššou hlasitosťou.

  I2S Thermin Diagram
I2S Thermin Diagram

Zvuk prenášaný na zbernici I2S je jednoduchá sínusová vlna, ktorej amplitúda a frekvencia sa mení na základe čítania potenciometrov.

kód

Kód na prepojenie Thereminu s Arduino MKRZero, 2-posuvnými potenciometrami a I2S DAC je uvedený nižšie.

#include

const int maxFrekvencia = 5000; //maximálna generovaná frekvencia
const int minFrekvencia = 220; //minimálna generovaná frekvencia
const int maxVolume = 100; //max hlasitosť generovanej frekvencie
const int minVolume = 0; //min objem generovanej frekvencie
const int sampleRate = 44100; //vzorka generovanej frekvencie
const int wavSize = 256; //veľkosť vyrovnávacej pamäte
krátky sínus [wavSize]; //buffer, v ktorom sú uložené sínusové hodnoty
const int frekvenciaPin = A0; //kolík pripojený k potisku, ktorý určuje frekvenciu signálu
const int amplitudaPin = A1; //kolík pripojený k hrncu, ktorý určuje amplitúdu signálu
tlačidlo const int = 6; //pin pripojený k ovládaciemu prvku tlačidla  na zobrazenie frekvencie

void setup()
{

Serial.begin(9600); //nakonfigurujte sériový port
// Inicializujte vysielač I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, vzorkovacia frekvencia, 16)) {
Serial.println(“Nepodarilo sa inicializovať I2S!”);

zatiaľ čo (1);
}

vygenerujSine(); // naplňte vyrovnávaciu pamäť sínusovými hodnotami
pinMode(tlačidlo, INPUT_PULLUP); //umiestnite kolík tlačidla do vstupného pullup

}
void loop() {

if (digitalRead(tlačidlo) == NÍZKE)

{

float frekvencia = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //frekvencia mapy
int amplituda = map(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //amplitúda mapy
playWave(frekvencia, 0,1, amplituda); //prehrať zvuk
//vytlačí hodnoty na serial
Serial.print(“Frekvencia = “);
Serial.println(frekvencia);
Serial.print(“Amplitúda = “);
Serial.println(amplitúda);

}

}
void createSine() {
for (int i = 0; i < wavSize; ++i) {
sine[i] = ushort(float(100) * sin(2,0 * PI * (1,0 / wavSize) * i)); //100 sa používa na to, aby nemali malé čísla
}
}
void playWave(float frequency, float seconds, int amplitúda) {
// Prehrávanie poskytnutej vyrovnávacej pamäte priebehov pre zadané
// počet sekúnd.
// Najprv vypočítajte, koľko vzoriek je potrebné prehrať, aby sa spustili
// na požadovaný počet sekúnd.

unsigned int iterations = sekundy * sampleRate;

// Potom vypočítajte ‚rýchlosť‘, ktorou sa pohybujeme vlnou
// vyrovnávacia pamäť založená na frekvencii prehrávaného tónu.

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

// Teraz prejdite všetky vzorky a prehrajte ich, vypočítajte
// poloha v rámci vyrovnávacej pamäte pre každý časový okamih.

for (unsigned int i = 0; i < iterácie; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
krátka vzorka = amplitúda * sínus[pos];

// Duplikujte vzorku, aby bola odoslaná do ľavého aj pravého kanálu.
// Zdá sa, že poradie je pravý kanál, ľavý kanál, ak chcete písať
// stereo zvuk.

while (I2S.availableForWrite() < 2);
I2S.write(ukážka);
I2S.write(ukážka);

}
}

Rozdiel medzi protokolmi I2C a I2S

Rozdiel medzi protokolmi I2C a I2S zahŕňa nasledujúce.

2C

I2S

The I2C protokol znamená inter-IC bus protokol I2S znamená Inter-IC Sound protokol .
Používa sa hlavne na vedenie signálov medzi integrovanými obvodmi umiestnenými na podobnej doske plošných spojov. Používa sa na pripojenie digitálnych audio zariadení.
Používa dve linky medzi niekoľkými hlavnými a podriadenými jednotkami, ako sú SDA a SCL . Používa tri riadky WS, SCK a SD.
Podporuje multi-master a multi-slave. Podporuje jedného majstra.
Tento protokol podporuje rozťahovanie CLK. Tento protokol nemá CLK strečing.
I2C obsahuje dodatočné nadzemné štartovacie a zastavovacie bity. I2S neobsahuje žiadne štartovacie a stop bity.

Výhody

The výhody zbernice I2S zahŕňajú nasledujúce.

  • I2S využíva samostatné CLK a sériové dátové linky. V porovnaní s asynchrónnymi systémami má teda veľmi jednoduchý dizajn prijímača.
  • Je to jedno hlavné zariadenie, takže so synchronizáciou dát nie je problém.
  • Mikrofón založený na I2S o/p nepotrebuje analógový predný koniec, ale používa sa v rámci bezdrôtového mikrofónu pomocou digitálneho vysielača. Pomocou tohto môžete mať úplne digitálne spojenie medzi vysielačom a prevodníkom.

Nevýhody

The nevýhody zbernice I2S zahŕňajú nasledujúce.

  • I2S nie je navrhnutý na prenos dát cez káble.
  • I2S nie je podporované v rámci aplikácií na vysokej úrovni.
  • Tento protokol má problém so synchronizáciou medzi tromi signálovými linkami, ktorý je zaznamenaný pri vysokej bitovej rýchlosti a vzorkovacej frekvencii. Takže tento problém sa vyskytuje hlavne kvôli zmenám oneskorenia šírenia medzi hodinovými a dátovými linkami.
  • I2S neobsahuje mechanizmus detekcie chýb, takže môže spôsobiť chyby pri dekódovaní údajov.
  • Používa sa hlavne na komunikáciu medzi IC na podobnej doske plošných spojov.
  • Neexistujú žiadne typické konektory a prepojovacie káble pre I2S, takže rôzni dizajnéri používajú rôzne konektory.

Aplikácie

The aplikácie protokolu I2S zahŕňajú nasledujúce.

  • I2S sa používa na pripojenie digitálnych audio zariadení.
  • Tento protokol sa vo veľkej miere využíva pri prenose zvukových údajov z DSP alebo mikrokontroléra do zvukového kodeku na prehrávanie zvuku.
  • Spočiatku sa rozhranie I2S využíva v dizajnoch CD prehrávačov. Teraz je možné nájsť miesto, kde sa medzi integrovanými obvodmi odosielajú digitálne zvukové údaje.
  • I2S sa používa v DSP, audio ADC, DAC, mikrokontroléroch, prevodníkoch vzorkovacej frekvencie atď.
  • I2S je špeciálne navrhnutý na použitie medzi integrovanými obvodmi na komunikáciu digitálnych audio dát.
  • Tento protokol hrá kľúčovú úlohu pri pripájaní mikrokontroléra a jeho periférnych zariadení, keď sa I2S zameriava na prenos zvukových údajov medzi digitálnymi zvukovými zariadeniami.

Toto je teda všetko o prehľade Špecifikácia protokolu I2S ktorý zahŕňa fungovanie, rozdiely a jeho aplikácie. I²S je 3-vodičový synchrónny sériový protokol slúži na prenos digitálneho stereo zvuku medzi dvoma integrovanými obvodmi. The I2S protokolový analyzátor je dekodér signálu, ktorý obsahuje všetky logické analyzátory DigiView. Tento softvér DigiView jednoducho poskytuje široké možnosti vyhľadávania, navigácie, exportu, merania, vykresľovania a tlače pre všetky typy signálov. Tu je otázka pre vás, čo je protokol I3C?