Чи не поправляв вас коли-небудь колега, кажучи, що це не UART, а USART? Іноді взаємозамінність цих термінів може бути цілком допустимою, але в багатьох випадках стає помилкою. Давайте ж розглянемо уважніше, що являє собою USART та UART, і в чому їх основні відмінності.

Більшість розробників вбудованих систем знають, що таке UART: Universal Asynchronous Receiver / Transmitter (універсальний асинхронний приймач / передавач). Це периферійний пристрій мікроконтролера, перетворює вхідні та вихідні байти в послідовний потік даних. Стартовий біт ініціює початок передачі потоку бітів, а стоповий біт (або два) завершує слово даних. Крім того, для виявлення помилок під час передачі даних UART може вставляти в потік контрольний біт. На малюнку 1 показаний стандартний приклад того, що очікують побачити інженери коли передають дані через UART.

USART - Universal Synchronous / Asynchronous Receiver / Transmitter (універсальний синхронний / асинхронний приймач / передавач) - це периферійний пристрій мікроконтролера, перетворює вхідні та вихідні байти в послідовний потік даних. Хм. Визначення USART нічим не відрізняється від UART, за винятком одного доданого слова «синхронний». Але повинні ж бути якісь більш значущі відмінності? Інакше USART був би відомий просто як UART.

Так, відмінності є, причому досить істотні. Перша відмінність USART від UART визначається тим, яким чином можуть синхронізуватися послідовні дані. Сигнали такту UART генеруються всередині мікроконтролера і синхронізуються з потоком даних по переходу стартового біта. Будь-яких вхідних синхросигналів, пов'язаних з даними, тут немає, тому для правильної обробки отриманих даних приймач повинен заздалегідь знати, якою буде швидкість передачі.

USART, навпаки, може бути налаштований до роботи в синхронному режимі. В цьому режимі відправляє дані периферія, яка генерує сигнал синхронізації, який периферією приймальної сторони може бути витягнутий з потоку даних без апріорної інформації про швидкість передачі. Можливий і інший варіант, коли для сигналу синхронізації виділяється окрема лінія. Використання зовнішнього сигналу синхронізації дозволяє USART працювати на швидкостях до 4 Мбіт/с - недосяжних для стандартних UART.

Інша важлива відмінність USART від UART полягає в кількості підтримуваних периферійних протоколів. UART простий, і може запропонувати лише невеликі варіації базового формату - кількість степових біт і спосіб контролю помилок (по парності або непарності). USART набагато складніший і здатний формувати потоки даних, сумісні з багатьма стандартними протоколами: IrDA, LIN, Smart Card, Driver Enable для RS-485 і Modbus - лише кілька з них. Разом з цим USART може, як і UART, працювати в асинхронному режимі, що дозволяє йому генерувати точно такі ж типи послідовних даних, які показані на малюнку 1.

USART UART
Малюнок 1. Потік послідовних даних UART.

Периферійні пристрої USART і UART мають виразно різні можливості і можуть бути корисні в різних ситуаціях, тому в стандартному мікроконтролеру розробник може виявити обидва інтерфейси. Наприклад, візьмемо мікроконтролери сімейства STM32, основною сферою застосування яких є мікропотужні додатки. Серед периферійних пристроїв на кристалах цих приладів є як USART, так і UART. USART призначений для виконання «важкої роботи» по послідовному обміну в періоди «великої» витрати енергії. Коли ж мікроконтролер знаходиться в сплячому режимі або в режимі зі зниженим споживанням, використовується UART, здатний виконувати низько швидкісний обмін, не виходячи за рамки допустимого ліміту енергії.

То ж можна говорити, що USART і UART - це одне і теж? Технічно правильна відповідь - «ні». USART, як правило, має набір функцій, розширений в порівнянні з UART, і здатний обробляти синхронізовані потоки даних на швидкостях, які у багато разів перевищують швидкості UART. Дійсно, USART може виконувати всі функції UART, і, можливо, тому в багатьох додатках розробники, маючи в руках всю міць USART, використовують їх як прості UART, ігноруючи переваги синхронного тактування. Не дивно, що дуже багато хто використовує ці терміни так, ніби вони є синонімами.