- Rodzaje protokołów komunikacyjnych
- Tryby transmisji w komunikacji szeregowej
- Synchronizacja zegara
- Inne warunki związane z komunikacją szeregową
- Synchroniczne protokoły szeregowe
- Asynchroniczne protokoły szeregowe
- Wniosek
Zanim zaczniemy od protokołów komunikacji szeregowej, podzielmy terminologię na trzy części. Komunikacji jest dobrze znane terminologii, która obejmuje wymianę informacji między dwoma lub większą liczbą nośników. W systemach wbudowanych komunikacja polega na wymianie danych pomiędzy dwoma mikrokontrolerami w postaci bitów. Ta wymiana bitów danych w mikrokontrolerze odbywa się za pomocą pewnego zestawu zdefiniowanych reguł, znanych jako protokoły komunikacyjne. Teraz, jeśli dane są przesyłane szeregowo, tj. Jedna po drugiej, wówczas protokół komunikacyjny jest znany jako Serial Communication Protocol. Dokładniej, bity danych są przesyłane pojedynczo w sposób sekwencyjny przez magistralę danych lub kanał komunikacyjny w komunikacji szeregowej.
Rodzaje protokołów komunikacyjnych
W elektronice cyfrowej dostępne są różne rodzaje transmisji danych, takie jak komunikacja szeregowa i komunikacja równoległa. Podobnie protokoły są podzielone na dwa typy, takie jak protokół komunikacji szeregowej i protokoły komunikacji równoległej. Przykładami protokołów komunikacji równoległej są ISA, ATA, SCSI, PCI i IEEE-488. Podobnie istnieje kilka przykładów protokołów komunikacji szeregowej, takich jak CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire i SATA itp.
W tym artykule zostaną omówione różne typy protokołów komunikacji szeregowej. Komunikacja szeregowa to najpowszechniej stosowana metoda przesyłania informacji między urządzeniami peryferyjnymi przetwarzającymi dane. Każde urządzenie elektroniczne, czy jest to komputer osobisty (PC), czy telefon komórkowy, działa w komunikacji szeregowej. Protokół jest bezpieczną i niezawodną formą komunikacji posiadającą zestaw reguł adresowanych przez hosta źródłowego (nadawcę) i hosta docelowego (odbiorcę), podobnie jak w przypadku komunikacji równoległej.
Tryby transmisji w komunikacji szeregowej
Jak już wspomniano powyżej, w komunikacji szeregowej dane są przesyłane w postaci bitów, tj. Binarnych impulsów i dobrze wiadomo, że binarny jedynek reprezentuje logikę WYSOKI, a zero reprezentuje logikę NISKĄ. Istnieje kilka typów komunikacji szeregowej w zależności od trybu transmisji i transferu danych. Tryby transmisji są klasyfikowane jako Simplex, Half Duplex i Full Duplex.
Metoda Simplex:
W metodzie simplex albo nośnik, tj. Nadawca lub odbiorca, może być jednocześnie aktywny. Jeśli więc nadawca przesyła dane, odbiorca może je zaakceptować i odwrotnie. Tak więc metoda simplex jest techniką komunikacji jednokierunkowej. Dobrze znanymi przykładami metody simplex są telewizja i radio.
Metoda Half Duplex:
W metodzie półdupleksu zarówno nadawca, jak i odbiorca mogą być aktywni, ale nie w tym samym czasie. Zatem jeśli nadawca nadaje, odbiorca może zaakceptować, ale nie może wysłać i odwrotnie. Dobrze znanym przykładem półdupleksu jest internet, w którym użytkownik wysyła żądanie danych i pobiera je z serwera.
Metoda pełnego dupleksu:
W metodzie pełnego dupleksu zarówno odbiornik, jak i nadajnik mogą przesyłać do siebie dane w tym samym czasie. Dobrze znanym przykładem jest telefon komórkowy.
Poza tym dla poprawnej transmisji danych zegar odgrywa ważną rolę i jest jednym z podstawowych źródeł. Awaria zegara skutkuje nieoczekiwaną transmisją danych, a nawet czasami ich utratą. Tak więc synchronizacja zegara staje się bardzo ważna podczas korzystania z komunikacji szeregowej.
Synchronizacja zegara
Zegar jest inny dla urządzeń szeregowych i jest podzielony na dwa typy, a mianowicie. Synchroniczny interfejs szeregowy i asynchroniczny interfejs szeregowy.
Synchroniczny interfejs szeregowy:
Jest to połączenie typu punkt-punkt między urządzeniem nadrzędnym a podrzędnym. W tego typu interfejsie wszystkie urządzenia wykorzystują pojedynczą magistralę procesora do udostępniania danych i zegara. Transmisja danych staje się szybsza dzięki tej samej magistrali, która udostępnia zegar i dane. W tym interfejsie nie ma również niedopasowania szybkości transmisji. Po stronie nadajnika następuje przesunięcie danych do linii szeregowej, dostarczając zegar jako oddzielny sygnał, ponieważ nie ma bitów startu, stopu i parzystości są dodawane do danych. Po stronie odbiornika dane są wyodrębniane za pomocą zegara dostarczonego przez nadajnik i konwertuje dane szeregowe z powrotem do postaci równoległej. Dobrze znanymi przykładami są I2C i SPI.
Asynchroniczny interfejs szeregowy:
W asynchronicznym interfejsie szeregowym nie ma zewnętrznego sygnału zegarowego. Asynchroniczne interfejsy szeregowe można zobaczyć głównie w aplikacjach na duże odległości i doskonale nadają się do stabilnej komunikacji. W asynchronicznym interfejsie szeregowym brak zewnętrznego źródła zegara powoduje, że opiera się on na kilku parametrach, takich jak kontrola przepływu danych, kontrola błędów, kontrola szybkości transmisji, kontrola transmisji i kontrola odbioru. Po stronie nadajnika następuje przesunięcie danych równoległych do łącza szeregowego przy użyciu własnego zegara. Dodaje również bity startu, stopu i kontroli parzystości. Po stronie odbiornika, odbiornik wyodrębnia dane za pomocą własnego zegara i konwertuje dane szeregowe z powrotem do postaci równoległej po usunięciu bitów startu, stopu i parzystości. Dobrze znanymi przykładami są RS-232, RS-422 i RS-485.
Inne warunki związane z komunikacją szeregową
Oprócz synchronizacji zegara istnieją pewne rzeczy, o których należy pamiętać podczas szeregowego przesyłania danych, takie jak szybkość transmisji, wybór bitów danych (ramkowanie), synchronizacja i sprawdzanie błędów. Omówmy pokrótce te terminy.
Szybkość transmisji: Szybkość transmisji to szybkość, z jaką dane są przesyłane między nadajnikiem a odbiornikiem w postaci bitów na sekundę (bps). Najczęściej używaną szybkością transmisji jest 9600. Ale są też inne szybkości transmisji, takie jak 1200, 2400, 4800, 57600, 115200. Im większa szybkość transmisji będzie tłuszczyła, dane będą przesyłane naraz. Również w przypadku przesyłania danych szybkość transmisji musi być taka sama dla nadajnika i odbiornika.
Framing: Framing to liczba bitów danych, które mają być wysłane z nadajnika do odbiornika. Liczba bitów danych różni się w przypadku aplikacji. Większość aplikacji wykorzystuje 8 bitów jako standardowe bity danych, ale można je również wybrać jako 5, 6 lub 7 bitów.
Synchronizacja: Synchronizacja Bity są ważne, aby wybrać porcję danych. Informuje o początku i końcu bitów danych. Nadajnik ustawi bity startu i stopu w ramce danych, a odbiornik odpowiednio je zidentyfikuje i dokona dalszego przetwarzania.
Kontrola błędów: Kontrola błędów odgrywa ważną rolę podczas komunikacji szeregowej, ponieważ istnieje wiele czynników, które wpływają i zwiększają zakłócenia w komunikacji szeregowej. Aby pozbyć się tego błędu, używane są bity parzystości, w których parzystość sprawdza parzystość i nieparzystość. Więc jeśli ramka danych zawiera parzystą liczbę jedynek, to jest znana jako parzysta parzystość, a bit parzystości w rejestrze jest ustawiony na 1. Podobnie, jeśli ramka danych zawiera nieparzystą liczbę jedynek, to jest znana jako nieparzysta parzystość i usuwa nieparzysty bit parzystości w rejestrze.
Protokół jest jak zwykły język używany przez system do zrozumienia danych. Jak opisano powyżej, protokół komunikacji szeregowej jest podzielony na typy, tj. Synchroniczny i Asynchroniczny. Teraz oba zostaną szczegółowo omówione.
Synchroniczne protokoły szeregowe
Synchroniczny typu protokołów szeregowych, takich jak SPI, I2C, CAN i LIN są wykorzystywane w różnych projektach, ponieważ jest to jeden z najlepszych środków dla pokładowych urządzeń peryferyjnych. Są to również protokoły powszechnie używane w głównych aplikacjach.
Protokół SPI
Serial Peripheral Interface (SPI) jest interfejsem synchronicznym, który umożliwia połączenie kilku mikrokontrolerów SPI. W SPI wymagane są oddzielne przewody dla linii danych i zegara. Również zegar nie jest uwzględniany w strumieniu danych i musi być dostarczony jako oddzielny sygnał. SPI może być skonfigurowany jako nadrzędny lub podrzędny. Częścią transmisji danych są cztery podstawowe sygnały SPI (MISO, MOSI, SCK i SS), Vcc i Ground. Potrzebuje więc 6 przewodów do wysyłania i odbierania danych z urządzenia slave lub master. Teoretycznie SPI może mieć nieograniczoną liczbę niewolników. Transmisja danych jest konfigurowana w rejestrach SPI. SPI zapewnia prędkość do 10 Mb / s i jest idealny do szybkiej transmisji danych.
Większość mikrokontrolerów ma wbudowaną obsługę SPI i można do nich bezpośrednio podłączyć urządzenie obsługujące SPI:
- Komunikacja SPI z mikrokontrolerem PIC PIC16F877A
- Jak korzystać z komunikacji SPI w mikrokontrolerze STM32
- Jak korzystać z SPI w Arduino: Komunikacja między dwoma płytami Arduino
Komunikacja szeregowa I2C
Dwuliniowa komunikacja między układami scalonymi (I2C) między różnymi układami scalonymi lub modułami, gdzie dwie linie to SDA (szeregowa linia danych) i SCL (szeregowa linia zegarowa). Obie linie muszą być podłączone do dodatniego zasilania za pomocą rezystora podciągającego. I2C może zapewnić prędkość do 400 kb / si wykorzystuje 10-bitowy lub 7-bitowy system adresowania do kierowania na konkretne urządzenie na magistrali i2c, dzięki czemu może łączyć do 1024 urządzeń. Ma ograniczoną długość komunikacji i jest idealny do komunikacji na pokładzie. Sieci I2C są łatwe w konfiguracji, ponieważ wykorzystują tylko dwa przewody, a nowe urządzenia można po prostu podłączyć do dwóch wspólnych linii magistrali I2C. Podobnie jak SPI, mikrokontroler ma zwykle piny I2C do podłączenia dowolnego urządzenia I2C:
- Jak korzystać z komunikacji I2C w mikrokontrolerze STM32
- Komunikacja I2C z mikrokontrolerem PIC PIC16F877
- Jak korzystać z I2C w Arduino: Komunikacja między dwoma płytami Arduino
USB
USB (Universal Serial Bus) to powszechnie stosowany protokół z różnymi wersjami i prędkościami. Do jednego kontrolera hosta USB można podłączyć maksymalnie 127 urządzeń peryferyjnych. USB działa jako urządzenie typu „plug and play”. USB jest używane w prawie wszystkich urządzeniach, takich jak klawiatury, drukarki, urządzenia multimedialne, aparaty fotograficzne, skanery i myszy. Został zaprojektowany z myślą o łatwej instalacji, szybszym przetwarzaniu danych, mniejszym okablowaniu i wymianie podczas pracy. Zastąpił masywniejsze i wolniejsze porty szeregowe i równoległe. USB wykorzystuje sygnalizację różnicową w celu zmniejszenia zakłóceń i umożliwienia szybkiej transmisji na duże odległości.
Magistrala różnicowa jest zbudowana z dwóch przewodów, jeden reprezentuje przesyłane dane, a drugi jego uzupełnienie. Chodzi o to, że „średnie” napięcie na przewodach nie przenosi żadnych informacji, co powoduje mniejsze zakłócenia. W przypadku USB urządzenia mogą pobierać określoną ilość energii bez pytania gospodarza. USB wykorzystuje tylko dwa przewody do przesyłania danych i jest szybsze niż interfejs szeregowy i równoległy. Wersje USB obsługują różne prędkości, takie jak 1,5 Mb / s (USB v1.0), 480 Mb / s (USB 2.0), 5 Gb / s (USB v3.0). Długość pojedynczego kabla USB może sięgać nawet 5 metrów bez koncentratora i 40 metrów z koncentratorem.
MOGĄ
Controller Area Network (CAN) jest używana np. W motoryzacji, aby umożliwić komunikację między ECU (jednostkami sterującymi silnika) a czujnikami. Protokół CAN jest wytrzymały, tani i oparty na komunikatach i obejmuje wiele zastosowań - np. Samochody, ciężarówki, traktory, roboty przemysłowe. System magistrali CAN umożliwia centralną diagnostykę błędów i konfigurację we wszystkich ECU. Wiadomości CAN są nadawane priorytetowo za pośrednictwem identyfikatorów, dzięki czemu identyfikatory o najwyższym priorytecie nie są przerywane. Każdy ECU zawiera chip do odbierania wszystkich przesyłanych komunikatów, decydowania o ich istotności i odpowiednich działań - umożliwia to łatwą modyfikację i dołączanie dodatkowych węzłów (np. Rejestratorów danych magistrali CAN). Zastosowania obejmują uruchamianie / zatrzymywanie pojazdów, systemy unikania kolizji. Systemy magistrali CAN mogą zapewnić prędkość do 1 Mb / s.
Microwire
MICROWIRE to 3-przewodowy szeregowy interfejs 3 Mb / s, będący zasadniczo podzbiorem interfejsu SPI. Microwire to szeregowy port we / wy mikrokontrolerów, więc magistrala Microwire znajduje się również w pamięci EEPROM i innych układach peryferyjnych. Trzy linie to SI (wejście szeregowe), SO (wyjście szeregowe) i SK (zegar szeregowy). Linia wejścia szeregowego (SI) do mikrokontrolera, SO to linia wyjścia szeregowego, a SK to linia zegara szeregowego. Dane są przesuwane na opadającej krawędzi SK i są wyceniane na rosnącej krawędzi. SI jest przesunięta na rosnącej krawędzi SK. Dodatkowe rozszerzenie magistrali MICROWIRE nazywa się MICROWIRE / Plus. Wydaje się, że główna różnica między tymi dwoma szynami polega na tym, że architektura MICROWIRE / Plus w mikrokontrolerze jest bardziej złożona. Obsługuje prędkości do 3 Mb / s.
Asynchroniczne protokoły szeregowe
Asynchroniczny typ protokołów szeregowych jest bardzo istotny, jeśli chodzi o niezawodne przesyłanie danych na większe odległości. Komunikacja asynchroniczna nie wymaga zegara taktowania, który jest wspólny dla obu urządzeń. Każde urządzenie niezależnie nasłuchuje i wysyła cyfrowe impulsy, które reprezentują bity danych z uzgodnioną częstotliwością. Asynchroniczna komunikacja szeregowa jest czasami określana jako szeregowa logika tranzystorowo-tranzystorowa (TTL), gdzie wysoki poziom napięcia to logika 1, a niskie napięcie odpowiada logice 0. Prawie każdy mikrokontroler dostępny obecnie na rynku ma co najmniej jeden uniwersalny odbiornik asynchroniczny. Nadajnik (UART) do komunikacji szeregowej. Przykładami są RS232, RS422, RS485 itp.
RS232
RS232 (zalecany standard 232) jest bardzo popularnym protokołem używanym do łączenia różnych urządzeń peryferyjnych, takich jak monitory, CNC itp. RS232 jest dostarczany ze złączami męskimi i żeńskimi. RS232 to topologia punkt-punkt z maksymalnie jednym podłączonym urządzeniem i obejmuje zasięg do 15 metrów przy 9600 bps. Informacje o interfejsie RS-232 są przesyłane cyfrowo przez logiczne 0 i 1. Logiczne „1” (ZNAK) odpowiada napięciu w zakresie od -3 do -15 V. Logiczne „0” (SPACJA) odpowiada napięcie w zakresie od +3 do +15 V. Występuje w złączu DB9, które posiada 9 pinów takich jak TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 jest podobny do RS232, który umożliwia jednoczesne wysyłanie i odbieranie wiadomości na oddzielnych liniach, ale wykorzystuje do tego sygnał różnicowy. W sieci RS-422 może być tylko jedno urządzenie nadawcze i do 10 odbiorników. Szybkość przesyłania danych w RS-422 zależy od odległości i może wynosić od 10 kb / s (1200 metrów) do 10 Mb / s (10 metrów). Linia RS-422 to 4 przewody do transmisji danych (2 skręcone przewody do transmisji i 2 skręcone przewody do odbioru) i jeden wspólny przewód masowy GND. Napięcie na liniach danych może mieścić się w zakresie od -6 V do +6 V. Logiczna różnica między A i B jest większa niż +0,2 V. Logiczna 1 odpowiada różnicy między A i B mniejszej niż -0,2 V. Standard RS-422 nie definiuje konkretnego typu złącza, zwykle może to być listwa zaciskowa lub złącze DB9.
RS485
Ponieważ RS485 wykorzystuje topologię wielopunktową, jest najczęściej używany w przemyśle i jest preferowanym protokołem w branży. RS422 może łączyć 32 sterowniki liniowe i 32 odbiorniki w konfiguracjach różnicowych, ale za pomocą dodatkowych repeaterów i wzmacniaczy sygnału do 256 urządzeń. RS-485 nie definiuje określonego typu złącza, ale często jest to listwa zaciskowa lub złącze DB9. Szybkość działania zależy również od długości linii i może osiągnąć 10 Mbit / s na 10 metrów. Napięcie na liniach mieści się w zakresie od -7 V do +12 V. Istnieją dwa typy RS-485, takie jak RS-485 w trybie półdupleksu z 2 stykami i RS-485 w trybie pełnego dupleksu z 4 stykami. Aby dowiedzieć się więcej o używaniu RS485 z innymi mikrokontrolerami, sprawdź linki:
- Komunikacja szeregowa RS-485 MODBUS z wykorzystaniem Arduino UNO jako slave
- Komunikacja szeregowa RS-485 pomiędzy Raspberry Pi i Arduino Uno
- Komunikacja szeregowa RS485 między Arduino Uno i Arduino Nano
- Komunikacja szeregowa między STM32F103C8 a Arduino UNO za pomocą RS-485
Wniosek
Komunikacja szeregowa jest jednym z powszechnie stosowanych systemów interfejsów komunikacyjnych w elektronice i systemach wbudowanych. Szybkości transmisji danych mogą być różne dla różnych aplikacji. Protokoły komunikacji szeregowej mogą odgrywać decydującą rolę w tego rodzaju zastosowaniach. Dlatego wybór odpowiedniego protokołu szeregowego staje się bardzo ważny.