📝В данной статье будет рассмотрен интерфейс UART. Без истории возникновения, без "воды" и "интимных подробностей". Четко, по делу, для практического использования.
UART (Universal Asynchronous Receiver/Transmitter, Универсальный Асинхронный Приёмопередатчик) — это один из самых распространенных способов обмена данными между микроконтроллерами и другими устройствами. Он широко используется в различных электронных устройствах благодаря своей простоте и надежности. UART — это асинхронный последовательный интерфейс передачи данных, что означает отсутствие необходимости во внешнем тактирующем устройстве, что делает его особенно удобным для коротких и средних дистанций передачи данных.
Основные понятия
- Асинхронность: UART не использует внешнее тактирующее устройство для синхронизации передачи данных.
- Последовательная передача: данные передаются бит за битом по одному проводу (или паре проводов), в отличие от параллельных интерфейсов. Поэтому для передачи в одном направлении требуется один проводник; для полнодуплексной двунаправленной связи потребуется два проводника.
- Выход обозначают TD или TX (transmitted data), вход - RD или RX (received data). Для подключения двух устройств выход одного подключают ко входу другого и вход первого - к выходу второго.
Как работает UART
Алгоритм работы кратко:
- В отсутствии передачи на выходе UART присутствует уровень логическая 1.
- Передача данных начинается с отправки стартового бита (логический 0), который сигнализирует о начале передачи.
- Затем идут биты данных (обычно 8 бит), которые передаются последовательно.
- После данных передается стоповый бит (логическая 1), обозначающий конец передачи.
💭Для проверки корректности данных в передаче может быть использована форма простой, низкоуровневой проверки ошибок, которая носит название "Четность". Существует 2 вариант такой проверки, соответственно: четный или нечетный. Для создания бита четности, все биты данных складываются, а четность суммы определяет, установлен бит четности или нет. Например: пусть передаются биты - 00110010 - сумма битов равна 3 , следовательно бит четности будет равен 1. Тогда конченая последовательность будет: 010010101 (добавлен бит четности, сразу перед стоповым битом, равный 1). Получаем 4 единицы, что является четным числом. Аналогично с режимом проверки на нечетность, просто в конце добавляется 0. Таким образом можно при приеме проверить корректность данных.
Параметры UART
При обозначении параметров UART используется запись:
ЦИФРА-БУКВА-ЦИФРА
- ЦИФРА — количество бит в кадре: от 5 до 9 бит. Обычно 8.
- БУКВА — наличие и тип бита чётности:
N - None (Отсутствует);
E - Even (Чётный). Проверка данных на чётность. Перед стоп-битом в кадр добавляется бит: 0 если в кадре было нечётное количество единиц, 1 — если чётное;
O - Odd (Нечётный). Проверка данных на нечётность. Перед стоп-битом в кадр добавляется бит: 1 если в кадре было нечётное количество единиц, 0 — если чётное.
- ЦИФРА — длительность стоп-бита 1, 1.5, 2. Продолжительность стоп-бита (1, 1.5 или 2 битовых интервала)
Пример стандартных настроек в Arduino: 8-N-1.
Интерфейс RS232 и COM-порт
❓Как же в статье про UART появился заголовок "Интерфейс RS232"? Все достаточно просто и тривиально. Мы уже разобрались, что означает термин UART ("универсальный асинхронный трансивер"). Он в свою очередь охватывает множество различных стандартов интерфейсов(RS232, RS449, RS423, RS422 и RS485), хотя они по своему принципу работы все приблизительно одинаковы.
Эти стандарты определяют основные электрические характеристики, типы соединений, механическую составляющую физических портов, а также скорость передачи информации. По своей сути, UART служит связующим звеном между физическим уровнем и сетью связи.
Почему же здесь рассматривается именно RS232? Все просто - данный интерфейс был стандартом на ранних дизайнах ПК IBM. На этих компьютерах было, как правило два COM-порта (а COM-порт это что?). COM-порт - интерфейс компьютера, соответствующий стандарту RS-232, который выглядит:
Затем COM-порт начал вытесняться USB-интерфейсом и сейчас у компьютера может быть всего один COM-порт или вообще ни одного. Если в компьютере отсутствует COM-порт, то можно использовать переходник USB-COM.
Принцип работы интерфейса RS232 рассмотрен не будет(более подробно про этот интерфейс можно почитать здесь: https://www.allelcoelec.ru/blog/how-rs-232-works.html), но будут отмечены основные моменты, которые Вы должны знать и про RS232 и про COM-порт:
- RS-232 является стандартом физического уровня для интерфейса UART. Он определяет набор используемых сигнальных линий и уровни для сигналов. Используемые уровни сильно отличаются от традиционных TTL (transistor-transistor logic — транзисторно-транзисторная логика) или CMOS - уровней (КМОП - логика на комплементарных полевых транзисторах) . Во-первых, используются двухполярные сигналы, во-вторых - сигнал положительной полярности соответствует логическому нулю. Для согласования уровней сигналов интерфейса RS-232 и остальной части схемы на обычной логике, используются специализированные микросхемы для преобразования уровней.
- Последовательный порт, COM-порт, serial-порт, интерфейс связи, commutations port - ОДНО и ТОЖЕ, что и интерфейс RS232.
- RS232 это не UART. UART это протокол передачи единиц и нулей, электрическую спецификацию на себя берет интерфейс RS232(или другие стандарты).
- Если на вашем устройстве используется UART и необходимо провести с ним махинации, используя компьютер, то необходимо купить преобразователь USB-TTL (например: Преобразователь USB-SERIAL (TTL, UART) адаптер CH340G, 3.3-5V https://market.yandex.ru/cc/75sDMm).
БОД
Существует много определений, характеризующих эти три буквы, но в данной статье остановимся, по моему мнению, на наиболее полно отражающем суть.
🌐БОД - это единица измерения символьной скорости, определяющая количество изменений СИГНАЛА в СЕКУНДУ.
Для двоичного кодирования верным будет суждение, что 1 бод = 1 бит/с. Но также существуют методы МОДУЛЯЦИИ сигнала (например: квадратурная амплитудная модуляция), с помощью которых на один символ, может быть, например, 4 бита.
Формула, отражающая зависимость бод от бит/с имеет вид: 1 бод = nбит/с, где n - количество бит на символ.
Например: символьная скорость составляет 9600 бод, а количество бит на символ - 4. Тогда, V = 9600 бод * 4 бит/символ = 38400 бит/с.
Стандартные скорости передачи интерфейса UART, при условии, что на один символ, приходится 1 бит:
Преимущества и недостатки UART
🟩Преимущества:
- Простота реализации
- Низкая стоимость
- Не требует внешнего тактирующего устройства
- Обеспечивает стабильную и эффективную коммуникацию между устройствами
🟥Недостатки:
- Ограниченная скорость передачи
- Требует точного согласования параметров
- Не подходит для очень длинных линий
Использование UART
Конкретные примеры использования UART:
- Микроконтроллеры (например, Arduino, ESP32, STM32): для обмена данными с компьютером или другими устройствами.
- GPS-модули: подключение к микроконтроллерам для получения координат.
- Модемы и радиомодули (например, SIM800, nRF24L01): для связи по GSM или радиоканалам.
- Датчики и сенсоры: передача данных о температуре, влажности, давлении.
- Отладочные порты на платах: вывод логов и диагностика в процессе разработки.
➡️Эти примеры показывают универсальность и актуальность UART в современных устройствах. 🧐Из личного опыта: работаю с UART плотно, так как занимаюсь FPV дронами. Недавно прошивал ELRS приемник, как раз через преобразователь USB-SERIAL. В следующей статье будет подробно рассмотрен данный процесс.
Выводы
📌В данной статье были рассмотрены основные понятия: UART, RS232, COM, БОД. Для практического применения UART можно воспользоваться всеми любимой Arduino. В качестве практического закрепления теоретических тонкостей можно рассмотреть модель взаимодействия-общения двух плат между собой по UART. Если интересно, как это можно реализовать - пишите в комментариях, сделаю подробную статью.
🫡Хочу пожелать успехов в освоении электронной магии и бесконечного вдохновения для ваших волшебных проектов!
В случае возникновения каких-либо трудностей - пишите в комментариях, будем разбираться вместе.
P.S. Подпишись на канал⚙️