Czy kiedykolwiek zdarzyło Ci się użyć terminu UART tylko po to, by zostać poprawionym przez innego inżyniera, że nie jest to UART, ale USART? W pewnych przypadkach oba te terminy są zamienne, ale w wielu innych używanie ich wymiennie jest niepoprawne. Przyjrzyjmy się, czym dokładnie są USART i UART, a także jakie są pomiędzy nimi główne różnice.
Większość inżynierów systemów wbudowanych zna interfejs UART: uniwersalny asynchroniczny odbiornik/nadajnik. Jest to urządzenie peryferyjne mikrokontrolera, które konwertuje przychodzące i wychodzące bajty danych na strumień szeregowy. Bit początkowy rozpoczyna szeregowy strumień, a bit lub dwa stopu kończy słowo danych (ramkę). UART ma również możliwość dodania bitu parzystości do ramki, aby pomóc w wykryciu, jeżeli podczas transmisji wystąpił błąd. Rysunek 1 pokazuje standardowy przykład ramki, jaką można zobaczyć oglądając dane przesyłane przez UART.
Z kolei USART jest to uniwersalny synchroniczny/asynchroniczny odbiornik/nadajnik. Jest to urządzenie peryferyjne mikrokontrolera, które przekształca przychodzące i wychodzące bajty danych w szeregowy strumień bitów... Definicja USART jest identyczna z definicją UART, ale w skrócie pojawia się dodatkowe słowo - "synchroniczny". Muszą zatem istnieć jakieś różnice, w przeciwnym razie USART byłby tym samym co UART i nikt nikogo nie musiałby poprawiać.
Istotnie, różnice są, i to ważne. Przyjrzyjmy się im po kolei.
Pierwszą różnicą między USART a UART jest sposób, w jaki dane szeregowe mogą być taktowane. UART generuje swój własny zegar danych wewnętrznie, w mikrokontrolerze i synchronizuje go ze strumieniem danych wykrywając początkowe przejście - bit startu. Nie ma tutaj przychodzącego sygnału zegarowego związanego z danymi, więc aby prawidłowo odbierać strumień takich danych, odbiornik musi wiedzieć z wyprzedzeniem, jaka powinna być prędkość transmisji.
Z kolei USART, można skonfigurować do pracy w trybie synchronicznym. W tym trybie urządzenie peryferyjne wysyła sygnał zegarowy na zewnątrz, a odbierające urządzenie peryferyjne może odzyskać go ze strumienia danych, nie znając przy tym wcześniej szybkości tej transmisji. Alternatywnie, niektóre łącza używać mogą wręcz osobnej linii zegarowej do taktowania całej transmisji. Użycie zewnętrznego zegara pozwala na znacznie większą szybkość transmisji danych z wykorzystaniem interfejsu USART niż standardowego UART - tego rodzaju przesyły osiągają prędkość do 4 Mbps.
Drugą istotną różnicą pomiędzy interfejsami USART a UART jest liczba protokołów obsługiwanych przez urządzenie peryferyjne. UART jest prosty i oferuje tylko kilka opcji podstawowego formatu danych. Konfigurować można liczbę bitów stopu oraz występowanie i sposób obliczania bitu parzystości ramki. USART jest dużo bardziej złożony i może generować dane w formie odpowiadającej wielu różnym protokołom, takim jak IrDA, LIN, Smart Card oraz Driver Enable dla interfejsów takich jak RS-485 czy Modbus. Lista ta oczywiście nie wyczerpuje pełnych możliwości interfejsu USART. Dodatkowo, ma również takie same możliwości realizowania transmisji asynchronicznej jak UART, to znaczy USART może generować ten sam typ danych szeregowych, jak pokazano na rysunku 1.
Urządzenia peryferyjne USART i UART mają zdecydowanie inne możliwości i mogą być wykorzystywane w odmiennych sytuacjach, więc w typowych mikrokontrolerach obecne są oba z tych interfejsów tak, aby deweloper tworząc swój system, mógł wybrać ten, który bardziej odpowiada danemu zadaniu. Weźmy na przykład system, którego celem jest praca przy małej mocy pobieranej z zasilania. Urządzenie oparte ma być o układ z rodziny STM32. Mikrokontrolery STM32 zawierają w sobie tak USART, jak i UART. USART jest przeznaczony do realizacji komunikacji szeregowej o dużych wymaganiach, szczególnie, że pobiera więcej energii. Aktywowany może być w momencie, gdy konieczne jest przesłanie dużej ilości danych lub uruchomienie złożonego protokołu. Z kolei, gdy mikrokontroler jest uśpiony - znajduje się w trybie niskiego poboru mocy - urządzenie peryferyjne UART może obsługiwać komunikację przy niskiej prędkości, jednocześnie oferując mniejszy pobór prądu przez układ.
Zatem czy USART i UART są takie same? Technicznie odpowiedź brzmi: nie. USART ma na ogół więcej możliwości niż standardowy moduł UART, a także możliwość generowania taktowanych danych, dzięki czemu USART może działać z szybkością znacznie przekraczającą możliwości UART. USART obejmuje możliwości UART, jednak w wielu aplikacjach, pomimo wysokich parametrów modułu USART, programiści używają ich jako prostych UARTów, ignorując lub unikając synchronicznego generowania zegara w tych potężnych urządzeń peryferyjnych. Nic dziwnego, że tak wiele osób używa tych terminów jakby były synonimami...
Źródło: https://www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference
Większość inżynierów systemów wbudowanych zna interfejs UART: uniwersalny asynchroniczny odbiornik/nadajnik. Jest to urządzenie peryferyjne mikrokontrolera, które konwertuje przychodzące i wychodzące bajty danych na strumień szeregowy. Bit początkowy rozpoczyna szeregowy strumień, a bit lub dwa stopu kończy słowo danych (ramkę). UART ma również możliwość dodania bitu parzystości do ramki, aby pomóc w wykryciu, jeżeli podczas transmisji wystąpił błąd. Rysunek 1 pokazuje standardowy przykład ramki, jaką można zobaczyć oglądając dane przesyłane przez UART.
Z kolei USART jest to uniwersalny synchroniczny/asynchroniczny odbiornik/nadajnik. Jest to urządzenie peryferyjne mikrokontrolera, które przekształca przychodzące i wychodzące bajty danych w szeregowy strumień bitów... Definicja USART jest identyczna z definicją UART, ale w skrócie pojawia się dodatkowe słowo - "synchroniczny". Muszą zatem istnieć jakieś różnice, w przeciwnym razie USART byłby tym samym co UART i nikt nikogo nie musiałby poprawiać.
Istotnie, różnice są, i to ważne. Przyjrzyjmy się im po kolei.
Pierwszą różnicą między USART a UART jest sposób, w jaki dane szeregowe mogą być taktowane. UART generuje swój własny zegar danych wewnętrznie, w mikrokontrolerze i synchronizuje go ze strumieniem danych wykrywając początkowe przejście - bit startu. Nie ma tutaj przychodzącego sygnału zegarowego związanego z danymi, więc aby prawidłowo odbierać strumień takich danych, odbiornik musi wiedzieć z wyprzedzeniem, jaka powinna być prędkość transmisji.
Z kolei USART, można skonfigurować do pracy w trybie synchronicznym. W tym trybie urządzenie peryferyjne wysyła sygnał zegarowy na zewnątrz, a odbierające urządzenie peryferyjne może odzyskać go ze strumienia danych, nie znając przy tym wcześniej szybkości tej transmisji. Alternatywnie, niektóre łącza używać mogą wręcz osobnej linii zegarowej do taktowania całej transmisji. Użycie zewnętrznego zegara pozwala na znacznie większą szybkość transmisji danych z wykorzystaniem interfejsu USART niż standardowego UART - tego rodzaju przesyły osiągają prędkość do 4 Mbps.
Drugą istotną różnicą pomiędzy interfejsami USART a UART jest liczba protokołów obsługiwanych przez urządzenie peryferyjne. UART jest prosty i oferuje tylko kilka opcji podstawowego formatu danych. Konfigurować można liczbę bitów stopu oraz występowanie i sposób obliczania bitu parzystości ramki. USART jest dużo bardziej złożony i może generować dane w formie odpowiadającej wielu różnym protokołom, takim jak IrDA, LIN, Smart Card oraz Driver Enable dla interfejsów takich jak RS-485 czy Modbus. Lista ta oczywiście nie wyczerpuje pełnych możliwości interfejsu USART. Dodatkowo, ma również takie same możliwości realizowania transmisji asynchronicznej jak UART, to znaczy USART może generować ten sam typ danych szeregowych, jak pokazano na rysunku 1.
Urządzenia peryferyjne USART i UART mają zdecydowanie inne możliwości i mogą być wykorzystywane w odmiennych sytuacjach, więc w typowych mikrokontrolerach obecne są oba z tych interfejsów tak, aby deweloper tworząc swój system, mógł wybrać ten, który bardziej odpowiada danemu zadaniu. Weźmy na przykład system, którego celem jest praca przy małej mocy pobieranej z zasilania. Urządzenie oparte ma być o układ z rodziny STM32. Mikrokontrolery STM32 zawierają w sobie tak USART, jak i UART. USART jest przeznaczony do realizacji komunikacji szeregowej o dużych wymaganiach, szczególnie, że pobiera więcej energii. Aktywowany może być w momencie, gdy konieczne jest przesłanie dużej ilości danych lub uruchomienie złożonego protokołu. Z kolei, gdy mikrokontroler jest uśpiony - znajduje się w trybie niskiego poboru mocy - urządzenie peryferyjne UART może obsługiwać komunikację przy niskiej prędkości, jednocześnie oferując mniejszy pobór prądu przez układ.
Zatem czy USART i UART są takie same? Technicznie odpowiedź brzmi: nie. USART ma na ogół więcej możliwości niż standardowy moduł UART, a także możliwość generowania taktowanych danych, dzięki czemu USART może działać z szybkością znacznie przekraczającą możliwości UART. USART obejmuje możliwości UART, jednak w wielu aplikacjach, pomimo wysokich parametrów modułu USART, programiści używają ich jako prostych UARTów, ignorując lub unikając synchronicznego generowania zegara w tych potężnych urządzeń peryferyjnych. Nic dziwnego, że tak wiele osób używa tych terminów jakby były synonimami...
Źródło: https://www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference
Fajne? Ranking DIY
