Szeregowy jest terminem uniwersalnym dla wszystkiego, co jest „Time Division Multiplexed”, aby użyć drogiego terminu. Oznacza to, że dane są przesyłane w czasie, najczęściej jeden bit po drugim. Wszystkie protokoły, które nazywasz, są protokołami szeregowymi.
UART, dla Universal Asynchronous Receiver Transmitter, jest jednym z najczęściej używanych protokołów szeregowych. Jest prawie tak stary jak ja i bardzo prosty. Większość kontrolerów ma sprzętowy UART na pokładzie. Wykorzystuje pojedynczą linię danych do transmisji i linię do odbioru danych. Najczęściej przesyłane są 8-bitowe dane w następujący sposób: 1 bit startowy (niski poziom), 8 bitów danych i 1 bit stopowy (wysoki poziom). Bit początkowy niskiego poziomu i bit stopowy wysokiego poziomu oznaczają, że zawsze istnieje przejście od wysokiego do niskiego poziomu w celu rozpoczęcia komunikacji. Tak opisuje UART. Brak poziomu napięcia, więc możesz go mieć przy 3,3 V lub 5 V, w zależności od tego, który używa twój mikrokontroler. Zwróć uwagę, że mikrokontrolery, które chcą komunikować się za pośrednictwem UART, muszą uzgodnić prędkość transmisji, szybkość transmisji, ponieważ mają tylko synchronizujące się bity początkowe. To się nazywa komunikacja asynchroniczna.
W przypadku komunikacji na duże odległości (nie musi to być setki metrów) 5 V UART nie jest bardzo niezawodny, dlatego jest zamieniany na wyższe napięcie, zwykle +12 V dla „0” i -12 V dla „0” 1 ”. Format danych pozostaje taki sam. Następnie masz RS-232 (który tak naprawdę powinieneś nazywać EIA-232, ale nikt tego nie robi).
Zależność czasowa jest jedną z głównych wad UART, a rozwiązaniem jest USART dla uniwersalnego nadajnika odbiornika synchronicznego / asynchronicznego. Może to zrobić UART, ale także protokół synchroniczny. W trybie synchronicznym przesyłane są nie tylko dane, ale także zegar. Z każdym bitem impuls zegarowy mówi odbiornikowi, że powinien zatrzasnąć ten bit. Protokoły synchroniczne albo wymagają większej przepustowości, jak w przypadku kodowania Manchester, lub dodatkowego przewodu do zegara, takiego jak SPI i I2C.
SPI (Serial Peripheral Interface) to kolejny bardzo prosty protokół szeregowy. Mistrz wysyła sygnał zegarowy i po każdym impulsie zegarowym przesuwa jeden bit do urządzenia podrzędnego, a drugi do wewnątrz, wychodząc z urządzenia podrzędnego. Nazwy sygnałów to SCK dla zegara, MOSI dla Master Out Slave In i MISO dla Master In Slave Out. Za pomocą sygnałów SS (Slave Select) master może sterować więcej niż jednym slave na magistrali. Istnieją dwa sposoby podłączenia wielu urządzeń podporządkowanych do jednego urządzenia nadrzędnego, jedno jest wspomniane powyżej, tj. Za pomocą wyboru podrzędnego, a drugi to łączenie łańcuchowe, wykorzystuje mniejszą liczbę pinów sprzętowych (wybrane linie), ale oprogramowanie komplikuje się.
I2C(Inter-Integrated Circuit, wymawiane „I squared C”) jest również protokołem synchronicznym i jest to pierwszy, który widzimy, który ma w sobie trochę „inteligencji”; inne głupio przesuwały się między sobą i to wszystko. I2C wykorzystuje tylko 2 przewody, jeden do zegara (SCL) i jeden do danych (SDA). Oznacza to, że master i slave wysyłają dane tym samym przewodem, ponownie kontrolowanym przez master, który tworzy sygnał zegara. I2C nie używa osobnych ustawień Slave do wyboru konkretnego urządzenia, ale ma adresowanie. Pierwszy bajt wysłany przez urządzenie nadrzędne ma 7-bitowy adres (dzięki czemu można użyć 127 urządzeń na magistrali) i bit do odczytu / zapisu wskazujący, czy następny bajt (y) również będzie pochodzić od urządzenia nadrzędnego, czy powinien pochodzić z niewolnik. Po każdym bajcie odbiorca musi wysłać „0”, aby potwierdzić odbiór bajtu, które master zatrzaskuje za pomocą 9 impulsu zegarowego. Jeśli master chce zapisać bajt, ten sam proces powtarza się: master umieszcza bit po bicie na szynie i za każdym razem podaje impuls zegarowy, aby zasygnalizować, że dane są gotowe do odczytu. Jeśli master chce odbierać dane, generuje tylko impulsy zegara. Slave musi zadbać o to, aby następny bit był gotowy po podaniu impulsu zegara. Protokół ten jest opatentowany przez NXP (wcześniej Phillips), aby zaoszczędzić na kosztach licencyjnych. Atmel używa słowa TWI (interfejs 2-przewodowy), który jest dokładnie taki sam jak I2C, więc każde urządzenie AVR nie będzie miało I2C, ale będzie miało TWI. Jeśli master chce odbierać dane, generuje tylko impulsy zegara. Slave musi zadbać o to, aby następny bit był gotowy po podaniu impulsu zegara. Protokół ten jest opatentowany przez NXP (wcześniej Phillips), aby zaoszczędzić na kosztach licencyjnych. Atmel używa słowa TWI (interfejs 2-przewodowy), który jest dokładnie taki sam jak I2C, więc każde urządzenie AVR nie będzie miało I2C, ale będzie miało TWI. Jeśli master chce odbierać dane, generuje tylko impulsy zegara. Slave musi zadbać o to, aby następny bit był gotowy po podaniu impulsu zegara. Protokół ten jest opatentowany przez NXP (wcześniej Phillips), aby zaoszczędzić na kosztach licencyjnych. Atmel używa słowa TWI (interfejs 2-przewodowy), który jest dokładnie taki sam jak I2C, więc każde urządzenie AVR nie będzie miało I2C, ale będzie miało TWI.
Dwa lub więcej sygnałów na tym samym przewodzie może powodować konflikty i miałbyś problem, jeśli jedno urządzenie wyśle „1”, a drugie „0”. Dlatego magistrala jest okablowana LUB: dwa rezystory podnoszą magistralę na wysoki poziom, a urządzenia wysyłają tylko niskie poziomy. Jeśli chcą wysłać wysoki poziom, po prostu zwalniają autobus.
TTL (Transistor Transistor Logic) nie jest protokołem. Jest to starsza technologia dla logiki cyfrowej, ale nazwa jest często używana w odniesieniu do napięcia zasilania 5 V, często niepoprawnie odnosząc się do tego, co należy nazwać UART.
O każdym z nich możesz napisać książkę i wygląda na to, że jestem na dobrej drodze. To jest bardzo krótki przegląd, daj nam znać, jeśli niektóre rzeczy wymagają wyjaśnienia.