Интересное / Интерфейс RS-232 в микропроцессорных системах

Интерфейс RS-232 в микропроцессорных системах

rs232
Поделиться

Введение

В микропроцессорных системах управления последовательная передача данных применяется в тех случаях, когда необходимо обеспечить простое и экономичное соединение между двумя устройствами. Среди интерфейсов данного класса RS-232 занимает особое место. Исторически он использовался для связи терминалов и компьютеров с модемами, а впоследствии стал стандартным средством подключения мышей, принтеров, измерительных приборов, контроллеров и различного сервисного оборудования. Хотя в массовой вычислительной технике его значение в настоящее время существенно снизилось, в инженерной практике RS-232 по-прежнему сохраняет свою актуальность.

С инженерной точки зрения RS-232 следует рассматривать как интерфейс типа «точка-точка», предназначенный прежде всего для соединения устройства класса DTE, то есть оконечного оборудования данных, с устройством класса DCE — оборудованием связи или согласования. Именно такая исходная модель определяет состав сигнальных линий интерфейса и традиционную систему их обозначений.

Для студентов принципиально важно понимать, что в современных устройствах RS-232 следует воспринимать не просто как «устаревший COM-порт», а как надёжный сервисный и технологический канал обмена, широко применяемый при диагностике, конфигурировании и наладке оборудования.

Технические характеристики интерфейса

Физический уровень

На физическом уровне RS-232 представляет собой несимметричный последовательный интерфейс с общей сигнальной землёй. Передача и приём пользовательских данных осуществляются по раздельным линиям, поэтому интерфейс допускает полнодуплексный обмен. Для цепей данных логическая «1» соответствует отрицательному напряжению, а логический «0» — положительному; диапазон от −3 до +3 В считается неопределённым.

Границы логических уровней в интерфейсе RS-232

Такая полярность инвертирована относительно типовых уровней TTL/CMOS-логики, поэтому прямое соединение UART-выводов микроконтроллера с линией RS-232 недопустимо без специального преобразователя уровней.

Таблица 1 — Электрические уровни RS-232

ПараметрЦепи данныхУправляющие цепиУчебный комментарий
Логический 0+3…+15 ВАктивное состояние обычно соответствует положительному уровнюДля данных это состояние называют space
Логическая 1−3…−15 ВНеактивное состояние обычно соответствует отрицательному уровнюДля данных это состояние называют mark
Неопределённая зона−3…+3 В−3…+3 ВТакая область не должна интерпретироваться как устойчивое логическое состояние
Практический выводПолярность инвертирована относительно TTL/UARTТребуется согласование уровнейОбычно применяют специализированные драйверы и преобразователи

Границы логических уровней в интерфейсе RS-232 определяются пороговыми значениями напряжения. Для передатчика устойчивые уровни формируются вне диапазона от −5 до +5 В, тогда как для приёмника зона неопределённости ограничена интервалом от −3 до +3 В.

Сигналы и линии управления

Интерфейс предусматривает не только линии передачи данных, но и ряд вспомогательных цепей. Минимально необходимыми для двустороннего обмена являются TxD, RxD и GND. Однако полная схема может включать также линии аппаратного управления потоком и индикации состояния: RTS, CTS, DTR, DSR, DCD и RI. Поэтому RS-232 полезно рассматривать, как системный интерфейс, в котором часть линий относится к данным, а часть — к управлению сеансом связи.

flowchart LR
A["DTE: ПК / терминал / контроллер"] -- "TxD → RxD" --> B["DCE: модем / преобразователь / прибор"]
B -- "TxD → RxD" --> A
A -. "RTS / DTR" .-> B
B -. "CTS / DSR / DCD / RI" .-> A
A --- G["GND"]
B --- G

Логическая схема обмена по RS-232 между DTE и DCE. Раздельные цепи передачи и приёма обеспечивают полнодуплексную работу, а общий провод задаёт нулевой потенциал отсчёта для всех сигнальных линий.

Таблица 2 — Наиболее употребимые сигналы RS-232 для разъёмов DE-9 и DB-25

Сигнал№ Контакта DE-9№ Контакта DB-25Направление (от DTE)Назначение
RxD23ВходПриём последовательных данных
TxD32ВыходПередача последовательных данных
GND57ОбщийСигнальная земля
RTS74ВыходЗапрос на передачу / аппаратное управление потоком
CTS85ВходРазрешение на передачу
DTR420ВыходГотовность терминального устройства
DSR66ВходГотовность устройства связи
DCD18ВходОбнаружение несущей / готовности линии
RI922ВходИндикация вызова

Для инженерной практики особенно важны три линии данных и земли, а при аппаратном управлении потоком — пара RTS/CTS.

Разъёмы и соединители

Назначение линий в соответствии со стандартом RS-232

Исторически для RS-232 использовали 25-контактные разъёмы DB-25, но позже их вытеснил компактный 9-контактный DE-9. Самая частая ловушка при работе с ними кроется в распиновке: у DE-9 второй контакт отвечает за приём (RxD), а третий — за передачу (TxD). У DB-25 всё ровно наоборот. Про эту особенность очень важно помнить при изготовлении кабелей и сборке переходников, чтобы случайно не соединить два передатчика напрямую.

Передача данных и временные диаграммы

Асинхронный кадр

Хотя RS-232 технически поддерживает и синхронный режим, в мире микроконтроллеров его почти всегда используют как асинхронный интерфейс (UART). Главная сложность здесь в том, что используемый код NRZ не умеет синхронизироваться сам по себе. Чтобы приёмник понимал, где начинается и заканчивается байт, в поток данных добавляют «маяки» стартовый и стоповый биты.

В режиме покоя на линии всегда висит логическая «1». Как только напряжение падает (стартовый бит), приёмник понимает: «началось», и отсчитывает положенное количество бит данных. Чаще всего встречается формат 8N1, один старт-бит, 8 бит данных и один стоп-бит без проверки чётности. Это своего рода «золотой стандарт» для ПК и встраиваемой электроники. Но важно помнить, сам RS-232 не навязывает конкретный формат — его нужно вручную и одинаково настроить на обоих устройствах, иначе вместо данных вы получите «мусор».

flowchart LR
I["Покой: 1 (mark)"] --> S["Старт: 0"]
S --> B0["b0"]
B0 --> B1["b1"]
B1 --> B2["b2"]
B2 --> B3["b3"]
B3 --> B4["b4"]
B4 --> B5["b5"]
B5 --> B6["b6"]
B6 --> B7["b7"]
B7 --> P["Чётность (опция)"]
P --> T["Стоп: 1"]

Последовательность битовых интервалов в асинхронном кадре RS-232. На практике младший бит данных передаётся первым, а стартовый бит служит сигналом для начала синхронизации приёмника с передатчиком.

Временные параметры

Если скорость обмена обозначить как $B$ бод, то длительность одного битового интервала равна $ t_{\text{бит}} = 1/B $. Для кадра типа 8N1 длительность символа определяется выражением $t_{\text{симв}} = 10/B$, так как на каждый байт приходится десять битовых интервалов, один стартовый, восемь информационных и один стоповый. Следовательно, полезная эффективность такого кадра составляет 80%, а полезная скорость в байтах в секунду приблизительно равна $B/10$.

Таблица 3 — Временные параметры передачи для кадра 8N1

Скорость, бодДлительность 1 битаДлительность 1 символа 8N1Полезная скорость данных
9600104,2 мкс1,042 мс≈ 0,96 Кбайт/с
1920052,1 мкс0,521 мс≈ 1,92 Кбайт/с
1152008,68 мкс86,8 мкс≈ 11,52 Кбайт/с

Для скорости 115200 бод один бит длится около 8,7 мкс, а один 8-битный символ со стартовым и стоповым битами — около 87 мкс, что соответствует максимальной полезной скорости порядка 11,5 Кбайт/с.

Применение, ограничения и рекомендации

RS-232 сохраняет практическую значимость в тех областях, где требуется простая проводная связь между двумя устройствами без использования сложной сетевой инфраструктуры. Он применяется в лабораторной автоматике, измерительных приборах, программируемых логических контроллерах, электроприводах, маршрутизаторах, безмониторных серверах, станках с числовым программным управлением, встраиваемых контроллерах, а также в сервисных консольных интерфейсах. Общей характеристикой указанных применений являются умеренные требования к скорости передачи данных при высокой значимости надёжного и предсказуемого низкоуровневого доступа к устройству.

Схемы подключения и логика обмена

На практике используются различные схемы кабельного подключения RS-232. В простейшем случае двусторонний обмен может быть реализован по трёхпроводной схеме, включающей линии TxD, RxD и GND. При необходимости аппаратного управления потоком дополнительно задействуются линии RTS и CTS, что формирует пятилинейную конфигурацию.

flowchart LR
LT["DTE<br/>Передающее устройство"]
RT["DCE<br/>Приёмное устройство"]
subgraph L[" "]
direction TB
L1["TxD"]
L2["RxD"]
L3["RTS"]
L4["CTS"]
L5["GND"]
end
subgraph R[" "]
direction TB
R1["TxD"]
R2["RxD"]
R3["RTS"]
R4["CTS"]
R5["GND"]
end
LT --- L1
RT --- R1
L1 --- R2
L2 --- R1
L3 --- R4
L4 --- R3
L5 --- R5
style LT fill:none,stroke:none,color:#000
style RT fill:none,stroke:none,color:#000

Для прямого соединения двух однотипных устройств, например двух устройств класса DTE, применяется нуль-модемное соединение, при котором линии передачи и приёма перекрещиваются.

Нуль-модемное соединение в интерфейсе rs-232

В системном программировании и драйверных реализациях возможно также использование программного управления потоком XON/XOFF. Данный подход позволяет сократить количество используемых проводников, однако предполагает передачу управляющих символов непосредственно в составе потока данных, вследствие чего является менее универсальным и, как правило, менее надёжным по сравнению с аппаратным управлением потоком.

Основные ограничения RS-232 обусловлены его физическими принципами. Интерфейс является однотактным и использует общую землю, что определяет более низкую помехоустойчивость по сравнению с дифференциальными интерфейсами, такими как RS-422 и RS-485. Кроме того, стандарт не предназначен для организации полноценной многоточечной связи. Практически достижимая длина линии зависит от ряда факторов, включая качество кабеля, наличие экранирования, скорость передачи и корректность согласования аппаратных средств. В рамках базового нормативного применения обычно ориентируются на расстояние порядка 15 м, однако при повышении скорости передачи допустимая длина линии может существенно уменьшаться. По этой причине RS-232 наиболее целесообразно рассматривать как интерфейс для коротких соединений типа «точка-точка», а не как основу для промышленной распределённой шины.

Из указанных свойств следуют и инженерные рекомендации по применению интерфейса. Во-первых, RS-232 целесообразно использовать для коротких соединений между двумя узлами в тех случаях, когда приоритетными являются простота реализации и совместимость оборудования, а не масштабируемость системы. Во-вторых, параметры обмена на обеих сторонах соединения должны быть строго согласованы; к ним относятся скорость передачи, число бит данных, режим контроля чётности, число стоп-битов и способ управления потоком. В-третьих, наличие у микроконтроллера встроенного UART не означает непосредственной совместимости с линией RS-232, поскольку между TTL/CMOS-уровнями логики и уровнями RS-232 требуется специальный преобразователь. В-четвёртых, при увеличении длины линии, повышенном уровне электромагнитных помех, необходимости гальванической развязки либо организации многоточечного обмена предпочтительным становится переход к интерфейсам RS-422 или RS-485.

  • 07.07.2023