Мастерство UART: универсальный асинхронный приёмник/передатчик подробно объяснен
UART (Universal Asynchronous Receiver-Transmitter) остаётся наиболее широко принятым аппаратным протоколом для точечно-точечной коммуникации. Это руководство проведёт вас через конфигурацию UART, понимание его формата пакета и реализацию безопасных протоколов фреймов, которые необходимы при разработке продукта.
При правильной конфигурации UART может поддерживать разнообразные последовательные потоки данных, требуя только два провода. Эта минимальная проводка снижает стоимость и сложность, делая UART идеальным для встраиваемых систем, микроконтроллеров и ПК.
Мы рассмотрим основы UART — передачу пакетов, стандартный формат фрейма и кастомизированные фреймы, добавляющие ценность безопасности и соответствия. Статья также предлагает практические шаги для интерпретации даташитов и конфигурации периферии UART.
К концу вы будете твёрдо понимать стандарты UART и как использовать их для улучшения возможностей новых продуктов.
«Единственная крупнейшая проблема в коммуникации — иллюзия, что она состоялась».
— Джордж Бернард Шоу
Протоколы коммуникации структурируют взаимодействие между устройствами. Они определяют общий язык, гарантирующий надёжный обмен данными. Во встраиваемом мире UART является де-факто стандартом для аппаратной коммуникации устройство-устройство.
В отличие от шинных протоколов, UART требует только линию передачи (Tx) и приём (Rx), упрощая дизайн платы и снижая потребление энергии.
Несмотря на свою популярность, многие реализации упускают правильный дизайн фрейма, что может компрометировать производительность и безопасность. Хорошо определённый протокол фрейма — ключ к безошибочному и защищённому обмену данными.
Асинхронная последовательная коммуникация означает отсутствие общей линии тактирования; вместо этого передатчик и приёмник полагаются на согласованный бод-рейт для синхронизации.
Интерфейс
Рисунок 1. Два UART, напрямую общающиеся.
Каждый UART выставляет два выделенных пина:
- Передатчик (Tx)
- Приёмник (Rx)
Рисунок 2. UART, интерфейсный с шиной данных.
В этом расположении передающий UART преобразует параллельные данные от шины в последовательный битовый поток на своей линии Tx. Приёмный UART сэмплирует этот поток, реассемблируя биты в параллельные данные для локальной шины.
Обе стороны должны работать на одном бод-рейте — скорости в битах в секунду. Несоответствие может привести к ошибкам фрейминга; типичные UART терпят до 10% отклонения бод-рейта.
Таблица 1 суммирует ключевые атрибуты UART.
Таблица 1. Краткая сводка UART
| Провода | 2 |
|---|---|
| Поддерживаемые бод-рейты | 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1 000 000, 1 500 000 |
| Метод передачи | Асинхронный |
| Макс. мастеров | 1 |
| Макс. слейвов | 1 |
Поскольку UART асинхронен, передатчик управляет битовым потоком на основе своих часов, а приёмник сэмплирует входящие биты, используя внутренние часы. Старт-бит, данные, опциональный бит чётности и стоп-биты коллективно определяют пакет.
Передача данных
Каждый UART пакет содержит:
- Старт-бит: переход от высокого к низкому, сигнализирующий начало фрейма.
- Дата-фрейм: 5–8 бит полезной нагрузки, младший бит первый. Если используется чётность, фрейм может быть 9 бит.
- Бит чётности (опционально): чётная или нечётная чётность для обнаружения одиночных ошибок бита.
- Стоп-биты: один или два высокоуровневых бита, обозначающие конец фрейма.
Рисунок 3. Структура пакета UART.
Рисунок 4. Иллюстрация старт-бита.
Рисунок 5. Пример дата-фрейма.
Рисунок 6. Использование бита чётности.
Рисунок 7. Иллюстрация стоп-бита.
Поток передачи
1. Параллельный ввод: Передатчик получает параллельные данные от шины.
Рисунок 8. Шина данных питает передатчик.
2. Сборка фрейма: Передатчик добавляет старт-бит, добавляет биты чётности и стоп-биты, формируя полный пакет.
Рисунок 9. UART пакет на передатчике.
3. Последовательная передача: Пакет отправляется бит-за-битом на сконфигурированном бод-рейте.
Рисунок 10. Непрерывная UART передача.
4. Приём: Приёмник отбрасывает фрейминговые биты и восстанавливает оригинальные данные.
Рисунок 11. Пакет на приёмнике.
5. Параллельный вывод: Приёмник конвертирует последовательные данные обратно в параллельные и передаёт их на локальную шину.
Рисунок 12. Поток данных к приёмной шине.
Кастомные протоколы фреймов
Хотя стандартный UART фрейм достаточен для многих случаев, добавление кастомного фреймового слоя повышает безопасность и гарантирует, что только намеченные устройства общаются.
Встраивая уникальные заголовки, трейлеры и CRC, каждое устройство может валидировать, что пакет исшло от доверенного источника. Это особенно ценно в безопасностно-критичных или защищённых средах.
Рисунок 13 показывает типичный кастомный фрейм:
Рисунок 13. Пример протокола UART фрейма.
Фрейм обычно содержит:
- Заголовок 1 (0xAB) и Заголовок 2 (0xCD) — уникальные идентификаторы.
- Команда (CMD) — определяет действие.
- Длина данных (DL) — число байт полезной нагрузки.
- Полезная нагрузка (Data n) — фактические данные.
- Трейлер 1 (0xE1) и Трейлер 2 (0xE2) — закрывающие маркеры.
- CRC — значение проверки ошибок, вычисляемое на обоих концах.
Обе стороны должны использовать идентичные правила фрейминга; иначе пакеты будут отвергнуты.
Шаги конфигурации UART
1. Изучите даташит для понимания интерфейса UART и назначения пинов.
Рисунок 14. Фрагмент даташита микроконтроллера.
2. Проверьте карту памяти для регистров UART и адресов.
Рисунок 15. Карта памяти микроконтроллера.
3. Определите параметры UART порта — биты данных, чётность, стоп-биты, режим работы. Пример описания:
• 5–8 бит данных
• 1, 1½ или 2 стоп-бита
• Нет, чётная или нечётная чётность
• Полнодуплексный, DMA-enabled, асинхронный трансфер
4. Вычислите бод-рейт используя периферийный такт (PCLK) и регистры оверсэмплирования и делителя МК. Общая формула:
Baud rate = PCLK / ((M + N/2048) × 2OSR + 2 × DIV)
где:
OSR — коэффициент оверсэмплирования (0–3)
DIV — делитель бод-рейта (1–65535)
M — старшая часть дробного делителя (1–3)
N — младшая часть дробного делителя (0–2047)
Примерные таблицы ниже иллюстрируют настройки бод-рейта для PCLK 26 МГц и 16 МГц.
Таблица 2. Пример бод-рейта на базе 26 МГц PCLK
| Baud Rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 24 | 3 | 1078 |
| 115200 | 3 | 4 | 1 | 1563 |
Таблица 3. Пример бод-рейта на базе 16 МГц PCLK
| Baud Rate | OSR | DIV | DIVM | DIVN |
|---|---|---|---|---|
| 9600 | 3 | 17 | 3 | 1078 |
| 115200 | 3 | 2 | 2 | 348 |
5. Настройте регистры UART согласно даташиту. Ключевые регистры включают:
Таблица 4. Описание регистров UART
| Имя | Описание |
|---|---|
| UART_DIV | Делитель бод-рейта |
| UART_FIBR | Управление дробным бод-рейтом |
| UART_LCR2 | Регистр управления линией (OSR, стоп-биты, чётность) |
После программирования регистров UART может надежно передавать и принимать данные.
Почему UART важен
Понимание UART критично для инженеров, проектирующих надёжные, низкозатратные и высокопропускные последовательные линии. Мастерство фрейминга, расчёта бод-рейта и конфигурации регистров обеспечивает целостность данных и системную надёжность.
Частые сценарии использования
- Отладка — лог-сообщения во время разработки прошивки.
- Производство — диагностика и трассировка в реальном времени.
- Over-the-air обновления — доставка изменений прошивки встраиваемым устройствам.
- Верификация — валидация функциональности устройства перед отгрузкой.
Ссылки
«Basics of UART Communication.» Electronics Hub, July 2017.
Campbell, Scott. «Basics of UART Communication.» Circuit Basics. Keim, Robert.
«Back to Basics: The Universal Asynchronous Receiver/Transmitter.» All About Circuits, December 2016.
«What Is UART Protocol? UART Communication Explained.» Arrow.
Встроенный
- Экспертное производство валов: точные процессы и индивидуальные решения
- Почему облачная культура движет бизнес-успехом: практическое руководство
- Как предиктивное обслуживание повышает эффективность и сокращает простой
- Фрезерные станки 101: полное руководство по функциям, компонентам и применению
- Линии поперечной раскройки (Cut-to-Length): ключевые концепции и применения
- Остаточные напряжения в материалах: типы, причины и практические применения
- Принцип работы амортизаторов: обеспечение баланса и комфорта автомобиля
- Течение жидкостей: виды, поведение и применение
- Муфты: функции, виды и применение в промышленном оборудовании
- Гибкость материалов: как эластичность определяет производительность