I2S to interfejs szeregowy do przesyłania cyfrowych próbek dźwięku między układami audio: wykorzystuje zegar bitowy BCLK, sygnał wyboru kanału WS i linię danych SD oraz wymaga wspólnej masy nadajnika i odbiornika. W standardzie Philips I2S kanały lewy i prawy są przesyłane naprzemiennie, a najbardziej znaczący bit każdego słowa pojawia się jeden okres BCLK po zmianie WS.

Nazwa I2S bywa mylona z I2C, ale są to dwa różne standardy o odmiennych zastosowaniach. I2C służy przede wszystkim do sterowania układami i wymiany niewielkich porcji danych, natomiast I2S przesyła ciągły strumień cyfrowych próbek dźwięku.

W dalszej części wyjaśniamy sposób działania magistrali I2S, dostępne formaty transmisji oraz jej wykorzystanie z popularnymi platformami. Na końcu przedstawiamy także podstawowe etapy budowy cyfrowego odtwarzacza z ESP32.

Co to jest interfejs I2S?

Protokół Inter-IC Sound (I2S) opracowała w latach 80. firma Philips Semiconductors, znana dziś jako NXP. Standard powstał cztery lata po bardziej rozpowszechnionej magistrali I2C i miał ujednolicić komunikację pomiędzy cyfrowymi układami audio.

I2S przenosi wyłącznie dane dźwiękowe. Sygnały sterujące, konfiguracja urządzeń i pozostałe informacje są przesyłane osobnymi interfejsami. Typowe połączenie I2S wykorzystuje trzy linie:

SD — szeregowa linia danych.

SCK/BCLK — zegar bitowy transmisji szeregowej.

WS/LRCLK — linia wyboru słowa, wskazująca kanał lewy lub prawy.

Charakterystyka interfejsu I2S

Interfejs I2S może pracować w konfiguracji z nadajnikiem, odbiornikiem i kontrolerem. Sposób połączenia zależy od tego, który element systemu generuje sygnały taktujące.

Linia SD przenosi próbki audio, WS identyfikuje aktualnie przesyłany kanał, a SCK dostarcza zegar szeregowy. Sygnały WS i SCK może generować nadajnik, odbiornik albo osobny kontroler. Element wytwarzający oba sygnały pełni w danym połączeniu funkcję urządzenia nadrzędnego.

Rozdzielenie danych, wyboru kanału i zegara pozwala sprawnie przesyłać dźwięk między różnymi układami scalonymi. Każda z trzech linii ma jednak inną rolę i własne wymagania czasowe.

Dane szeregowe (SD)

Dane na linii SD są przesyłane od najbardziej znaczącego bitu (MSB). Standard nie narzuca jednej długości słowa wspólnej dla wszystkich urządzeń. Nadajnik wysyła słowo o obsługiwanej długości, a odbiornik wykorzystuje potrzebną liczbę bitów.

Nadajnik zmienia dane na zboczu opadającym BCLK, a odbiornik próbkuje je na zboczu narastającym. Dzięki temu odczyt przypada między zmianami danych.

Położenie MSB wyznacza sygnał WS z uwzględnieniem jednobitowego opóźnienia I2S. Nie należy zakładać, że MSB kolejnego kanału zawsze następuje bezpośrednio po ostatnim użytecznym bicie próbki: trzeba uwzględnić pełną szerokość słowa przyjętą w konfiguracji transmisji.

Wybór kanału (WS/LRCLK)

WS jest sygnałem wyboru kanału. Stan niski oznacza, że przesyłane słowo należy do lewego kanału audio, a stan wysoki wskazuje kanał prawy.

Według specyfikacji Philips I2S zmiana WS wyprzedza MSB następnego słowa o jeden okres BCLK. Pełna ramka obejmuje słowo lewego i słowo prawego kanału, czyli jeden okres WS; częstotliwość WS jest równa częstotliwości próbkowania fs.

Zegar bitowy (SCK/BCLK)

Linia zegarowa I2S pracuje w sposób ciągły i synchronizuje przesyłanie kolejnych bitów. Standard nie określa jednej maksymalnej szybkości transmisji; dopuszczalna częstotliwość zależy od możliwości współpracujących układów. Zegar generuje urządzenie pełniące funkcję nadrzędną, ewentualnie zewnętrzny kontroler.

Formaty transmisji cyfrowego dźwięku

W zależności od wzajemnego położenia sygnałów SD, WS i SCK spotyka się trzy podstawowe formaty transmisji: wyrównanie do prawej, wyrównanie do lewej oraz standardowy format Philips I2S.

Wyrównanie do prawej

Format wyrównany do prawej jest znany również jako format japoński lub Sony. LSB lewego kanału pokrywa się z krawędzią SCK/BCLK poprzedzającą zmianę WS, natomiast LSB prawego kanału przypada na ostatnią krawędź SCK/BCLK przed kolejną zmianą WS.

Wadą wyrównania do prawej jest konieczność wcześniejszego uzgodnienia długości słowa danych przez odbiornik.

Wyrównanie do lewej

W formacie wyrównanym do lewej nie występuje jednobitowe opóźnienie względem BCLK. Po każdej zmianie WS bit MSB danego kanału jest dostępny już na pierwszej aktywnej krawędzi BCLK/SCK.

W przeciwieństwie do wyrównania do prawej odbiornik nie musi znać długości słowa przed rozpoczęciem transmisji.

Standard Philips I2S

Standard Philips I2S przesyła dane od MSB, ale w odróżnieniu od formatu wyrównanego do lewej wprowadza opóźnienie o jeden okres BCLK względem zmiany WS. Ustawienie nadajnika na I2S, a odbiornika na wyrównanie do lewej powoduje błędne przypisanie bitów do słowa.

Uwaga: urządzenia muszą pracować w tym samym formacie. Standardowy I2S oraz formaty wyrównane do lewej i do prawej różnią się położeniem bitów względem WS i nie są bezpośrednio zamienne.

I2S Protocol 1

Przebiegi czasowe dla różnych formatów transmisji dźwięku.

Jak obliczyć częstotliwości BCLK i MCLK?

Dla transmisji stereofonicznej obowiązuje wzór BCLK = fs · liczba bitów na słowo · 2. Do obliczeń przyjmij szerokość słowa w transmisji, a nie samą liczbę użytecznych bitów próbki. Jeśli konfiguracja przewiduje słowo 32-bitowe, zegar trzeba obliczyć dla 32 bitów, nawet gdy próbka wykorzystuje ich mniej. Oba urządzenia muszą mieć zgodne ustawienia formatu i taktowania.

fs (częstotliwość WS)Bity na słowoKanałyBCLK (obliczone)
44,1 kHz1621,4112 MHz
44,1 kHz3222,8224 MHz
48 kHz1621,536 MHz
48 kHz3223,072 MHz
96 kHz3226,144 MHz

Przykład obliczeniowy: dla fs = 48 kHz i słów 32-bitowych BCLK = 48 000 Hz · 32 · 2 = 3 072 000 Hz = 3,072 MHz. Przy tej samej częstotliwości próbkowania słowa 16-bitowe wymagają BCLK = 1,536 MHz. Sama informacja o fs nie wystarcza więc do ustawienia zegara bitowego.

Niektóre przetworniki lub kodeki wymagają dodatkowej linii MCLK, czyli zegara nadrzędnego. Typowo / wg noty katalogowej układu stosuje się MCLK = 256 · fs lub 384 · fs. Dokładne wymagania zależą od producenta i wersji układu — sprawdź kartę katalogową przed wyborem mnożnika. Poniższe wyniki obliczono wyłącznie dla wariantu 256 · fs; nie są one uniwersalnym wymaganiem I2S.

fsWzórMCLK (obliczone)
44,1 kHz256 · 44,1 kHz11,2896 MHz
48 kHz256 · 48 kHz12,288 MHz
96 kHz256 · 96 kHz24,576 MHz

Dla fs = 48 kHz otrzymujemy MCLK = 256 · 48 000 Hz = 12 288 000 Hz = 12,288 MHz. MCLK i BCLK pełnią różne funkcje: pierwszy taktuje przetwornik lub kodek, drugi wyznacza rytm przesyłania bitów. Sprawdź, czy wybrany układ wymaga doprowadzenia obu zegarów.

Kontrola ramki na oscyloskopie lub analizatorze

Poniżej opisano oczekiwane sygnały i metodę sprawdzenia, a nie wynik naszego pomiaru. Obserwuj jednocześnie BCLK, WS i SD względem wspólnej masy. Wyzwolenie od zbocza WS pozwala porównać granicę kanału z położeniem MSB. W analizatorze ustaw dekodowanie Philips I2S oraz szerokość słowa zgodną z konfiguracją urządzeń.

Element kontroliOczekiwany obraz w standardzie Philips I2S
WS/LRCLKStan niski wybiera kanał lewy, wysoki — prawy; okres obejmuje oba słowa.
MSB względem WSMSB pojawia się po jednym okresie BCLK od zmiany WS; brak tego opóźnienia odpowiada wyrównaniu do lewej.
SD względem BCLKDane zmieniają się na zboczu opadającym i są próbkowane na narastającym.

Jeżeli zegary mają oczekiwane częstotliwości, a próbki są dekodowane błędnie, sprawdź opóźnienie MSB, szerokość słowa i przypisanie kanałów. Zgodna częstotliwość BCLK nie potwierdza zgodności formatu: przesunięcie o jeden bit zmienia interpretację próbki.

Wspólna masa i prowadzenie I2S na PCB

Prowadź BCLK, WS i SD razem, możliwie krótko, nad ciągłą płaszczyzną masy. Nadajnik i odbiornik muszą dzielić odniesienie potencjału. Stosuj wspólną masę części audio i cyfrowej zgodnie z zaleceniami producenta układu; podział masy nie powinien przerywać drogi powrotnej sygnałów. Szerszy kontekst opisuje artykuł o prowadzeniu ścieżek i kontrolowanej impedancji PCB.

Oddziel cyfrowe linie zegarowe od analogowych wejść audio. Nieprawidłowa masa i sprzężenia od zegara mogą powodować słyszalny szum lub zakłócenia, również przy poprawnej konfiguracji ramki. Przy dłuższych ścieżkach rozważ rezystor szeregowy umieszczony przy nadajniku; dobór jego wartości oprzyj na zaleceniach producenta i ocenie przebiegu sygnału.

I2S w Arduino i Raspberry Pi

Interfejs I2S można wykorzystać zarówno z Arduino, jak i Raspberry Pi do budowy cyfrowych odtwarzaczy, rejestratorów, interfejsów mikrofonowych oraz innych projektów audio.

I2S w Arduino

Środowisko Arduino udostępnia bibliotekę I2S dla płytek opartych na mikrokontrolerze SAMD21. Magistrala umożliwia przesyłanie próbek dźwięku między urządzeniami cyfrowymi przy stabilnym taktowaniu.

Za pomocą I2S można zbudować między innymi działający w czasie rzeczywistym odtwarzacz audio lub instrument MIDI. Przed rozpoczęciem projektu należy sprawdzić dokumentację używanej płytki i zgodność jej biblioteki I2S.

Interfejs I2S Raspberry Pi

Raspberry Pi również udostępnia interfejs I2S. Można do niego podłączyć na przykład płytkę rozszerzającą z czterema mikrofonami i w ten sposób zbudować urządzenie do rejestracji oraz przetwarzania głosu.

Taka konfiguracja nadaje się także do bardziej rozbudowanych projektów głosowych korzystających z usług, takich jak Asystent Google czy Amazon Alexa.

I2S a I2C — różne zastosowania

Mimo podobnych nazw I2S i I2C służą do innych zadań. I2C nie jest nastawiony na ciągłą transmisję danych z dużą szybkością, za to umożliwia podłączenie wielu adresowanych układów do wspólnej magistrali. Przy wyborze interfejsu sterującego pomocne jest porównanie I2C i SPI.

Obsługa wielu urządzeń, adresowanie i potwierdzanie transmisji zwiększają elastyczność I2C, ale także komplikują komunikację.

I2S ma prostszą strukturę dostosowaną do jednego rodzaju danych — cyfrowego dźwięku. W transmisji stereofonicznej w czasie rzeczywistym liczą się stała przepływność oraz precyzyjne taktowanie, dlatego ten interfejs lepiej odpowiada wymaganiom układów audio.

Budowa cyfrowego odtwarzacza muzyki z I2S

Poniżej przedstawiamy podstawowe etapy budowy cyfrowego odtwarzacza muzycznego z ESP32 i interfejsem I2S.

Krok 1: połączenie sygnałów

Najpierw ustal sposób podłączenia BCLK, WS i SD oraz wspólnej masy. Wyprowadzenia dobierz według dokumentacji konkretnej płytki ESP32 i modułu audio. Sprawdź także, który układ generuje zegary i czy przetwornik wymaga MCLK.

Krok 2: konfiguracja transmisji

Przygotuj program obsługujący I2S w ESP32. Przykładowa konfiguracja to słowa 16-bitowe i częstotliwość próbkowania 44,1 kHz, o ile obsługuje ją wybrany moduł. Ustaw ten sam format transmisji po obu stronach połączenia.

Krok 3: sprawdzenie zegarów i ramki

Po wgraniu programu sprawdź BCLK, WS i położenie MSB zgodnie z opisaną wcześniej metodą. Dla przykładowej transmisji stereo 44,1 kHz ze słowami 16-bitowymi obliczona częstotliwość BCLK wynosi 1,4112 MHz. Jest to wartość oczekiwana z obliczeń, a nie wynik pomiaru urządzenia.

Krok 4: uruchomienie odtwarzania

Podłącz płytkę wzmacniacza I2S oraz moduł karty microSD zgodnie z ich dokumentacją. Do obsługi I2S i SPI wybierz biblioteki zgodne z używaną płytką ESP32.

Po wgraniu programu podłącz głośnik i włóż kartę Micro SD z plikiem audio. Jeśli konfiguracja jest poprawna, odtwarzacz powinien rozpocząć pracę.

Najważniejsze zasady korzystania z I2S

I2S przesyła cyfrowe dane między przetwornikami C/A i A/C, procesorami DSP, filtrami oraz innymi układami stosowanymi w torach audio. Interfejs został zaprojektowany dla dźwięku stereofonicznego, dlatego obsługuje dwa kanały.

Pod względem organizacji sygnałów I2S bardziej przypomina SPI niż I2C. Typowe połączenie jednokierunkowe obejmuje:

jeden sygnał zegarowy,

jeden sygnał danych,

jeden sygnał synchronizacji na poziomie słowa.

Jeśli potrzebujesz pomocy przy projektowaniu urządzenia audio z I2S, skontaktuj się z nami.