Moduł ewaluacyjny Microchip BM83 EVB Bluetooth Audio (część 1)

Bluetooth audio to technologia pozwalająca przesłać strumieniowe dane audio kanałem radiowym. Odtwarzanie strumieniowe materiału muzycznego przez Internet kojarzy się z silną kompresją MP3, niezbyt dużymi przepływnościami i w konsekwencji słabą jakością. Takie stereotypowe traktowanie przesłaniania danych audio staje się jednak coraz mniej aktualne. Możliwości techniczne, ale też oczekiwania użytkowników związane z koniecznością wiernego odtwarzania muzyki powodują, że opracowuje się i wykorzystuje coraz bardziej zaawansowane metody kompresji i większe prędkości transmisji. Ten postęp jest również zauważalny przypadku łącza audio Bluetooth.

Jakość przesyłanego dźwięku poddanego kompresji zależy od możliwości specjalnego oprogramowania nazywanego kodekiem (połączenie słów kodowanie i dekodowanie). Aby dwa urządzenia połączone przez Bluetooth mogły wykorzystywać zalety konkretnego kodeka musi go wspierać zarówno nadajnik sygnału (najczęściej smartfon) jak i odbiornik sygnału (słuchawki, głośniki Bluetooth). Zdarza się, że ktoś kupuje słuchawki bezprzewodowe w założeniu wysokiej jakości z nowym wydajnym kodekiem, ale źródło sygnału, na przykład stary smartfon, tego kodeka nie używa. System Bluetooh jest tak zorganizowany, że w przypadku niezgodności kodeków przesyłanie dźwięku będzie działało, ale jakość sygnału nie będzie zgodna z oczekiwaniami. Trzeba mieć świadomość, że wszystkie obecnie stosowane kodeki są stratne i powodują większą lub mniejszą degradację sygnału audio. Nowe standardy są coraz doskonalsze i oferują odtwarzanie na wysokim poziomie wystarczającym dla większości odbiorców. Obecnie stosuje się kilka kodeków. Historycznie pierwszym jest SBC.

Kodek SBC

Kodek SBC (Subband Coding) – domyślny kodek, który musi być zaimplementowany w każdej realizacji połączenia Bluetooth Audio. Domyślna implementacja SBC powoduje, że przesyłanie danych audio jest zawsze możliwe – nawet wtedy, kiedy w nadajniku i odbiorniku inne kodeki nie są ze sobą kompatybilne. Przy projektowaniu SBC położono szczególny nacisk na silną kompresję danych, niskie zużycie energii i minimalne opóźnienie. Jakość sygnału audio nie była tu priorytetem i niestety można to usłyszeć, szczególnie w porównaniu z nowszymi rozwiązaniami. Jest to dość stary kodek i był dostosowany do możliwości technicznych dostępnych na początku lat 2000. Przesyłany sygnał audio ma rozdzielczość 16 bitów przy próbkowaniu 48 kHz. Maksymalna przepływność wynosi 328 kbps, co odpowiada przepływności 320 kbps sygnału MP3.

Kodek aptX

To chyba najbardziej znany i popularny kodek używany w transmisji danych audio przez Bluetooth. Opracowała go firma Qualcomm. W podstawowej wersji parametry sygnału audio i przepustowość są porównywalne z kodekiem SBC, ale kompresja danych jest lepsza. Według zapewnień miał to być kodek, który zapewni przesłanie dźwięku (prawie) o jakości CD. Oczywiście przy maksymalnej przepływności 384 kbps nie ma mowy o przesyłaniu surowych plików 16-bit/44,1 kHz. Być może możliwe byłoby przesłanie plików kompresowanych bezstratnie w formacie FLAC, natomiast aptX i tak wprowadza kompresję sygnału, a więc modyfikuje dane.

Qualcomm cały czas pracuje nad swoim kodekami i wypuszcza nowe, bardziej zaawansowane wersje. Jedną z nas najbardziej interesujących jest aptX HD potrafiący przesyłać pliki o rozdzielczości do 24 bitów z próbkowaniem 48 kHz w trybie LPCM. Przepływność zwiększono do 576 kbps. To już wyraźnie lepsze parametry od aptX i SBC. Tak przesyłane dane mogą reprezentować sygnał o naprawdę wysokiej jakości.

Kodek LDAC

Jeszcze dalej poszła firma Sony opracowując kodek LDAC. Nie jest on tak popularny jak aptX, ale ma bardzo intersujące parametry: obsługuje pliki 24-bit/96 kHz i zapewnia maksymalną przepływność 990 kbps. W praktyce LDAC pracuje w trzech trybach: 330 kbps, 660 kbps i 990kbps. Najniższa przepływność LDAC jest domyślnie włączana w telefonach z systemem Android. Włączenie wyższych prędkości wymaga ręcznej interwencji użytkownika. Ale nawet 330 kbps zapewnia wyższą jakość LDAC w porównaniu z SBC i aptX. Skonfigurowanie LDAC z najwyższą przepływnością pozwala mieć nadzieję na przesyłanie materiału audio o naprawdę wysokiej jakości, na przykład korzystając z najwyższego planu serwisu TIDAL.

Kodek AAC

AAC (Advanced Audio Coding) jest domyślnym kodekiem firmy Apple i korzystają z niego smartfony iPhone, a także iPady i MacBooki. Jest to jedyny (poza SBC) kodek umożliwiający współpracę z telefonami iPhone. AAC jest również implementowany w systemach Android od wersji 8. Dane w formacie do 16 bit / 96 kHz są przesyłane z maksymalną przepływnością 320 kbit/s.

Procesory montowane we flagowych smartfonach mają coraz większą wydajność pozwalającą implementować rozwiązania do tej pory nie dostępne dla urządzeń mobilnych. Prace idą w kilku kierunkach, nie tylko zwiększania jakości przez większe prędkości transferu i coraz lepsze kodowanie stratne. Stosuje się również adaptacyjne dostosowanie przepływności do parametrów sygnału. Pracuje się też nad minimalizacją opóźnień istotną w odtwarzaniu filmów oraz w grach komputerowych.

Praktyczną realizację połączenia, również w warunkach amatorskich, bardzo ułatwiają gotowe moduły Bluetooth. Zawierają one trudne do wykonania obwody wielkiej częstotliwości oraz mikrokontrolery obsługujące stos protokołów standardu Bluetooth. O ile moduły przeznaczone do przesyłania zwykłych danych są stosunkowo proste i tanie, to w przypadku modułów audio już tak nie jest. Moduły Bluetooth audio muszą dodatkowo zawierać zaawansowane procesory DSP z oprogramowaniem pozwalającym na obsługę kodeków. Od tego zależy jakiego kodeka czy kodeków będziemy mogli użyć.

W praktyce w zastosowaniach amatorskich, a także w małych lub średnich seriach w zastosowaniach profesjonalnych najlepszym rozwiązaniem jest wykorzystanie gotowych modułów. Jednym z nich jest moduł BM83 firmy Microchip.

Układ SoC IS2083BM- serce modułu BM83

Głównym elementem modułu BM83 jest układ SoC IS2083BM. Jego schemat blokowy zaprezentowano na rysunku 1.

Rysunek 1. Schemat blokowy układu IS2083BM

IS2083BM zawiera w swojej strukturze obwód tranceivera 2,4 GHz umożliwiającego zarówno odbiór danych w standardzie Bluetooth 5.0 (ADP2 sink) jak i nadawanie sygnału Bluetooth 5.0 (A2DP source). Odbiornik ma czułość -90 dBm. Nadajnik pracuje w dwóch programowanych trybach: Basic Data Rate z mocą +11 dBm i Enhanced Data Rate z mocą +9,5 dBm.

Wbudowany mikrokontroler z rdzeniem 8051 odpowiada za obsługę stosu Bluetooth (przepływ danych odbieranych i nadawanych przez transceiver), pracę układów peryferyjnych , a także jednostki DSP.

Moduł DSP jest przeznaczony do obsługi kodeków i zaawansowanego przetwarzania sygnału audio. Jego podstawowe właściwości pokazano poniżej:

  • Rdzeń DSP wykonujący instrukcje 16- i 32-bitowe z 32-bitowa precyzją. Operacje mnożenia wykonywane są w jednym cyklu,
  • Wbudowany zmodyfikowany dekoder kodowania podpasmowego (mSBC) dla mowy szerokopasmowej,
  • Wbudowane algorytmy High-Definition Clean Audio (HCA) do przetwarzania mowy zarówno wąskopasmowej, jak i szerokopasmowej,
  • Wbudowane algorytmy efektów dźwiękowych w celu poprawy strumieniowego przesyłania dźwięku,
  • Synchroniczny kanał danych audio (SCO),
  • Modulacje 64 Kbps A-Law, μ-Law Pulse Code Modulation (PCM) lub Continuous Variable Slope Delta (CVSD) do obsługi kanału SCO,
  • Wbudowany algorytm redukcji szumów (8/16 kHz)
  • Wbudowany algorytm redukcji echa akustycznego (8/16 kHz).

Procesor DSP umożliwia programową implementację kodeków audio SBC, AAC i LDAC (tylko wersja IS2083BM-2L2). Niestety w chwili obecnej brakuje kodeka aptX.

Peryferia sprzętowe

Warstwa sprzętowa toru audio zawiera wbudowany stereofoniczny 16-bitowy przetwornik ADC (SNR 90 dB), stereofoniczny 20-bitowy przetwornik DAC (SNR 95 dB) i cyfrowy dwukierunkowy port audio I2S. Sygnał wyjściowy może być próbkowany z częstotliwością do 96 kHz, a sygnał wejściowy z częstotliwością do 48 kHz. Dzięki obsłudze formatów audio o wysokiej rozdzielczości 14-bit / 96 kHz dostępna jest możliwość odtwarzania dźwięku o wysokiej jakości.

Oprócz toru audio w układ wbudowano moduły peryferyjne USB, UART, I2C Master, kanał PWM, a także 19 linii GPIO. Jest też możliwość aktualizacji firmware przez łącze radiowe (OTA – Over The Air). Wbudowany moduł zasilania akumulatorów litowych prądem do 350 mA ułatwia aplikację w urządzeniach zasilanych bateryjnie.

Stos Bluetooth

Firmware IS2083BM obsługuje stos protokołów Blutetooth 5.0 zawierający:

  • Profil zestawu głośnomówiącego (HFP) 1.7,
  • Profil zestawu słuchawkowego (HSP) 1.2,
  • Port szeregowy (SPP) 1.2,
  • Profil zaawansowanej dystrybucji audio (A2DP) 1.3,
  • Profil zdalnego sterowania audio/wideo (AVRCP) 1.6,
  • Dostęp do książki telefonicznej (PBAP) 1.2,
  • Bluetooth Classic (BR/EDR) i Bluetooth Low Energy,
  • Profile ogólne GATT oraz GAP,
  • Rozszerzenie długości danych BLE (DLE) i bezpieczne połączenie.

Układ ma także wbudowaną funkcję MSPK – Multi Speaker Solution pozwalającą wydzielić głośnik Master sterujący jednym lub większą liczbą głośników Slave. MPSK może pracować w trybie stereo lub w trybie Concert.

O autorze