Unisystem » Uni’s ABC » Przegląd popularnych Interfajsów do transmisji obrazów – cz. 2

Przegląd popularnych Interfajsów do transmisji obrazów – cz. 2

W niniejszym cyklu artykułów prezentujemy najpopularniejsze interfejsy, które stosowane są do transmisji danych, a w tym wypadku – obrazów, pomiędzy urządzeniami je dostarczającymi, czyli procesorami/kontrolerami lub komputerami, a urządzeniami je prezentującymi, czyli wyświetlaczami lub monitorami.

Pisząc o „interfejsach” mamy na myśli zasady łączenia urządzeń służących do przesyłania danych. Bez nich nie byłoby możliwe prezentowanie jakichkolwiek treści na nośnikach informacji wizualnej, takich jak np. wyświetlacze LCD-TFT.

Interfejsy można podzielić na dwie grupy:

  • rozwiązań wewnętrznych – czyli takich, w których bezpośrednio łączymy elementy tego samego urządzenia (zwykle znajdujące się w tej samej obudowie), tj. kontroler i wyświetlacz; wśród nich m.in. interfejsy służące tylko do przesyłania obrazów (RGB, LVDS, eDP, MIPI DSI i Vx1) oraz służące do przesyłania różnych danych, w tym obrazów (RS232, I2C, SPI czy 8- i 16-bitowe rozwiązania równoległe);
  • rozwiązań zewnętrznych – czyli takich, w których łączymy dwa odrębne urządzenia, np. komputer i monitor; tego typu rozwiązania wymagają zastosowania kabli; wśród nich m.in.: HDMI, DVI, VGA i DP. 

Interfejsy można również dzielić ze względu na rodzaj transmisji danych, wyróżniając: interfejsy równoległe, w których 1-bitowe informacje przesyłane są wieloma liniami oraz interfejsy szeregowe, w których kolejne 1-bitowe informacje przesyłane są jedną linią. 

W niniejszym artykule skupimy się przede wszystkim na interfejsach RS232, I2i SPI. Dowiedz się więcej o interfejsach RGB, LVDS, eDP, MIPI DSI i Vx1 z artykułu Przegląd popularnych interfejsów do transmisji obrazów – cz. 1.

Interfejs RS232 to rozwiązanie, którego historia sięga lat 60 XX w. – został on opracowany przez EIA (Electronic Industries Association) celem łączenia dalekopisów i modemów. W kolejnych dekadach służył jako podstawowy interfejs do podpinania do komputerów różnych akcesoriów, takich jak np. drukarki czy skanery. Obecnie jest to niszowe rozwiązanie, które przede wszystkim znajduje zastosowanie w sprzętach specjalistycznych np. w przemyśle.

Myśląc o interfejsie RS232 popularnym skojarzeniem mogą być przewody z charakterystycznymi wtyczkami. Nas jednak w kontekście niniejszego artykułu interesują rozwiązania wbudowane na PCB, które służą do łączenia różnych komponentów w ramach jednego urządzenia.

Interfejs RS232 to rozwiązanie szeregowe służące do łączenia urządzeń DTE (ang. Data Terminal Equipment) oraz urządzeń DCE (ang. Data Communication Equipment), przy czym jedna linia może służyć tylko do łączenia dwóch urządzeń, tj. jednego DTE oraz jednego DCE. Komunikacja może odbywać się zarówno jednokierunkowo (simpleks, ang. simplex), jak i dwukierunkowo (pełny dupleks, ang. full duplex) w dwóch wariantach transmisji danych, tj. synchronicznym i asynchronicznym. W interfejsie RS232 wyróżnia się kilka rodzajów linii, w tym:  

  • linie danych (TxD – dane nadawane i RxD – dane obierane),
  • linie sterujące (m.in. DSR (ang. Data Set Ready) – gotowość DCE do współpracy z DTE czy DTR (ang. Data Terminal Ready) – gotowość DTE do współpracy z DCE (linie DSR i DTR są aktywne przez cały czas trwania połączenia));
  • linie masy (m.in. GND (Ground) czy PG (ang. Protective Ground)).

W zależności od wymagań aplikacji, możliwe jest korzystanie z podzbiorów linii o różnym poziomie skomplikowania. Jednym z wariantów są m.in. rozwiązania o trzech liniach, tj. TxD (do nadawania danych), RxD (do odbierania danych) oraz GND (masy).

Interfejs RS232 jest stosunkowo odporny na zakłócenia elektromagnetyczne, przy czym dane przesyłane są z prędkością sięgającą zwykle 9600 lub 115200 b/s (wyjątkiem są pewne warianty synchroniczne, w których możliwe jest osiąganie prędkości nawet 1 Mb/s). Warto jednocześnie pamiętać, że są to rozwiązania, w których występują znaczne wahania napięcia.

Model master/slave  

Przed omawianiem kolejnych dwóch interfejsów, tj. I2C oraz SPI, warto odnieść się do modelu „master/slave”, w którym występują urządzenia nadrzędne („master”) zarządzające urządzeniami podrzędnymi („slave”). W takich modelach urządzenie nadrzędne zawsze rozpoczyna łączność generując sygnał zegarowy, podczas którego wysyłane lub odbierane są dane.

Stosowane w tym modelu określenia „master” (z ang. „pan”) i „slave” (z ang. „niewolnik”) budzą liczne kontrowersje ze względu na skojarzenia z niewolnictwem. W 2004 r. Global Language Monitor (GLM) uznał je za najbardziej rażący przykład politycznej niepoprawności. Obecnie coraz częściej zastępowane są innymi terminami, np. „primary” i „replica”, stosowanymi m.in. we frameworkach Django i Drupal. Korzysta z nich również m.in. Microsoft.

I2C (Inter-Integrated Circuit)

Interfejs I2C, inaczej zapisywany jako IIC, to rozwiązanie służące do łączenia układów scalonych (ang. Inter-Integrated Circuit można tłumaczyć jako „pośrednik pomiędzy układami scalonymi”). Zostało opracowane na początku lat 80. XX w. przez firmę Phillips.

Interfejs I2C jest rozwiązaniem szeregowym, w którym komunikacja odbywa się dwukierunkowo za pomocą dwóch linii: SDA (ang. Serial Data Line – linia danych) oraz SCL (ang. Serial Clock Line – linia zegara). To technologia działająca w architekturze „master/slave” z możliwością wprowadzania dowolnej liczby urządzeń nadrzędnych („master”) zarządzającej urządzeniami podrzędnymi („slave”); jest więc to tzw. magistrala typu multi-master. Informacje przesyłane są w postaci jednobajtowych (czyli ośmiobitowych) „paczek”. Każda transmisja ma swój wyznaczony początek (sygnał START/bit startu) oraz koniec (sygnał STOP/bit stopu). Pomiędzy nimi, urządzenie nadrzędne przesyła 7-bitowy adres, a następnie bity read/write i odpowiednie dane do urządzenia docelowego. Po transmisji adresu, urządzenie podrzędne przekazuje jeszcze jeden bit, tj. ACK lub NACK, informujący o prawidłowym/nieprawidłowym przepływie danych (i zabezpieczający przed niekontrolowaną utratą danych). Taki sam bit wysyłany jest również po otrzymaniu danych od urządzenia nadrzędnego. Do sterowania interfejsem I2C służy pięć trybów synchronizacji o zróżnicowanych prędkościach przekazywania danych:

  • Standard Mode – prędkość do 100 kbit/s,
  • Fast Mode – prędkość do 400 kbit/s,
  • Fast Mode Plus – prędkość do 1 Mbit/s,
  • High Speed Mode – prędkość do 3.4 Mbit/s,
  • Ultra-Fast Mode – prędkość do 5 Mbit/s.

Niekiedy wyróżniany jest również tryb Turbo Mode o prędkości do 1.4 Mbit/s.

W interfejsie I2C każde urządzenie podrzędne, czyli pojedynczy układ scalony, otrzymuje swój unikalny adres; łącznie w ramach jednej magistrali może być obsługiwanych aż 128 adresów, czyli nawet 128 pojedynczych układów scalonych, przy czym należy pamiętać o ograniczonej prędkości transmisji danych sięgającej co najwyżej 5 Mbit/s. W niektórych aplikacjach, interfejs I2C może nie sprawdzić się ze względu na niską odporność na zakłócenia elektromagnetyczne przy wysokiej impedancji zespolonej.  

Interfejs I2C jest stosowany m.in. w wyświetlaczach OLED. Znajdziesz je w ofercie Unisystemu w wariantach graficznych i znakowych.

SPI (Serial Peripheral Interface)

Interfejs SPI jest jednym z najczęsciej używanych rozwiązań służących do komunikacji pomiędzy systemami mikroprocesorowymi a układami peryferyjnymi, takimi jak np. przetworniki ADC/DAC, pamięci EEPROM, karty MMC/SD itd. Jego historia sięga lat 80. XX w. – wówczas został wypuszczony na rynek przez Motorolę.

Interfejs SPI jest rozwiązaniem szeregowym, w którym komunikacja odbywa się dwukierunkowo; również bazuje na modelu „master/slave”, przy czym nie jest to magistrala multi-master – w tej technologii zwykle stosuje się tylko jedno urządzenie nadrzędne, do którego podłączonych jest kilka urządzeń podrzędnych. Do przesyłania informacji służą cztery linie:

  • SCLK (ang. Serial Clock) – sygnał zegarowy,
  • MOSI (ang. Master Output Slave Input) – linia przekazująca dane do urządzenia podrzędnego,
  • MISO (ang. Master Input Slave Output) – linia przekazująca dane do urządzenia nadrzędnego,
  • SS (ang. Slave Select) lub CS (ang. Chip Select) – linia służąca do wyboru urządzenia podrzędnego.

W interfejsie SPI urządzenie nadrzędne konfiguruje zegar, a następnie wskazuje urządzenie podrzędne, z którym będzie następować wymiana informacji; do aktywacji odpowiednego układu peryferyjnego służy linia SS lub CS. Dane przesyłane sa za pomocą linii MOSI (od urządzenia narzędnego do urządzenia podrzędnego) i MISO (od urządzenia podrzędnego do urządzenia nadrzędnego). Komunikacja opiera się na rejestrach przesuwnych składających się z przerzutników typu D, których jest łącznie osiem (numerowane od 0 do 7); w każdym z nich przechowywana jest jednobitowa informacja – w ciągu ośmiu cykli zegarowych transmitowany jest 1 bajt, czyli 8 bitów danych. Jednocześnie są to rozwiązania elastyczne – nie ma ograniczeń 8-bitowych, co pozwala na dowolność w zakresie m.in. rozmiaru czy treści wiadomości.

Interfejs SPI jest ceniony ze względu na wydajność – osiągana prędkość transmisji danych to nawet 37.5 Mb/s. Niestety, w tej technologii nie stosuje się żadnego protokołu sprawdzania błędów (jak np., bity ACK i NACK w I2C), co może skutkować potencjalną utratą danych. Ponadto, w niektórych aplikacjach, interfejs SPI może nie sprawdzić się ze względu na niską odporność na zakłócenia elektromagnetyczne przy wysokiej impedancji zespolonej (dodajmy, że – ze względu na częstotliwość pracy interfejsu SPI liczoną w setkach MHz – jest to jeszcze uciążliwsze niż w przypadku interfejsu I2C).  

Interfejs SPI jest głównie stosowany w rozwiązaniach nieprzekraczających 7 cali, zarówno w technologii LCD, jak i OLED, a także EPD. Znajdziesz je również w ofercie Unisystemu – sprawdź ich dostępność dla wyświetlaczy LCDgraficznych i znakowych OLED-ów oraz EPD.  

W kontekście omawianych interfejsów warto wspomnieć jeszcze o 8- i 16-bitowych rozwiązaniach równoległych, które wciąż stosowane są m.in. w wyświetlaczach OLED-owych. To interfejsy, w których dane przesyłane są jednocześnie w dwóch kierunkach. Mogą być to 4-, 8-, 16- lub 24-bitowe informacje, przy czym każdy bit wymaga przesyłania oddzielną linią (jednocześnie mogą występować również dodatkowe linie, np. dla sygnału zegarowego), co przekłada się na rosnącą liczbę przewodów niezbednych do połączenia z mikrokontrolerem.

Do wykorzystania tego typu interfejsów zachęca nieskomplikowana integracja w systemie, a także przepustowość danych (można to sobie wyobrazić porównując równoległy i szeregowy interfejs np. 8-bitowy, przyjmując, że oba działają z taką samą częstotliwością taktowania; w interfejsie równoległym dane przesyłane są jednocześnie, 8 bitów na raz, zaś w interfejsie szeregowym dane przesyłane są sekwencyjnie, po 1 bicie – możemy domyślić się, w którym interfejsie informacja zostanie przetransmitowana osiem razy szybciej ;-)).

Zastanawiasz się, jaki interfejs najlepiej sprawdzi się w twojej aplikacji? Skontaktuj się z nami – wspólnie na pewno znajdziemy optymalne rozwiązanie.

2021-05-25

Najnowsza Baza Wiedzy

Scroll to Top
window.dataLayer = window.dataLayer || [];function gtag() { dataLayer.push(arguments); }gtag("consent", "default", { ad_storage: "denied", ad_user_data: "denied", ad_personalization: "denied", analytics_storage: "denied", functionality_storage: "denied", personalization_storage: "denied", security_storage: "granted", wait_for_update: 2000, });gtag("set", "ads_data_redaction", true); gtag("set", "url_passthrough", true);