Protokół I2S: działanie, różnice i jego zastosowania

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Systemy cyfrowe i wymagania dotyczące danych dźwiękowych w telefonach komórkowych, komputerach i Automatyka domowa produkty zmieniły się radykalnie na przestrzeni czasu. Sygnał audio z lub do procesorów ulega digitalizacji. Te dane w różnych systemach są przetwarzane przez wiele urządzeń, takich jak DSP , przetworniki cyfrowo-analogowe, przetworniki cyfrowo-analogowe, cyfrowe interfejsy we/wy itp. Aby urządzenia te mogły komunikować się między sobą danymi audio, wymagany jest standardowy protokół. Jednym z takich jest protokół I2S. Jest to interfejs magistrali szeregowej, zaprojektowany przez Philip Semiconductor w lutym 1986 roku dla cyfrowego interfejsu audio pomiędzy urządzeniami. W tym artykule omówiono przegląd I Protokół 2S jego praca z aplikacjami.


Co to jest protokół I2S?

Protokół używany do przesyłania cyfrowych danych audio z jednego urządzenia do drugiego jest znany jako protokół I2S lub Inter-IC Sound. Ten protokół przesyła dane audio PCM (modulowane kodem impulsowym) z jednego układu scalonego do drugiego w obrębie urządzenia elektronicznego. I2S odgrywa kluczową rolę w przesyłaniu plików audio, które są wstępnie nagrane z MCU do przetwornika cyfrowo-analogowego lub wzmacniacza. Protokół ten można również wykorzystać do digitalizacji dźwięku za pomocą mikrofonu. W protokołach I2S nie ma kompresji, więc nie można odtwarzać OGG lub MP3 ani innych formatów audio, które kondensują dźwięk, jednak można odtwarzać pliki WAV.



Cechy

The Funkcje protokołu I2S obejmują następujące elementy.

  • Każda próbka ma od 8 do 32 bitów danych.
  • Przerwania Tx i Rx FIFO.
  • Obsługuje DMA.
  • 16-bitowy, 32-bitowy, 48-bitowy lub 64-bitowy okres wyboru słowa.
  • Jednoczesne dwukierunkowe przesyłanie strumieniowe dźwięku.
  • Szerokość próbki 8-bitowej, 16-bitowej i 24-bitowej.
  • Ma różne częstotliwości próbkowania.
  • Szybkość transmisji danych wynosi do 96 kHz w 64-bitowym okresie wyboru słowa.
  • Przeplatane stereofoniczne FIFO lub niezależne kanały FIFO dla prawego i lewego kanału
  • Niezależne włączenie Tx i Rx.

Działający protokół komunikacyjny I2S

I2S protokół komunikacyjny to 3-przewodowy protokół, który po prostu obsługuje dane audio za pośrednictwem 3-liniowej magistrali szeregowej, która obejmuje SCK (ciągły zegar szeregowy), WS (wybór słów) i SD (dane szeregowe).



Połączenie 3-przewodowe I2S:

SCK

SCK lub zegar szeregowy to pierwsza linia protokołu I2S, znana również jako BCLK lub linia zegara bitowego, która służy do uzyskiwania danych w podobnym cyklu. Częstotliwość zegara szeregowego jest po prostu zdefiniowana za pomocą wzoru, takiego jak Częstotliwość = Częstotliwość próbkowania x bity dla każdego kanału x nie. kanałów.

WS

W protokole komunikacyjnym I2S, WS lub word select to linia znana również jako przewód FS (Frame Select), który oddziela prawy lub lewy kanał.

Jeśli WS = 0 to używany jest lewy kanał lub kanał-1.

Jeśli WS = 1, to używany jest prawy kanał lub kanał-2.

SD

Dane szeregowe lub SD to ostatni przewód, w którym ładunek jest przesyłany w 2 komplementarności. Tak więc bardzo ważne jest, że MSB jest najpierw przesyłany, ponieważ zarówno nadajnik, jak i odbiornik mogą zawierać różne długości słów. W ten sposób nadajnik lub odbiornik musi rozpoznać, ile bitów jest przesyłanych.

  • Jeżeli długość słowa odbiornika jest większa niż nadajnika, to słowo jest skracane (bity LSB są ustawione na zero).
  • Jeżeli długość słowa odbiornika jest mniejsza niż długość słowa nadajnika, to bity LSB są ignorowane.

The nadajnik może wysłać dane albo na krawędź natarcia lub krawędź spływu impulsu zegara . Można to skonfigurować w odpowiednim rejestry kontrolne . Ale odbiornik zatrzaskuje dane szeregowe, a WS tylko na przedniej krawędzi impulsu zegara . Nadajnik przesyła dane tylko po jednym impulsie zegarowym po zmianie WS. Odbiornik wykorzystuje sygnał WS do synchronizacji danych szeregowych.

Komponenty sieciowe I2S

Kiedy wiele komponentów I2S jest połączonych ze sobą, nazywa się to siecią I2S. Składnik tej sieci zawiera różne nazwy, a także różne funkcje. Poniższy diagram pokazuje więc 3 różne sieci. Tutaj płytka ESP NodeMCU jest używana jako nadajnik, a płytka rozdzielająca audio I2S jest używana jako odbiornik. Trzy przewody używane do połączenia nadajnika i odbiornika to SCK, WS i SD.

  Komponenty sieciowe I2S
Komponenty sieciowe I2S

Na pierwszym schemacie nadajnik (Tx) jest urządzeniem nadrzędnym, więc steruje liniami SCK (zegar szeregowy) i WS (wybór słowa).

Na drugim schemacie odbiornik jest mistrzem. Tak więc obie linie SCK i WS zaczynają się od odbiornika, a nadajnik się kończy.

Na trzecim schemacie zewnętrzny kontroler jest podłączony do węzłów w sieci, który działa jak urządzenie nadrzędne. Więc to urządzenie generuje SCK i WS.

W przede wszystkim sieciach I2S dostępne jest tylko jedno urządzenie nadrzędne i wiele innych komponentów, które przesyłają lub odbierają dane dźwiękowe.

W I2S każde urządzenie może być masterem, podając sygnał zegarowy.

Schemat czasowy I2S

Aby lepiej zrozumieć I2S i jego funkcjonalność, poniżej przedstawiono schemat taktowania protokołu komunikacyjnego I2S. Schemat czasowy protokołu I2S pokazano poniżej, który obejmuje trzy przewody SCK, WS i SD.

  Schemat czasowy protokołu I2S
Schemat czasowy protokołu I2S

Na powyższym schemacie najpierw zegar szeregowy ma częstotliwość = częstotliwość próbkowania * bity dla każdego kanału * nie. kanałów). Linia wyboru słowa to druga linia, która zmienia się pomiędzy „1” dla prawego kanału i „0” dla lewego kanału.

Trzecia linia to szeregowa linia danych, w której dane są przesyłane w każdym cyklu zegara na opadającej krawędzi oznaczonej kropkami od HIGH do LOW.

Dodatkowo możemy zauważyć, że linia WS zmienia jeden cykl CLK przed transmisją MSB, co daje odbiornikowi czas na zapisanie wcześniejszego słowa i wyczyszczenie rejestru wejściowego dla następnego słowa. MSB jest wysyłane, gdy SCK zmienia się po zmianach WS.

Za każdym razem, gdy dane są przesyłane między nadajnikiem a odbiornikiem, występuje opóźnienie propagacji, które byłoby

opóźnienie propagacji = (różnica czasu między zegarem zewnętrznym a zegarem wewnętrznym odbiornika)+(różnica czasu między zegarem wewnętrznym a momentem odbioru danych).

Aby zminimalizować opóźnienie propagacji i zsynchronizować transmisję danych między nadajnikiem a odbiornikiem, wymagane jest, aby nadajnik miał okres zegara równy

T > tr  – Założyć, że T jest okresem zegara nadajnika, a tr jest minimalnym okresem zegara nadajnika.

Pod powyższym warunkiem, jeśli weźmiemy pod uwagę na przykład a nadajnik z szybkością transmisji danych 2,5 MHz, wówczas:

tr = 360ns

zegar Wysokie tHC (minimum) >0,35 T.

zegar Niski tLC (minimum>> 0,35T.

Odbiornik jako slave z szybkością transmisji danych 2,5MHz wtedy:

zegar Wysoka tHC (minimum) < 0,35 T

zegar Niski tLC (minimum) < 0,35T.

czas konfiguracji tst (minimum) < 0,20T.

Protokół I2S Arduino

Głównym celem tego projektu jest stworzenie interfejsu I2S  theremin z wykorzystaniem biblioteki Arduino I2S. Wymagane komponenty do wykonania tego projektu to; Arduino MKR Zero, Deska do krojenia chleba , przewody połączeniowe, głośnik Adafruit MAX98357A, 3W, 4 omy i RobotGeek Slider.

Biblioteka Arduino I2S pozwala po prostu na przesyłanie i odbieranie cyfrowych danych audio przez magistralę I2S. Tak więc ten przykład ma na celu wyjaśnienie, jak wykorzystać tę bibliotekę do sterowania przetwornikiem cyfrowo-analogowym I2S do odtwarzania dźwięku obliczonego w projekcie Arduino.

Ten obwód można podłączyć jako; Zastosowany w tym przykładzie I2S DAC wymaga jedynie trzech przewodów oraz zasilania magistrali I2S. Połączenia dla I2S w Arduino MKRZero są następujące;

Dane szeregowe (SD) na pinie A6;

Zegar szeregowy (SCK) na pin2;

Ramka lub Word Select (FS) na pin3;

Pracujący

Zasadniczo theremin ma dwie kontrolki wysokości i głośności. Tak więc te dwa parametry są modyfikowane przez przesunięcie dwóch potencjometrów suwakowych, ale można je również dostosować, aby je odczytać. Oba potencjometry są połączone w formie dzielnika napięcia, więc przesuwając te potencjometry, uzyskasz wartości od 0 do 1023. Następnie wartości te są mapowane pomiędzy maksymalną i minimalną częstotliwością oraz najmniejszą i najwyższą głośnością.

  Schemat terminy I2S
Schemat terminy I2S

Dźwięk przesyłany przez magistralę I2S jest prostą falą sinusoidalną, której amplituda i częstotliwość są modyfikowane na podstawie odczytu z potencjometrów.

Kod

Poniżej podano kod do połączenia Theremina z Arduino MKRZero, potencjometrami 2-suwakowymi i przetwornikiem DAC I2S.

#zawiera

const int maxCzęstotliwość = 5000; //maksymalna generowana częstotliwość
const int minCzęstotliwość = 220; //minimalna generowana częstotliwość
const int maxVolume = 100; //maksymalna głośność generowanej częstotliwości
const int minVolume = 0; //min głośność generowanej częstotliwości
const int sampleRate = 44100; //próbka generowanej częstotliwości
const int rozmiar_zakresu = 256; //Rozmiar bufora
krótki sinus[rozmiar_wav]; //bufor, w którym przechowywane są wartości sinus
stała int częstotliwośćPin = A0; //pin podłączony do potencjometru, który określa częstotliwość sygnału
const int amplitudaPin = A1; //pin podłączony do potencjometru, który określa amplitudę sygnału
przycisk const int = 6; //pin podłączony do sterowania przyciskami, aby wyświetlić częstotliwość

pusta konfiguracja()
{

Serial.początek(9600); //skonfiguruj port szeregowy
// Zainicjuj nadajnik I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println('Nie udało się zainicjować I2S!');

natomiast (1);
}

generuje sinus(); // wypełnij bufor wartościami sinusowymi
pinMode(przycisk, INPUT_PULLUP); //wstaw pinezkę przycisku w pullup wejściowym

}
pusta pętla () {

jeśli (odczyt cyfrowy (przycisk) == LOW)

{

float częstotliwość = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //częstotliwość mapy
int amplituda = map(analogRead(amplitudaPin), 0, 1023, minVolume, maxVolume); //amplituda mapy
playWave(częstotliwość, 0,1, amplituda); //odtwórz dźwięk
//wydrukuj wartości na serial
Serial.print('Częstotliwość = ');
Serial.println(częstotliwość);
Serial.print('Amplituda = ');
Serial.println(amplituda);

}

}
void generuje sinus() {
for (int i = 0; i < wavSize; ++i) {
sin[i] = ushort(float(100) * sin(2.0 * PI * (1,0 / wavSize) * i)); //100 jest używany, aby nie mieć małych liczb
}
}
void playWave(częstotliwość zmiennoprzecinkowa, sekundy zmiennoprzecinkowe, amplituda int) {
// Odtwórz dostarczony bufor przebiegu dla określonego
// ilość sekund.
// Najpierw oblicz, ile próbek trzeba odtworzyć, aby uruchomić
// na żądaną ilość sekund.

unsigned int iteracje = sekundy * sampleRate;

// Następnie oblicz „prędkość”, z jaką poruszamy się po fali
// bufor na podstawie częstotliwości odtwarzanego tonu.

float delta = (częstotliwość * wavSize) / float(sampleRate);

// Teraz przejdź przez wszystkie próbki i odtwórz je, obliczając
// pozycja w buforze fal dla każdej chwili w czasie.

for (unsigned int i = 0; i < iteracje; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
krótka próbka = amplituda * sin[poz];

// Zduplikuj próbkę, aby została wysłana zarówno do lewego, jak i prawego kanału.
// Wygląda na to, że kolejność to prawy kanał, lewy kanał, jeśli chcesz pisać
// dźwięk stereo.

while (I2S.availableForWrite() < 2);
I2S.write(próbka);
I2S.write(próbka);

}
}

Różnica między protokołem I2C i I2S

Różnica między protokołem I2C i I2S obejmuje następujące elementy.

2C

I2S

The Protokół I2C oznacza protokół magistrali między IC I2S oznacza protokół Inter-IC Sound .
Służy głównie do prowadzenia sygnałów pomiędzy układami scalonymi umieszczonymi na podobnej płytce drukowanej. Służy do podłączania cyfrowych urządzeń audio.
Wykorzystuje dwie linie między kilkoma urządzeniami nadrzędnymi i podrzędnymi, takimi jak SDA i SCL . Wykorzystuje trzy linie WS, SCK i SD.
Obsługuje multi-master i multi-slave. Obsługuje jednego mistrza.
Ten protokół obsługuje rozciąganie CLK. Ten protokół nie obejmuje rozciągania CLK.
I2C zawiera dodatkowe bity startu i stopu. I2S nie zawiera bitów startu i stopu.

Zalety

The zalety magistrali I2S obejmują następujące elementy.

  • I2S wykorzystuje oddzielne linie danych CLK i szeregowe. Ma więc bardzo proste konstrukcje odbiorników w porównaniu z systemami asynchronicznymi.
  • Jest to jedno urządzenie nadrzędne, więc nie ma problemu z synchronizacją danych.
  • Mikrofon oparty na I2S o/p nie wymaga analogowego front-endu, ale jest wykorzystywany w mikrofonie bezprzewodowym za pomocą nadajnika cyfrowego. Korzystając z tego, możesz mieć całkowicie cyfrowe połączenie między nadajnikiem a przetwornikiem.

Niedogodności

The wady magistrali I2S obejmują następujące elementy.

  • I2S nie jest proponowany do przesyłania danych przez kable.
  • I2S nie jest obsługiwany w aplikacjach wysokiego poziomu.
  • Ten protokół ma problem z synchronizacją między trzema liniami sygnałowymi, co jest zauważalne przy wysokiej przepływności i częstotliwości próbkowania. Tak więc ten problem występuje głównie z powodu zmienności opóźnień propagacji między liniami zegarowymi i liniami danych.
  • I2S nie zawiera mechanizmu wykrywania błędów, więc może powodować błędy w dekodowaniu danych.
  • Jest używany głównie do komunikacji między układami scalonymi na podobnej płytce drukowanej.
  • Nie ma typowych złączy i kabli łączących dla I2S, więc różni projektanci używają różnych złączy.

Aplikacje

The zastosowania protokołu I2S obejmują następujące elementy.

  • I2S służy do podłączania cyfrowych urządzeń audio.
  • Protokół ten jest szeroko wykorzystywany do przesyłania danych audio z procesora DSP lub mikrokontrolera do kodeka audio w celu odtwarzania dźwięku.
  • Początkowo interfejs I2S jest wykorzystywany w projektach odtwarzaczy CD. Teraz można znaleźć, gdzie cyfrowe dane audio są przesyłane między układami scalonymi.
  • I2S jest stosowany w procesorach DSP, przetwornikach ADC audio, przetwornikach cyfrowo-analogowych, mikrokontrolerach, konwerterach częstotliwości próbkowania itp.
  • I2S jest specjalnie zaprojektowany do stosowania między układami scalonymi do przesyłania cyfrowych danych audio.
  • Protokół ten odgrywa kluczową rolę w łączeniu mikrokontrolera i jego urządzeń peryferyjnych, gdy I2S skupia się na transmisji danych audio między cyfrowymi urządzeniami audio.

Chodzi więc o przegląd Specyfikacja protokołu I2S który obejmuje działanie, różnice i jego zastosowania. I²S to 3-przewodowy synchroniczny protokół szeregowy służy do przesyłania cyfrowego dźwięku stereo między dwoma układami scalonymi. The Analizator protokołu I2S to dekoder sygnału, który zawiera wszystkie analizatory stanów logicznych DigiView. To oprogramowanie DigiView po prostu zapewnia szerokie możliwości wyszukiwania, nawigacji, eksportu, pomiarów, kreślenia i drukowania dla wszystkich rodzajów sygnałów. Oto pytanie do Ciebie, jaki jest protokół I3C?