I2S Protokoll: Működés, különbségek és alkalmazásai

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Digitális rendszerek és audioadat-követelményeik a mobilkészülékeken, számítógépeken és Otthoni automatizálás a termékek drámaian megváltoztak egy idő alatt. A processzoroktól érkező vagy a processzorokhoz érkező audiojel digitalizálódik. Ezeket az adatokat a különböző rendszerekben számos eszközön keresztül dolgozzák fel, mint pl DSP-k , ADC-k, DAC-k, digitális I/O interfészek stb. Ahhoz, hogy ezek az eszközök hangadatokat kommunikáljanak egymással, szabványos protokollra van szükség. Az egyik ilyen az I2S protokoll. Ez egy soros busz interfész, amelyet a Philip Semiconductor 1986 februárjában tervezett digitális audio interfészként az eszközök között. Ez a cikk az I. áttekintését tárgyalja 2S protokoll alkalmazásokkal dolgozik.


Mi az I2S protokoll?

A digitális audio adatok egyik eszközről a másikra történő átvitelére használt protokoll I2S vagy Inter-IC Sound protokoll néven ismert. Ez a protokoll PCM (impulzuskóddal modulált) hangadatokat továbbít az egyik IC-ről a másikra egy elektronikus eszközön belül. Az I2S kulcsszerepet játszik az MCU-ról DAC-ra vagy erősítőre előre rögzített hangfájlok továbbításában. Ez a protokoll felhasználható a hang digitalizálására is mikrofon segítségével. Az I2S protokollokon belül nincs tömörítés, így nem játszhat le OGG vagy MP3 vagy egyéb hangformátumokat, amelyek tömörítik a hangot, viszont lejátszhatja a WAV fájlokat.



Jellemzők

Az I2S protokoll jellemzői a következőket tartalmazzák.

  • Minden mintához 8-32 adatbit tartozik.
  • Tx & Rx FIFO megszakítások.
  • Támogatja a DMA-t.
  • 16 bites, 32 bites, 48 ​​bites vagy 64 bites szókiválasztási időszak.
  • Egyidejű kétirányú audio streaming.
  • 8 bites, 16 bites és 24 bites mintaszélesség.
  • Különböző mintavételi arányokkal rendelkezik.
  • Az adatátviteli sebesség akár 96 kHz a 64 bites szóválasztási perióduson keresztül.
  • Interleaved sztereó FIFO-k vagy független jobb és bal csatornás FIFO-k
  • Tx & Rx független engedélyezése.

I2S kommunikációs protokoll működik

Az I2S kommunikációs protokoll egy 3 Wire protokoll, amely egyszerűen kezeli a hangadatokat egy 3 soros soros buszon keresztül, amely tartalmazza az SCK-t (Continuous Serial Clock), a WS-t (Word Select) és az SD-t (soros adat).



I2S 3 vezetékes csatlakozása:

SCK

Az SCK vagy a Serial Clock az I2S protokoll első sora, amelyet BCLK-nek vagy bitórajelnek is neveznek, és amelyet az adatok hasonló ciklusban történő megszerzésére használnak. A soros órajel-frekvencia egyszerűen definiálható a következő képlettel: Frekvencia = Mintavételi sebesség x bit minden csatornához x sz. csatornák.

WS

Az I2S kommunikációs protokollban a WS vagy word select az FS (Frame Select) vezetékként is ismert vonal, amely elválasztja a jobb vagy a bal csatornát.

Ha WS = 0, akkor a bal oldali csatorna vagy a csatorna-1 használatos.

Ha WS = 1, akkor a jobb oldali csatorna vagy a 2. csatorna kerül felhasználásra.

SD

A soros adat vagy SD az utolsó vezeték, ahol a hasznos terhelést 2 komplementen belül továbbítják. Tehát nagyon fontos, hogy először az MSB kerül átadásra, mivel az adó és a vevő is eltérő szóhosszúságot tartalmazhat. Így az adónak vagy a vevőnek fel kell ismernie, hogy hány bitet továbbítottak.

  • Ha a vevő szóhossza nagyobb, mint az adóé, akkor a szó lerövidül (az LSB bitek nullára vannak állítva).
  • Ha a vevő szóhossza kisebb, mint az adó szóhossza, akkor az LSB biteket figyelmen kívül hagyja.

Az adó elküldheti az adatokat akár a az óraimpulzus elülső vagy lefutó éle . Ezt a megfelelő helyen lehet beállítani vezérlő regiszterek . De a A vevő a soros adatokat és a WS-t csak az óraimpulzus elülső szélén rögzíti . Az adó csak egy órajel impulzus után továbbít adatot a WS változása után. A vevő a WS jelet használja a soros adatok szinkronizálására.

I2S hálózati összetevők

Ha több I2S komponens kapcsolódik egymáshoz, akkor ezt I2S hálózatnak nevezzük. Ennek a hálózatnak az összetevője különböző neveket és funkciókat is tartalmaz. Tehát a következő diagram 3 különböző hálózatot mutat be. Itt egy ESP NodeMCU kártyát használnak adóként és egy I2S audio breakout kártyát vevőként. Az adó és a vevő csatlakoztatásához használt három vezeték SCK, WS és SD.

  I2S hálózati összetevők
I2S hálózati összetevők

Az első ábrán az adó (Tx) a mester, így vezérli az SCK (soros óra) és WS (szókiválasztás) vonalakat.

A második diagramon a vevő a mester. Tehát mind az SCK, mind a WS vonal a vevőtől indul és az adó véget ér.

A harmadik diagramon egy külső vezérlő csatlakozik a hálózaton belüli csomópontokhoz, amely úgy működik, mint a fő eszköz. Tehát ez az eszköz generálja az SCK & WS-t.

A mindenekelőtt az I2S hálózatokban csak egyetlen mestereszköz és sok egyéb hangadatok átvitelére vagy fogadására alkalmas komponens áll rendelkezésre.

Az I2S-ben bármely eszköz lehet a mester az órajel biztosításával.

I2S időzítési diagram

Az I2S és funkcióinak jobb megértéséhez az alábbiakban látható I2S kommunikációs protokoll időzítési diagramja. Az alábbiakban az I2S protokoll időzítési diagramja látható, amely három SCK, WS és SD vezetéket tartalmaz.

  I2S protokoll időzítési diagramja
I2S protokoll időzítési diagramja

A fenti diagramon először a soros óra frekvencia = mintavételezési sebesség * bitek minden csatornához * nem. csatornák). A szóválasztó sor a második sor, amely „1” között változik a jobb oldali csatorna és „0” között a bal csatorna esetében.

A harmadik sor az a soros adatsor, ahol az adatok továbbításra kerülnek minden órajelben a HIGH-tól LOW-ig pontokkal jelölt lefutó élen.

Ezenkívül észrevehetjük, hogy a WS vonal egy CLK ciklust vált az MSB továbbítása előtt, ami időt ad a vevőnek a korábbi szó tárolására és a következő szó bemeneti regiszterének törlésére. Az MSB akkor kerül elküldésre, amikor az SCK megváltozik a WS változása után.

Amikor adatot továbbítanak az adó és a vevő között, terjedési késleltetés lép fel

terjedési késleltetés = (időkülönbség a külső óra és a vevő belső órája között)+( időkülönbség a belső óra és az adatok vétele között).

A terjedési késleltetés minimalizálása és az adatátvitel szinkronizálása az adó és a vevő között szükséges, hogy az adónak legyen egy órajele

T > tr  – Tételezzük fel, hogy T az adó órajele, tr pedig az adó minimális órajele.

A fenti feltételek mellett, ha figyelembe vesszük például a 2,5 MHz-es adatátviteli sebességű adó, majd:

tr = 360ns

óra Magas tHC (minimum) >0,35 T.

óra Alacsony tLC (minimum> > 0,35T.

A vevő szolgaként 2,5 MHz adatátviteli sebességgel, akkor:

óra Magas tHC (minimum) < 0,35 T

óra Alacsony tLC (minimum) < 0,35T.

beállítási idő tst(minimum) < 0,20T.

I2S protokoll Arduino

A projekt fő célja egy I2S theremin interfész létrehozása az Arduino I2S könyvtár használatával. A projekt elkészítéséhez szükséges összetevők: Arduino MKR Zero, Kenyértábla , Jumper vezetékek, Adafruit MAX98357A, 3 W, 4 ohmos hangszóró és RobotGeek Slider.

Az Arduino I2S könyvtár egyszerűen lehetővé teszi digitális audio adatok továbbítását és fogadását az I2S buszon keresztül. Tehát ez a példa azt a célt szolgálja, hogy elmagyarázza, hogyan lehet ezt a könyvtárat használni egy I2S DAC meghajtására az Arduino tervezésben kiszámított hang reprodukálására.

Ez az áramkör csatlakoztatható; Az ebben a példában használt I2S DAC egyszerűen három vezetéket, valamint egy tápegységet igényel az I2S buszhoz. Az Arduino MKRZero I2S csatlakozásai a következők:

Soros adatok (SD) az A6 érintkezőn;

Soros óra (SCK) a 2. érintkezőn;

A keret vagy a szókiválasztás (FS) a 3. tűn;

Dolgozó

Alapvetően a theremin két hangmagasságot és hangerőt vezérel. Tehát ez a két paraméter módosítható két csúszó potenciométer mozgatásával, de beállíthatja azokat is, hogy leolvassák őket. A két potenciométer feszültségosztó alakban van összekötve, így ezeket a potenciométereket mozgatva 0 és 1023 közötti értékeket kapunk. Ezt követően ezek az értékek a maximális és minimális frekvencia, valamint a legkisebb és legnagyobb hangerő közé vannak leképezve.

  I2S Thermin diagram
I2S Thermin diagram

Az I2S buszon továbbított hang egy egyszerű szinuszhullám, amelynek amplitúdója és frekvenciája a potenciométerek leolvasása alapján módosul.

Kód

Az alábbiakban megadjuk a Theremin és az Arduino MKRZero, 2 csúszkás potenciométerek és egy I2S DAC interfész kódját.

#include

const int maxFrekvencia = 5000; //maximális generált frekvencia
const int minFrekvencia = 220; //minimális generált frekvencia
const int maxVolume = 100; //a generált frekvencia maximális mennyisége
const int minTérfogat = 0; //perc a generált frekvencia térfogata
const int sampleRate = 44100; //a generált frekvencia mintavételezése
const int wavSize = 256; //puffer mérete
rövid szinusz[wavSize]; //puffer, amelyben a szinuszértékek vannak tárolva
const int frekvenciaPin = A0; //tű a jel frekvenciáját meghatározó pothoz csatlakoztatva
const int amplitúdóPin = A1; //tű csatlakozik a pothoz, amely meghatározza a jel amplitúdóját
const int gomb = 6; //tű a gombvezérléshez  a frekvencia megjelenítéséhez

void setup()
{

Serial.begin(9600); //konfigurálja a soros portot
// Inicializálja az I2S adót.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println(“Nem sikerült inicializálni az I2S-t!”);

míg (1);
}

generSine(); // puffer kitöltése szinuszértékekkel
pinMode(button, INPUT_PULLUP); //tegye be a gombtűt az input pullupba

}
void loop() {

if (digitalRead(button) == LOW)

{

lebegő frekvencia = map(analogRead(frekvenciaPin), 0, 1023, minFrequency, max Frequency); //térkép gyakorisága
int amplitúdó = map(analogRead(amplitúdóPin), 0, 1023, minTérfogat, maxVolume); //térkép amplitúdója
playWave(frekvencia, 0,1, amplitúdó); //hang lejátszása
//értékek nyomtatása a sorozatra
Serial.print('Frekvencia = ');
Serial.println(frekvencia);
Serial.print('Amplitúdó = ');
Serial.println(amplitúdó);

}

}
void generateSine() {
for (int i = 0; i < wavSize; ++i) {
sine[i] = ushort(float(100) * sin(2,0 * PI * (1,0 / wavSize) * i)); A //100-at arra használják, hogy ne legyenek kis számok
}
}
void playWave(lebegő frekvencia, lebegő másodperc, int amplitúdó) {
// A megadott hullámforma puffer lejátszása
// másodpercek száma.
// Először számítsa ki, hány mintát kell lejátszani a futtatáshoz
// a kívánt másodpercig.

előjel nélküli interációk = másodperc * sampleRate;

// Ezután számítsa ki azt a „sebességet”, amellyel a hullámon haladunk
// puffer a lejátszott hang frekvenciája alapján.

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

// Most görgessen végig az összes mintán, és játssza le őket, kiszámítva a
// pozíció a hullámpufferen belül minden időpillanatban.

for (előjel nélküli int i = 0; i < iterációk; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
rövid minta = amplitúdó * szinusz[poz];

// Másolja meg a mintát, hogy elküldje a bal és a jobb csatornára is.
// Úgy tűnik, a sorrend a jobb csatorna, bal csatorna, ha írni akarsz
// sztereó hang.

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

}
}

Az I2C és az I2S protokoll közötti különbség

Az I2C és az I2S protokoll közötti különbség a következőket tartalmazza.

2C

I2S

Az I2C protokoll az inter-IC busz protokollt jelenti Az I2S az Inter-IC Sound protokoll rövidítése .
Főleg a hasonló NYÁK-ra helyezett integrált áramkörök közötti jelek futtatására szolgál. Digitális audioeszközök csatlakoztatására szolgál.
Két vonalat használ több master és slave között, mint például az SDA és az SCL . Három sort használ: WS, SCK és SD.
Támogatja a több mestert és több szolgát. Egyetlen mestert támogat.
Ez a protokoll támogatja a CLK nyújtást. Ebben a protokollban nincs CLK nyújtás.
Az I2C további felső indító és leállító biteket tartalmaz. Az I2S nem tartalmaz start és stop biteket.

Előnyök

Az az I2S busz előnyei a következőket tartalmazzák.

  • Az I2S külön CLK és soros adatvonalakat használ. Tehát az aszinkron rendszerekhez képest nagyon egyszerű vevőkialakításokkal rendelkezik.
  • Ez egy egyetlen fő eszköz, így nincs probléma az adatok szinkronizálásával.
  • Az I2S o/p alapú mikrofonnak nincs szüksége analóg előlapra, de vezeték nélküli mikrofonon belül használható digitális adó segítségével. Ennek használatával teljesen digitális kapcsolatot alakíthat ki az adó és a jelátalakító között.

Hátrányok

Az Az I2S busz hátrányai a következőket tartalmazzák.

  • Az I2S nem javasolt kábelen keresztüli adatátvitelre.
  • Az I2S nem támogatott a magas szintű alkalmazásokban.
  • Ennek a protokollnak három jelvonal közötti szinkronizálási problémája van, ami nagy bitsebességgel és mintavételezési frekvenciával észlelhető. Tehát ez a probléma elsősorban az órajelvonalak és adatvonalak terjedési késleltetései miatt jelentkezik.
  • Az I2S nem tartalmaz hibaészlelési mechanizmust, így az adatdekódoláson belül hibákat okozhat.
  • Főleg IC közötti kommunikációra használják hasonló PCB-n.
  • Az I2S-hez nincsenek tipikus csatlakozók és összekötő kábelek, ezért a különböző tervezők különböző csatlakozókat használnak.

Alkalmazások

Az az I2S protokoll alkalmazásai a következőket tartalmazzák.

  • Az I2S digitális audioeszközök csatlakoztatására szolgál.
  • Ezt a protokollt széles körben használják audio adatok DSP-ről vagy mikrokontrollerről audiokodekre történő átvitelére hang lejátszása céljából.
  • Kezdetben az I2S interfészt használják a CD-lejátszók tervezésében. Most már megtalálható, ahol digitális audioadatokat küldenek az IC-k között.
  • Az I2S-t DSP-kben, audio ADC-kben, DAC-kban, mikrokontrollerekben, mintavételi frekvencia-átalakítókban stb. használják.
  • Az I2S-t kifejezetten integrált áramkörök közötti használatra tervezték digitális audio adatok továbbítására.
  • Ez a protokoll kulcsszerepet játszik a mikrokontroller és a perifériák összekapcsolásában, amikor az I2S a digitális audioeszközök közötti audioadat-átvitelre összpontosít.

Így ez az egész a I2S protokoll specifikáció amely magában foglalja a működést, a különbségeket és annak alkalmazásait. Az I²S egy 3 vezetékes szinkron soros protokoll digitális sztereó hang átvitelére szolgál két integrált áramkör között. Az I2S protokollelemző egy jeldekódoló, amely tartalmazza az összes DigiView logikai elemzőt. Ez a DigiView szoftver egyszerűen széles körű keresési, navigációs, exportálási, mérési, ábrázolási és nyomtatási lehetőségeket biztosít minden jeltípushoz. Itt egy kérdés, hogy mi az I3C protokoll?