I2S protokol: rad, razlike i njegove primjene

Isprobajte Naš Instrument Za Uklanjanje Problema





Digitalni sustavi i njihovi zahtjevi za audio podatke unutar mobilnih uređaja, računala i Kućna automatizacija proizvodi su se dramatično promijenili tijekom određenog vremenskog razdoblja. Audio signal od ili prema procesorima postaje digitaliziran. Ti se podaci u različitim sustavima obrađuju putem mnogih uređaja poput DSP-ovi , ADC-ovi, DAC-ovi, digitalna I/O sučelja, itd. Kako bi ovi uređaji međusobno komunicirali audio podatke potreban je standardni protokol. Jedan takav je I2S protokol. To je sučelje serijske sabirnice, koje je dizajnirao Philip Semiconductor u veljači 1986. za digitalno audio sučelje između uređaja. Ovaj članak govori o pregledu I 2S protokol njegov rad s aplikacijama.


Što je I2S protokol?

Protokol koji se koristi za prijenos digitalnih audio podataka s jednog uređaja na drugi poznat je kao I2S ili Inter-IC Sound protokol. Ovaj protokol prenosi audio podatke PCM (modulirani pulsnim kodom) s jednog IC-a na drugi unutar elektroničkog uređaja. I2S igra ključnu ulogu u prijenosu audio datoteka koje su unaprijed snimljene s MCU-a na DAC ili pojačalo. Ovaj se protokol također može koristiti za digitalizaciju zvuka pomoću mikrofona. Ne postoji kompresija unutar I2S protokola, tako da ne možete reproducirati OGG ili MP3 ili druge audio formate koji kondenziraju zvuk, no možete reproducirati WAV datoteke.



Značajke

The Značajke I2S protokola uključuju sljedeće.

  • Ima 8 do 32 podatkovna bita za svaki uzorak.
  • Tx & Rx FIFO prekidi.
  • Podržava DMA.
  • 16-bitno, 32-bitno, 48-bitno ili 64-bitno razdoblje odabira riječi.
  • Simultano dvosmjerno strujanje zvuka.
  • 8-bitna, 16-bitna i 24-bitna širina uzorka.
  • Ima različite stope uzorkovanja.
  • Brzina podataka je do 96 kHz kroz razdoblje odabira 64-bitne riječi.
  • Isprepleteni stereo FIFO ili nezavisni desni i lijevi kanal FIFO
  • Neovisno omogućavanje Tx & Rx.

I2S komunikacijski protokol radi

I2S komunikacijski protokol je 3-žilni protokol koji jednostavno obrađuje audio podatke putem 3-linijske serijske sabirnice koja uključuje SCK (Continuous Serial Clock), WS (Word Select) i SD (Serial Data).



3-žična veza I2S:

SCK

SCK ili Serial Clock prva je linija I2S protokola koja je također poznata kao BCLK ili bit clock linija koja se koristi za dobivanje podataka u sličnom ciklusu. Frekvencija serijskog takta jednostavno se definira pomoću formule poput Frekvencija = Brzina uzorkovanja x Bitovi za svaki kanal x br. kanala.

WS

U I2S komunikacijskom protokolu, WS ili odabir riječi je linija koja je također poznata kao FS (Frame Select) žica koja razdvaja desni ili lijevi kanal.

Ako je WS = 0 tada se koristi lijevi kanal ili kanal-1.

Ako je WS = 1 tada se koristi desni kanal ili kanal-2.

SD

Serijski podaci ili SD posljednja su žica gdje se teret prenosi unutar 2 komplementa. Dakle, vrlo je značajno da se MSB prvi prenosi, jer i odašiljač i prijamnik mogu sadržavati različite duljine riječi. Stoga odašiljač ili prijamnik moraju prepoznati koliko se bitova prenosi.

  • Ako je duljina riječi prijemnika veća od duljine odašiljača, riječ se skraćuje (LSB bitovi se postavljaju na nulu).
  • Ako je duljina riječi prijemnika manja od duljine riječi odašiljača, tada se LSB bitovi zanemaruju.

The odašiljač može poslati podatke bilo na vodeći rub ili zadnji rub taktnog impulsa . Ovo se može konfigurirati u odgovarajućem kontrolni registri . Ali prijemnik hvata serijske podatke i WS samo na prednjem rubu taktnog impulsa . Odašiljač prenosi podatke samo nakon jednog takta nakon promjene WS. Prijemnik koristi WS signal za sinkronizaciju serijskih podataka.

I2S mrežne komponente

Kada je više I2S komponenti međusobno povezano, to se naziva I2S mreža. Komponenta ove mreže uključuje različita imena i različite funkcije. Dakle, sljedeći dijagram prikazuje 3 različite mreže. Ovdje se ESP NodeMCU ploča koristi kao odašiljač, a I2S audio breakout ploča se koristi kao prijemnik. Tri žice koje se koriste za povezivanje odašiljača i prijemnika su SCK, WS i SD.

  I2S mrežne komponente
I2S mrežne komponente

U prvom dijagramu, odašiljač (Tx) je glavni pa kontrolira linije SCK (serijski sat) i WS (odabir riječi).

U drugom dijagramu, prijemnik je glavni. Dakle, i SCK i WS linije počinju od prijemnika i odašiljača.

U trećem dijagramu, vanjski kontroler povezan je s čvorovima unutar mreže koji radi kao glavni uređaj. Dakle, ovaj uređaj generira SCK & WS.

U gore navedenim I2S mrežama dostupan je samo jedan glavni uređaj i mnoge druge komponente koje odašilju ili primaju zvučne podatke.

U I2S bilo koji uređaj može biti glavni tako što daje signal sata.

I2S vremenski dijagram

Za bolje razumijevanje I2S i njegove funkcionalnosti, imamo vremenski dijagram I2S komunikacijskog protokola prikazan u nastavku. Dolje je prikazan vremenski dijagram I2S protokola koji uključuje tri žice SCK, WS i SD.

  Vremenski dijagram I2S protokola
Vremenski dijagram I2S protokola

U gornjem dijagramu, prvo, serijski sat  ima Frekvencija = Brzina uzorkovanja * Bitovi za svaki kanal * br. kanala). Redak za odabir riječi je drugi redak koji se mijenja između '1' za desni kanal i '0' za lijevi kanal.

Treća linija je linija serijskih podataka gdje se podaci prenose u svakom ciklusu takta na padajućem rubu označenom točkama od HIGH do LOW.

Osim toga, možemo primijetiti da WS linija varira jedan CLK ciklus prije nego što se MSB odašilje što prijamniku daje vremena za pohranjivanje prethodne riječi i brisanje ulaznog registra za sljedeću riječ. MSB se šalje kada se SCK promijeni nakon promjene WS.

Kad god se podaci prenose između odašiljača i prijamnika, došlo bi do kašnjenja širenja  što bi

kašnjenje širenja = (vremenska razlika između vanjskog sata i unutarnjeg sata prijemnika)+( vremenska razlika između unutarnjeg sata do trenutka prijema podataka).

Za minimiziranje kašnjenja širenja i za sinkronizaciju prijenosa podataka između odašiljača i prijamnika  potrebno je da odašiljač ima period sata od  

T > tr  – Pretpostaviti da je T takt odašiljača, a tr minimalni takt odašiljača.

Pod gornjim uvjetom ako uzmemo u obzir na primjer a odašiljač  sa brzinom prijenosa podataka od 2,5MHz, tada:

tr = 360 ns

sat Visoki tHC (minimalno) >0,35 T.

sat Nizak tLC (minimalno> > 0,35T.

Prijemnik kao slave s brzinom prijenosa podataka od 2,5MHz tada:

sat Visoki tHC (minimalno) < 0,35 T

sat Nizak tLC (minimalno) < 0,35T.

vrijeme postavljanja tst(minimalno) < 0,20T.

I2S protokol Arduino

Glavni cilj ovog projekta je napraviti I2S  teremin sučelje pomoću Arduino I2S biblioteke. Potrebne komponente za izradu ovog projekta su: Arduino MKR Zero, Breadboard , Premosne žice, Adafruit MAX98357A, 3W, 4 ohma zvučnik i RobotGeek Slider.

Arduino I2S biblioteka vam jednostavno omogućuje prijenos i primanje digitalnih audio podataka preko I2S sabirnice. Dakle, cilj ovog primjera je objasniti kako koristiti ovu biblioteku za pokretanje I2S DAC-a za reprodukciju zvuka izračunatog u Arduino dizajnu.

Ovaj krug se može spojiti kao; I2S DAC korišten u ovom primjeru zahtijeva jednostavno tri žice kao i napajanje za I2S sabirnicu. Priključci za I2S na Arduino MKRZero slijede kao;

Serijski podaci (SD) na pinu A6;

Serijski sat (SCK) na pin2;

Okvir ili odabir riječi (FS) na pin3;

radim

U osnovi, teremin ima dvije kontrole visine i glasnoće. Dakle, ova dva parametra se mijenjaju pomicanjem dva klizna potenciometra, međutim, možete ih prilagoditi i za očitavanje. Dva potenciometra spojena su u obliku razdjelnika napona, tako da pomicanjem ovih potenciometara dobit ćete vrijednosti od 0 do 1023. Nakon toga, te se vrijednosti mapiraju između maksimalne i minimalne frekvencije te najmanje i najviše glasnoće.

  I2S Thermin dijagram
I2S Thermin dijagram

Zvuk koji se prenosi I2S sabirnicom je jednostavan sinusni val čija se amplituda i frekvencija mijenjaju na temelju očitanja potenciometara.

Kodirati

Kod za povezivanje Theremina s Arduino MKRZero, potenciometrima s 2 klizača i I2S DAC-om dan je u nastavku.

#include

const int maxFrequency = 5000; //maksimalna generirana frekvencija
const int minFrequency = 220; //minimalna generirana frekvencija
const int maxVolume = 100; //maksimalni volumen generirane frekvencije
const int minVolume = 0; //min. volumen generirane frekvencije
const int sampleRate = 44100; //brzina uzorkovanja generirane frekvencije
const int wavSize = 256; //veličina međuspremnika
kratki sinus [wavSize]; //spremnik u kojem su pohranjene vrijednosti sinusa
const int frekvencijaPin = A0; //pin spojen na pot koji određuje frekvenciju signala
const int amplitudaPin = A1; //pin spojen na pot koji određuje amplitudu signala
gumb const int = 6; //pin spojen na kontrolu gumba  za prikaz frekvencije

void setup()
{

Serial.begin(9600); //konfigurirajte serijski port
// Inicijaliziraj I2S odašiljač.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println(“Inicijalizacija I2S nije uspjela!”);

dok (1);
}

generiraj sinus(); // ispuni međuspremnik sinusnim vrijednostima
pinMode(gumb, INPUT_PULLUP); //stavite pin gumba u input pullup

}
void loop() {

if (digitalRead(button) == LOW)

{

float frekvencija = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //učestalost karte
int amplituda = map(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //map amplitude
playWave(frekvencija, 0,1, amplituda); //reproduciraj zvuk
//ispiši vrijednosti na serijski
Serial.print(“Frekvencija = “);
Serial.println(frekvencija);
Serial.print(“Amplituda = “);
Serial.println(amplituda);

}

}
void generiraj sinus() {
for (int i = 0; i < wavSize; ++i) {
sinus[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 se koristi da nema malih brojeva
}
}
void playWave(float frekvencija, float sekunde, int amplituda) {
// Reprodukcija dostavljenog međuspremnika valnog oblika za navedeno
// količina sekundi.
// Prvo izračunajte koliko uzoraka treba reproducirati da bi se pokrenulo
// za željeni broj sekundi.

unsigned int iterations = seconds * sampleRate;

// Zatim izračunajte 'brzinu' kojom se krećemo kroz val
// međuspremnik na temelju frekvencije tona koji se svira.

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

// Sada prođite kroz sve uzorke i reproducirajte ih, izračunavajući
// položaj unutar valnog međuspremnika za svaki trenutak u vremenu.

for (unsigned int i = 0; i < iteracije; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
kratki uzorak = amplituda * sinus[pos];

// Duplicirajte uzorak tako da se šalje na lijevi i desni kanal.
// Čini se da je redoslijed desni kanal, lijevi kanal ako želite pisati
// stereo zvuk.

dok (I2S.availableForWrite() < 2);
I2S.write(uzorak);
I2S.write(uzorak);

}
}

Razlika između I2C i I2S protokola

Razlika između I2C i I2S protokola uključuje sljedeće.

2C

I2S

The I2C protokol označava inter-IC bus protokol I2S je kratica za Inter-IC zvučni protokol .
Uglavnom se koristi za pokretanje signala među integriranim krugovima smještenim na sličnoj PCB. Koristi se za spajanje digitalnih audio uređaja.
Koristi dvije linije između nekoliko nadređenih i podređenih kao što su SDA i SCL . Koristi tri linije WS, SCK  i SD.
Podržava multi-master & multi-slave. Podržava jednog mastera.
Ovaj protokol podržava CLK rastezanje. Ovaj protokol nema rastezanje CLK.
I2C uključuje dodatne početne i zaustavne bitove. I2S ne uključuje početne i zaustavne bitove.

Prednosti

The prednosti I2S sabirnice uključuju sljedeće.

  • I2S koristi odvojene CLK i serijske podatkovne linije. Stoga ima vrlo jednostavan dizajn prijamnika u usporedbi s asinkronim sustavima.
  • To je jedan glavni uređaj tako da nema problema sa sinkronizacijom podataka.
  • Mikrofon temeljen na I2S o/p ne treba analogni prednji kraj, već se koristi unutar bežičnog mikrofona pomoću digitalnog odašiljača. Koristeći ovo, možete imati potpuno digitalnu vezu između odašiljača i sonde.

Nedostaci

The nedostaci I2S sabirnice uključuju sljedeće.

  • I2S nije predložen za prijenos podataka putem kabela.
  • I2S nije podržan unutar aplikacija visoke razine.
  • Ovaj protokol ima problem sinkronizacije između tri signalne linije koji se primjećuje pri visokoj brzini prijenosa i frekvenciji uzorkovanja. Dakle, ovaj se problem uglavnom javlja zbog varijacije kašnjenja širenja između linija sata i linija podataka.
  • I2S ne uključuje mehanizam za otkrivanje pogrešaka, tako da može uzrokovati pogreške u dekodiranju podataka.
  • Uglavnom se koristi za inter-IC komunikaciju na sličnoj PCB.
  • Ne postoje tipični konektori i kablovi za međusobno povezivanje za I2S, tako da različiti dizajneri koriste različite konektore.

Prijave

The primjene I2S protokola uključuju sljedeće.

  • I2S se koristi za spajanje digitalnih audio uređaja.
  • Ovaj se protokol intenzivno koristi u prijenosu audio podataka s DSP-a ili mikrokontrolera na audio kodek za reprodukciju zvuka.
  • U početku se I2S sučelje koristi u dizajnu CD playera. Sada se može pronaći tamo gdje se digitalni audio podaci šalju između IC-ova.
  • I2S se koristi u DSP-ovima, audio ADC-ovima, DAC-ovima, mikrokontrolerima, pretvaračima brzine uzorkovanja itd.
  • I2S je posebno dizajniran za korištenje između integriranih krugova za komunikaciju digitalnih audio podataka.
  • Ovaj protokol igra ključnu ulogu u povezivanju mikrokontrolera i njegovih perifernih uređaja kada se I2S fokusira na prijenos audio podataka između digitalnih audio uređaja.

Dakle, ovo je sve o pregledu Specifikacija I2S protokola što uključuje rad, razlike i njegove primjene. I²S je 3-žilni sinkroni serijski protokol koristi se za prijenos digitalnog stereo zvuka između dva integrirana kruga. The I2S analizator protokola je dekoder signala koji uključuje sve DigiView logičke analizatore. Ovaj DigiView softver jednostavno pruža mogućnosti širokog pretraživanja, navigacije, izvoza, mjerenja, crtanja i ispisa za sve vrste signala. Evo pitanja za vas, što je I3C protokol?