Cyfrowy dźwięk trzeba sprawnie przesyłać między przetwornikami, procesorami sygnałowymi i wzmacniaczami. Właśnie do tego służy I2S — prosty interfejs szeregowy zaprojektowany specjalnie z myślą o układach audio.
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 (Serial Data) — szeregowa linia danych.
SCK — ciągły zegar transmisji szeregowej.
WS (Word Select) — linia wyboru słowa, wskazująca kanał lewy lub prawy.
I2S Protocol-Charakterystyka 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.
I2S Protocol-Serial Data (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 jednej krawędzi zegara, aby odbiornik mógł je stabilnie odczytać na drugiej. W typowej realizacji nowy bit pojawia się na krawędzi opadającej, a jest próbkowany na krawędzi rosnącej.
Między kolejnymi słowami nie występuje dodatkowa przerwa taktowana zegarem. MSB następnego słowa pojawia się bezpośrednio po LSB słowa poprzedniego.
Word Select (WS)
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.
Aby nadajnik i odbiornik mogły poprawnie rozpoznać granicę słowa, stan WS zmienia się jeden cykl zegara przed zakończeniem transmisji bieżącego słowa danych.
I2S Protocol-Zegar czasu
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.
Protokół I2S
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.
I2S Protocol-Szablon operacji wyrównania 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.
Szablon operacji wyrównania 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.
I2S Protocol-Phillips (standard)
Standard Philips I2S jest odmianą formatu wyrównanego do lewej, ale wprowadza opóźnienie o jeden cykl zegara. Dzięki temu po zmianie WS bit MSB danego kanału pojawia się dopiero na drugiej krawędzi BCLK/SCK.
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.

Przebiegi czasowe dla różnych formatów transmisji dźwięku.
I2S obsługuje 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 Protocol-I2S i Adunio
Ś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 Protocol-I2S do I2C
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.
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.
I2S Protocol-Krok pierwszy
Najpierw ustal sposób podłączenia sygnałów I2S. Ponieważ ESP32 pozwala przypisać interfejs do różnych wyprowadzeń, można skonfigurować go na pinach 15, 2 i 4, a następnie podłączyć przewód micro USB.
Krok 2
Następnie pobierz kod obsługujący I2S w ESP32. Program powinien skonfigurować rozdzielczość 16 bitów, częstotliwość próbkowania 44.1kHz oraz samo połączenie I2S. Można również dodać kilka wierszy odpowiedzialnych za wyświetlanie odebranych danych w monitorze portu szeregowego.
I2S Protocol-Krok trzeci
Wgraj kod i otwórz monitor portu szeregowego. Po gwizdnięciu w stronę mikrofonu lub delikatnym dotknięciu jego obudowy powinny pojawić się odczyty potwierdzające odbiór sygnału.
Krok 4
Przylutuj przewody do płytki wzmacniacza I2S oraz modułu karty Micro SD. Do obsługi I2S i SPI możesz wykorzystać odpowiednią bibliotekę zgodną z ESP8266.
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ę.
Zaokrąglenie
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.