Jak zastąpić wyświetlacz LCD monitorem HDMI w systemie embedded i.MX6ULL z Linkusem


Współcześni klienci przyzwyczajeni do kolorowych interfejsów smartfonów coraz częściej domagają się od producentów systemów embedded, aby nawet najprostsze urządzenia posiadały kolorowy interfejs graficzny. Tego typu rozwiązania najwygodniej jest realizować z wykorzystaniem tanich komputerów SoM z procesorami aplikacyjnymi działającymi pod kontrolą systemu Linux. W przypadku niewielkich wolumenów okazuje się, że ceny paneli LCD sprzedawanych jako oddzielne komponenty są znacznie wyższe niż fabryczny monitor z interfejsem HDMI. Istnieją układy SoC, które posiadają zintegrowany interfejs HDMI, ale są to najczęściej bardzo rozbudowane, wielordzeniowe, dosyć drogie układy.

Najpopularniejszym w systemach embedded interfejsem graficznym jest równoległy interfejs RGB, do którego można bezpośrednio dołączać popularne panele TFT-LCD. Dysponując nawet najprostszym układem SoC, istnieje możliwość konwersji sygnału RGB na sygnał HDMI za pomocą specjalnych układów – nadajników HDMI. W niniejszym artykule, na przykładzie komputera VisionSOM (procesor NXP i.MX6ULL) polskiej firmy SoMLabs, pokażemy w jaki sposób dołączyć monitor HDMI do interfejsu równoległego RGB-LCD.

Rys. 1. Przebiegi charakteryzujące pracę równoległego interfejsu graficznego używanego powszechnie w systemach embedded

Sprzęt

Interfejs RGB jest prostym interfejsem cyfrowym służącym do przesyłania obrazu pomiędzy układem graficznym a wyświetlaczem, który składa się z równoległych linii R,G oraz B (najczęściej 8-bitowych) przesyłających informację o kolorach używając linii CLK, DE oraz sygnałów synchronizacji poziomej HSYNC i pionowej VSYNC (rysunek 1). Typowy sposób dołączenia wyświetlacza LCD-TFT firmy Powertip (SL-TFT7-TP-800-480) do systemu embedded za pomocą interfejsu równoległego pokazano na fotografii 2.

Fot. 2. Przykładowy sposób dołączenia wyświetlacza LCD-TFT firmy Powertip (SL-TFT7-TP-800-480) do płyty bazowej komputera embedded

Informację o intensywności świecenia poszczególnych pikseli przesyłane są w takt linii CLK na zboczu narastającym oraz opadającym (DDR). Dodatkowo linie HSYNC oraz VSYNC informują o początku nowej linii oraz początku nowej ramki obrazu. Konwersję sygnału RGB na sygnał HDMI umożliwiają wyspecjalizowane nadajniki HDMI, których bardzo popularnym przedstawicielem jest układ ADV7513 produkowany przez Analog Devices (rysunek 3).

Rys. 3. Schemat blokowy układu ADV7513

Układ ten umożliwia nadawanie sygnału HDMI o maksymalnej rozdzielczości 1920×1080@60Hz (Full HD) oraz zapewnia wsparcie dla przesyłania dźwięku do monitora z częstotliwością próbkowania do 192 kHz. Sygnał video dostarczany jest za pomocą wspomnianego wcześniej interfejsu RGB, natomiast sygnał audio dostarczany jest za pomocą I2S lub SPDIF. Oprócz sygnałów A/V, układ posiada magistralę I2C służącą do konfiguracji parametrów układu oraz sygnał INT umożliwiający zgłoszenie przerwania np. po włożeniu wtyczki HDMI. Po stronie wyjściowej, oprócz różnicowego interfejsu HDMI, do dyspozycji mamy kontroler CEC oraz kontroler magistrali I2C umożliwiający odczytanie parametrów EDID monitora. Sposób dołączenia układu ADV7513 do modułu VisionSOM przedstawiono na rysunku 4 (rozwiązanie zastosowane na płytce bazowej VisionCB-IND-HDMI – fotografia 5). Linie RGB, HSYNC, VSYNC, CLK interfejsu równoległego są dołączone bezpośrednio do linii IO interfejsu kontrolera LCDIF, linia SPDIF dołączona jest do kontrolera SPDIF, linia INT dołączona jest do dowolnej linii GPIO – w tym przypadku UART1-CTS (GPIO1.18), natomiast linie sterujące I2C dołączono do kontrolera #I2C2.

Rys. 4. Schemat ilustrujący sposób dołączenia układu ADV7513 do 24-bitowego interfejsu graficznego

Fot. 5. Wygląd płytki bazowej VisionCB-IND-HDMI, na której był testowany driver opisany w artykule

O autorze