Последовательный интерфейс rs 232. Распиновка COM порта(RS232)

  • 15.02.2023

Существует несколько стандартов RS-232, различающихся буквой в суффиксе: RS-232C. RS-232D. RS-232E и пр. Вдаваться в различия между ними нет никакого смысла- они являются лишь последовательным усовершенствованием и детализацией технических особенностей одного и того же устройства. Все современные порты поддерживают спецификации RS-232D или RS- 232Е. В состав любого порта с интерфейсом RS-232 (в том числе СОМ-порта PC) входит универсальный асинхронный приемопередатчик (Universal Asynchronous Receiver-Transmitter. UART), который потому и носит название "универсального", что одинаков для всех подобных интерфейсов (кроме RS-232, это RS-485 и RS-422 1). Также в RS-232 входит схема преобразования логических уровней UART (это обычные логические уровни 0^5 илн 0+3,3 В) в уровни RS-232, где биты передаются разпополярными уровнями напряжения, притом инвертированными относительно IJART. В UART действует положительная логика, где логическая 1 есть высокий уровень (+3 или +5 В), а у RS-232 наоборот, логическая I есть отрицательный уровень от -3 до -12 В, а логический 0 - положительный уровень от +3 до +12 В.

Сама идея передачи по этому интерфейсу заключается в передачи целого байта по одному проводу в аиде последовательных импульсов, каждый ич которых может быть 0 или 1. Если в определенные моменты времени считывать состояние линии, то можно восстановить то. что было послано. Однако эта простая идея натыкается на определенные трудности. Для приемника и передатчика, связанных между собой тремя проводами ("земля" и два сиг нальных провода "туда" и "обратно"), приходится задавать скорость передачи и приема, которая должна быть одинакова для устройств на обоих концах линии. Эти скорости стандартизированы, и выбираются из ряда 1200, 2400. 4800, 9600. 14 400, 19 200. 28 800, 38 400, 56 000, 57 600, 115 200, 128 000, 256 000 (более медленные скорости я опустил) 2 . Число это обозначает количество передаваемых/принимаемых бит в секунду (бод). Проблема состоит в том, что приемник и передатчик - это физически совершенно разные системы, и скорости эти для них не могут быть строго одинаковыми в принципе (из-за разброса параметров тактовых генераторов), и даже если их каким-то фантастическим образом синхронизировать в начале, то они в любом случае быстро "разъедутся". Поэтому такая передача всегда сопровождается начальным (стартовым) битом, который служит для синхронизации. После нею идут восемь (или девять - если используется проверка на четность) информационных битов, а затем стоповые биты, которых может быт ь один, два и более, но это уже не имеет принципиального значения - почему, мы сейчас увидим.

Общая диаграмма передачи таких последовательностей показана на рис. ГИЛ. Хитрость заключается в том, что состояния линии передачи, называемые стартовый и столовый биты, имеют разные уровни. В данном случае стартовый бит передается положительным уровнем напряжения (логическим нулем), а столовый- отрицательным уровнем (логической единицей) 3 , по-

Обычный формат данных, по которому работает львиная доля всех устройств, обозначается 8nl, что читается так: 8 информационных бит, no parity,

тому фронт стартового бита всегда однозначно распознается. В этот-то момент и происходит синхронизация. Приемник отсчитывает время от фронта стартового бита, равное Ъ А периода заданной частоты обмена (чтобы попасть примерно в середину следующего бита), и затем восемь (или девять, если это задано заранее) раз подряд с заданным периодом регистрирует состояние линии. После этого линия переходит в состояние стопового бита и может в нем пребывать сколь угодно долго, пока не придет следующий стартовый бит. Задание минимального количества стоповых битов, однако, производится тоже- для того чтобы приемник знал, сколько времени минимально ему нужно ожидать следующего стартового бита (как минимум, это может быть, естественно, один период частоты обмена, т. е. один стоповый бит). Если по истечении этого времени стартовый бит не придет, приемник может регистрировать так называемый Timeout, т. е. перерыв, по-русски, и заняться своими делами. Если же линия "зависнет" в состоянии логического 0 (высокого уровня напряжения), то это может восприниматься устройством, как состояние "обрыва" линии- не очень удобный механизм, и в микроконтроллерах он через UART не поддерживается. Это не мешает нам, естественно, для установки или определения такого состояния просто отключать UART и устанавливать состояние логического нуля на выводе TxD (что и есть имитация физического "обрыва"), или определять уровень логического 0 на выводе RxD, но серьезных причин для использования этой возможности, я, честно говоря, не вижу (см. на эту тему также замечание в главе 20).

Рис. П4.1. Диаграмма передачи данных по последовательному интерфейсу RS-232

в формате 8N2

1 столовый бит. "No parity" означает, что проверка на четность не производится. Это самая распространенная схема работы такого порта, причем, т. к. никакими тайм-аугами (Timeout) мы также себе голову заморачивать не будем, то нам в принципе все равно, сколько стоповых битов будет, но во избежание излишних сложностей следует их устанавливать всегда одинаково - у передатчика и у приемника. На диаграмме рис. П4.1 показана передача некоего кода, а также, для наглядности, передача байта, состоящего из всеч единиц и из всех нулей в формате, опять же для наглядности, 8п2.

Из описанного алгоритма работы понятно, что погрешность несовпадения скоростей обмена может быть такой, чтобы фронты не "разъезжались" за время передачи/приема всех десяти-двенадцати битов более, чем на полпериода, т. е. в принципе фактическая разница скоростей может достигать 4-5%, но на практике их стараются все же сделать как можно ближе к стандартным величинам.

Приемник RS-232 часто дополнительно снабжают схемой, которая фиксирует уровень не единожды за период действия бита, а трижды, при этом за окончательный результат принимается уровень двух одинаковых из трех полученных состояний линии, таким образом удается избежать случайных помех. Длина линии связи по стандарту не должна превышать 15 м. но на практике это могут быть много большие величины. Если скорость передачи не выбирать слишком высокой, то такая линия может надежно работать на десятки метров (автору этих строк удавалось без дополнительных ухищрений наладить обмен с компьютером на скорости 4800 по кабелю, правда, довольно толстому, длиной около полукилометра). В табл. П4.1 приведены ориентировочные эмпирические данные по длине неэкранированной линии связи для различных скоростей передвчи.

Таблица П4.1. Длина кабеля RS-232 для разных скоростей передачи данных

Эти данные ни в коем случае не могут считаться официальными - слишком много влияющих факторов (уровень помех, толщина проводов, их взаимное расположение в кабеле, фактические уровни напряжения, выходное/входное сопротивление портов и т. п.). В случае экранированного кабеля 4 эти величины можно увеличить примерно в полтора-два раза. Во всех случаях использования "несанкционированной" длины кабеля связи следует применять меры по дополнительной проверке целостности данных- контроль четности, и/или программные способы (вычисление контрольных сумм и т. п.), описанные в главе 20.

Для работы в обе стороны нужно две линии, которые у каждого приемопередатчика обозначаются RxD (приемная) и TxD (передающая). В каждый момент времени может работать только одна из линий, т. е. приемопередатчик либо передает, либо принимает данные, но не одновременно (так называемый "полудуплексный режим" - это сделано потому, что у UART-микросхем чаще всего один регистр и на прием и на передачу). Кроме линий RxD и TxD, в разъемах RS-232 присутствуют также и другие линии. Полный список всех контактов для обоих стандартных разъемов типа DB (9- и 25-контактного) приведен в табл. П4.2. Нумерация контактов DB-разъема обычно написана прямо на нем, она также есть на рис. 10.8 в главе 10 (на примере гнезда разъема для игрового порта DB-15F).

Таблица П4.2. Контакты для ОВ-разьемов

Обозначение

Направление

Детектор принимаемого сигнала с линии (Data Carrier Detect)

Принимаемые данные (Receive Data)

Передаваемые данные (Transmit Data)

Готовность выходных данных (Data Terminal Ready)

Общий (Ground)

Готовность данных (Data Set Ready)

Запрос для передачи данных (Request То Send)

Таблица П4.2 (окончание)

Для нормальной совместной работы приемника и передатчика выводы RxD н TxD, естественно, нужно соединять накрест - TxD одного устройства с RxD второго и наоборот (то же относится и к RTS-CTS и т. д.). Кабели RS-232, которые устроены именно таким образом, называются еще нуль-модемными (в отличие от простых удлинительных). Их стандартная конфигурация показана на рис. П4.2. В варианте "с" (справа на рисунке) дополнительные выводы соединены именно так, как описано ранее.

Рис. П4.2. Схемы нуль-модемных кабелей RS-232: a.b - различные полные варианты,

с - минимальный вариант

Выходные линии RTS и DTR иногда могут использовать и для "незаконных" целей - питания устройств, подсоединенных к СОМ-порту. Именно так устроены, например, компьютерные мыши, работающие через СОМ. Позже мы покажем пример устройства (преобразователя уровней), которое будет использовать питание от вывода RTS. А как при необходимости можно установить эти линии в нужное состояние?

Тверской государственный технический университет

В.В. Лебедев, А.Н. Васильев, А.Р. Хабаров

Периферийные устройства ЭВМ

Учебное пособие

Издание первое

Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 230101 Вычислительные машины, комплексы системы и сети.

УДК 681.327.8(075.8)

ББК 32.973.26-04я7

Лебедев, В.В. Периферийные устройства ЭВМ: учебное пособие / В.В. Лебедев, А.Н. Васильев, А.Р. Хабаров. 1-е изд. Тверь: ТГТУ, 2009. 176 с.

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

Предназначено для студентов специальности 230101 Вычислительные машины, комплексы, системы и сети для изучения данной дисциплины, при курсовом и дипломном проектировании.

Рецензенты: заведующий кафедрой ЭВМ Тверского государственного технического университета, доктор технических наук, профессор В.А. Григорьев; Федеральное государственное унитарное предприятие «Центральное конструкторское бюро транспортного машиностроения» (ведущий инженер Д.В. Суринский).

ISBN 978-5-7995-0427-4 © Тверской государственный

технический университет, 2009


Введение

Современные компьютеры представляют собой сложный аппаратно-программный комплекс, предназначенный для автоматической обработки информации в процессе решения вычислительных и информационных задач. Благодаря принципу открытой архитектуры, существует возможность подключения к системному блоку компьютера широкого спектра дополнительных периферийных устройств различного назначения. С помощью периферийных устройств осуществляется связь с различными источниками (поставщиками) и получателями (потребителями) информации. Функции периферийных устройств достаточно разнообразны, однако среди них можно выделить две основные: хранение информации на различных носителях данных и преобразование ее согласно функции, выполняемой внешним устройством. К периферийным устройствам относятся устройства ввода-вывода и внешняя память; к аппаратным средствам ввода информации в компьютер – клавиатура, различного рода манипуляторы (мышь, трекбол, джойстик), сканер и другие устройства; к аппаратным средствам вывода информации из компьютера – мониторы, принтеры, графопостроители, синтезаторы речи. Модемы используются как для передачи, так и для приема информации. Устройства внешней памяти компьютера выполняют функции двустороннего обмена информацией и служат для постоянного хранения программ и данных.

Коммуникация компьютера с периферийными устройствами осуществляется посредством портов ввода-вывода или интерфейсов. Под интерфейсом понимается совокупность правил и средств, устанавливающих единые принципы взаимодействия устройств. Интерфейс периферийного устройства включает в себя техническое исполнение, наборы передаваемых сигналов и правила обмена информацией с компьютером. Существуют два основных класса: последовательные и параллельные интерфейсы. Чисто теоретически параллельные всегда должны выигрывать по скорости у последовательных, но на практике оказывается, что и последовательные имеют свои плюсы, благодаря чему они заняли свою нишу.

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

В учебном пособии рассмотрены принципы работы одного из самых широко применяемых интерфейсов – RS-232C или COM-порта. Его изучение позволит достаточно быстро освоить принципы функционирования последовательных интерфейсов, протоколов работы электронных схем передачи последовательных сигналов, и перейти к освоению других последовательных интерфейсов: USB и FireWire.

Рассмотрены различные периферийные устройства, такие как модем, клавиатура, принтер и монитор. Особое внимание уделено рассмотрению их интерфейсов. Дан большой объем справочной информации.

Приведен лабораторный практикум, выполнение которого поможет закреплению и лучшему усвоению теоретического материала, а также приобретению практических навыков в разработке и использовании интерфейсов периферийных устройств.

Учебное пособие ориентировано в первую очередь на студентов и преподавателей вузов, аспирантов и молодых специалистов, работа и исследования которых затрагивают вопросы взаимодействия компьютера и периферийных устройств.

Интерфейс RS-232C

Интерфейс RS-232C – CОМ-порт

Последовательный интерфейс для передачи данных в одном направлении использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Английские названия интерфейса и порта Serial interface и Serial port иногда неправильно переводят как «серийные». Последовательная передача позволяет сократить количество сигнальных линий и добиться улучшения связи на больших расстояниях.

Начиная с первых моделей, в PC имелся последовательный порт – CОМ-порт (Communication Port – коммуникационный порт). Этот порт обеспечивает асинхронный обмен по стандарту RS-232C. Синхронный обмен в PC поддерживают лишь специальные адаптеры, например SDLC или V.35. CОМ-порты реализуются на микросхемах универсальных асинхронных приемопередатчиков (UART), совместимых с семейством i8250/16450/16550. Они занимают в пространстве ввода-вывода по 8 смежных 8-битных регистров и могут располагаться по стандартным базовым адресам 3F8h (CОМ1), 2F8h (CОМ2), 3E8h (CОМ3), 2E8h (CОМ4). Порты могут вырабатывать аппаратные прерывания IRQ4 (обычно используется для CОМ1 и CОМ3) и IRQ3 (для CОМ2 и CОМ4). С внешней стороны порты имеют линии последовательных данных передачи и приема, а также наборы сигналов управления и состояния, соответствующие стандарту RS-232C. CОМ-порты имеют внешние разъемы-вилки (male) DB25P или DB9P, выведенные на заднюю панель компьютера. Гальваническая развязка отсутствует – схемная земля подключаемого устройства соединяется со схемной землей компьютера. Скорость передачи данных может достигать 115 200 бит/с.

Компьютер может иметь до четырех последовательных портов CОМ1 – CОМ4 (для машин класса AT типично наличие двух портов) с поддержкой на уровне BIOS. Сервис BIOS Int 14h обеспечивает инициализацию порта, ввод и вывод символа (без прерываний) и опрос состояния. Через Int 14h скорость передачи программируется в диапазоне 110-9600 бит/с (меньше, чем реальные возможности порта). Для повышения производительности широко используется взаимодействие программ с портом на уровне регистров, для чего требуется совместимость аппаратных средств CОМ-порта с программной моделью i8250/16450/16550.

Название порта указывает на его основное применение – подключение коммуникационного оборудования (например, модема) для связи с другими компьютерами, сетями и периферийными устройствами. К порту могут непосредственно подключаться и периферийные устройства с последовательным интерфейсом: принтеры, плоттеры, терминалы и т.д. CОМ-порт широко используется для подключения мыши, а также организации непосредственной связи двух компьютеров. К CОМ-порту подключаются и электронные ключи.

Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенные адаптеры двух CОМ-портов. Один из портов может использоваться и для беспроводной инфракрасной связи с периферийными устройствами (IrDA). Существуют карты ISA с парой CОМ-портов, где они чаще всего соседствуют с LPT-портом, а также с контроллерами дисковых интерфейсов. «Классический» CОМ-порт позволяет осуществлять обмен данными только программно-управляемым способом, при этом для пересылки каждого байта процессору приходится выполнять несколько инструкций. Современные порты имеют FIFO-буферы данных и позволяют выполнять обмен данных по каналу DMA, существенно разгружая CPU.

В спецификациях PC`99 традиционные CОМ-порты не рекомендованы, но еще разрешены для использования. Если они есть, то должны быть совместимыми с UART 16550A и обеспечивать скорость до 115,2 Кбит/с. Устройствам, которые традиционно используют CОМ-порт, рекомендуется переводить на последовательные шины USB и FireWire.

Протокол RS-232C

Стандарт RS-232C описывает несимметричные передатчики и приемники – сигнал передается относительно общего провода – схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах, например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице соответствует напряжение на входе приемника в диапазоне -12 … -3В (рис. 1). Логическому нулю соответствует диапазон +3 … +12В. Диапазон -3 … +3В – зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения порога. Уровни сигналов на выходах передатчиков должны быть в диапазонах -12 … -5В и +5 … +12В для представления единицы и нуля соответственно.

Интерфейс предполагает наличие защитного заземления для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры.

Наиболее часто используются трех- или четырехпроводная связь (для двунаправленной передачи). Схема соединения для четырехпроводной линии связи показана на рис. 2. Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.

Рис.1. Уровни сигналов RS-232C на передающем

и принимающих концах линии связи


Рис.2. Схема четырехпроводной линии связи для RS-232C

Назначение контактов разъемов CОМ-портов (и любой другой аппаратуры передачи данных АПД) приведено в табл. 1. У модемов название цепей и контактов такое же, но роли сигналов (вход-выход) меняются на противоположные.

Подмножество сигналов RS-232C, относящихся к асинхронному режиму, рассмотрим с точки зрения CОМ-порта PC. Для удобства будем пользоваться мнемоникой названий, принятой в описаниях CОМ-портов и большинства устройств (она отличается от безликих обозначений RS-232 и V.24). Назначение сигналов интерфейса приведено в табл. 2.

Таблица 1. Разъемы и сигналы интерфейса RS-232C

Обозначение цепи Контакт разъема № провода кабеля выносного разъема PC Направле-ние
CОМ-порт RS-232 V.24 DB-25P DB-9P 1 1 2 2 3 3 4 4 I/O
PG AA (10) (10) (10) -
SG AB -
TD BA O
RD BB I
RTS CA O
CTS CB I
DSR CC I
DTR CD 108/2 O
DCD CF I
RI CE I

Примечания:

1 Ленточный кабель 8-битных мультикарт.

2 Ленточный кабель 16-битных мультикарт и портов на системных платах.

3 Вариант ленточного кабеля портов на системных платах.

4 Широкий ленточный кабель к 25-контактному разъёму.

Нормальная последовательность управляющих сигналов для случая подключения модема к CОМ-порту приведена на рис. 3. Напомним, что положительному уровню соответствует логическое состояние «выключено», а отрицательному – «включено».

Таблица 2. Назначение сигналов интерфейса RS-232C

Сигнал Назначение
PG Protected ground – защитная земля, соединяется с корпусом устройства и экраном кабеля
SG Signal ground – сигнальная (схемная) земля, относительно которой действуют уровни сигналов
TD Transmit data – последовательные данные – выход передатчика
RD Receive data – последовательные данные – вход приемника
RTS Request to send – выход запроса передачи данных: состояние «включено» уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением – состояние «включено» служит сигналом модему на переключение в режим передачи
CTS Clear to send – вход разрешения терминалу передавать данные. Состояние «выключено» запрещает передачу данных. Сигнал используется для аппаратного управления потоком данных
DSR Data set ready – вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)
DTR Data terminal ready – выход сигнала готовности терминала к обмену данными, состояние «включено» поддерживает коммутируемый канал в состоянии соединения
DCD Data carrier detected – вход сигнала обнаружения несущей удаленного модема
RI Ring indicator – вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова

Рис. 3. Последовательность управляющих сигналов интерфейса RS-232C

Рассмотрим последовательность управляющих сигналов.

1. Установкой сигнала DTR компьютер указывает на желание использовать модем.

2. Установкой сигнала DSR модем сигнализирует о своей готовности к установлению соединения.

3. Сигналом RTS компьютер запрашивает разрешение на передачу и заявляет о своей готовности принимать данные от модема.

4. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию.

5. Снятием сигнала CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) – компьютер должен приостановить передачу данных.

6. Восстановлением сигнала CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место).

7. Снятие сигнала RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер.

8. Модем подтверждает снятие сигнала RTS сбросом сигнала CTS.

9. Компьютер повторно устанавливает сигнал RTS для возобновления передачи.

10. Модем подтверждает готовность к этим действиям.

11. Компьютер указывает на завершение обмена.

12. Модем отвечает подтверждением.

13. Компьютер снимает сигнал DTR, что обычно является сигналом на разрыв соединения.

14. Модем сбросом сигнала DSR сообщает о разрыве соединения.

Из рассмотрения этой последовательности становятся понятными соединения DTR-DSR и RTS-CTS в нуль-модемных кабелях.

При асинхронной передаче (рис. 4) каждому байту предшествует старт-бит, сигнализирующий приемнику о начале посылки, за которым следуют биты данных и, возможно, бит паритета (четности). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена.

Формат асинхронной посылки позволяет выявлять возможные ошибки передачи: ложный старт-бит, потерянный стоп-бит, ошибку паритета. Контроль формата позволяет обнаружить разрыв линии: при этом принимается логический нуль, который сначала трактуется как старт-бит и нулевые биты данных, потом срабатывает контроль стоп-бита.

Рис. 4. Формат асинхронной передачи

Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 и 115 200 бит/с. Иногда вместо единицы измерения бит/с используют бод (baud), но при рассмотрении двоичных передаваемых сигналов это некорректно. В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз.

Количество бит данных может составлять 5, 6, 7 или 8. Количество стоп-бит может быть 1, 1,5 или 2 (полтора бита означает только длительность стопового интервала).

Асинхронный режим является байт-ориентированным (символьно- ориентированным) – минимальная пересылаемая единица информации – байт (символ). В отличие от него синхронный режим (не поддерживается CОМ-портами) является бит-ориентированным – кадр, пересылаемый по нему, может иметь произвольное количество бит.

В предыдущем уроке я перечислил параметры интерфейсов, которые в большей мере влияют на помехоустойчивость. На первое место я поставил уровень сигналов в линии связи. Чем больше амплитуда сигнала, тем труднее помехе исказить сигнал до недопустимого состояния. Например, в стандартном интерфейсе UART:

  • уровень логического 0 около 0 В;
  • уровень логической 1 около 5 В;
  • порог срабатывания входов приблизительно 2,5 В.

Значит, для того чтобы вызвать ложное срабатывание помехе или наводке, достаточно изменить напряжение в контуре передачи на 2,5 В (5 – 2,5 В или 0 + 2,5 В).

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

Общее описание интерфейса RS-232.

Это один из самых распространенных в недавнем прошлом интерфейсов. Он был штатным устройством в любом персональном компьютере. В компьютерах RS-232 называется COM портом, в переводе - коммуникационный интерфейс. Практически вся аппаратура подключалась к компьютеру через COM порт.

Как правило, RS-232 присутствует и на современных системных платах. Часто он просто не выведен на заднюю стенку системного блока. Если же на компьютере нет COM порта, то его всегда можно реализовать с помощью простого преобразователя USB-COM, обычно встроенного в кабель.

Схема подключения устройств через RS-232 ничем не отличается от схемы для интерфейсов UART.

В минимальном варианте это два сигнала с общим проводом. Даже названия у сигналов такие же, как у UART.

Единственное отличие это уровни напряжения сигналов. Для RS-232 приняты следующие параметры:

Обычно логическим уровням сигнала 0/1 соответствуют напряжения +12 /- 12 В. Пороги срабатывания приемника четко нормированы: 0/1 соответствуют напряжениям +3 / -3 В. В диапазоне -3 … +3 В состояние сигнала считается неопределенным. Оно остается прежним до тех пор, пока уровень сигнала не достигнет противоположного порога.

При таких параметрах сигналов, для того чтобы вызвать ложное срабатывание помеха должна навести в контур передачи напряжение:

  • + 15 В для состояния логической 1 (-12 В увеличить до + 3 В);
  • - 15 В для состояния логического 0 (+12 В уменьшить до - 3 В).

Сравните с аналогичным значением напряжения помехи для UART, равным 2,5 В. Увеличение амплитуды сигналов и порога срабатывания одинаково благоприятно сказывается на всех видах помех:

  • помехи и наводки от внешних электромагнитных полей;
  • взаимное влияние линия связи:
  • земляные помехи и токи утечек в общем проводе.

Все остальные проблемы UART остаются в RS-232:

  • отсутствие гальванической развязки;
  • общий провод, который не позволяет эффективно использовать витые пары;
  • помехи по контуру заземления.

Можно привести схему влияния помех на сигналы в линиях связи RS-232. Эта абсолютно та же схема из предыдущего урока для интерфейса UART.

Тем не менее, одно повышение уровня сигналов позволило значительно увеличить максимальную длину линии связи. Стандарт RS-232 нормирует максимально допустимое расстояние между абонентами 15 м. И это для соединения простыми неэкранированными проводами.

В зависимости от конкретных условий (экранированных проводов, снижения скорости передачи, общей земли и т.п.) расстояние между устройствами может достигать нескольких десятков метров.

Параметры интерфейса RS-232.

Есть отечественные, еще советские ГОСТы. В них интерфейс RS-232 назван ”Стык С2”, очевидно из идеологических соображений.

Основные параметры я свел в таблицу.

Параметр Значение
Топология Радиальный интерфейс
Линия связи Сигналы (2-8) с общим проводом
Гальваническая развязка нет
Скорость передачи до 460 кбит в сек
Максимальная длина линии связи 15 м
Приемник
Напряжение логического 0 более + 3 В
Напряжение логической 1 менее – 3 В
Входное сопротивление 3000 … 7000 Ом
Входное напряжение ± 3 … ± 15 В
Входная емкость не более 2500 пкФ
Передатчик
Короткое замыкание и обрыв Допускаются без ограничения во времени
Выходное напряжение в разомкнутой цепи не более ± 15 В
Ток короткого замыкания не более 0,5 А
до 2500 пкФ

Разъемы интерфейса RS-232.

Кроме известных нам сигналов TxD и RxD стандарт на интерфейс описывает еще несколько необязательных сигналов, предназначенных для управления потоком данных. В компьютерном COM порте эти сигналы реализованы. Ими можно произвольно управлять из программы.

Как правило, дополнительные сигналы используются как универсальные входы и выходы. Например, сигнал DTR сбрасывает микроконтроллер плат Ардуино при загрузке программы из Arduino IDE. Я не буду подробно описывать их стандартное назначение.

Первоначально в интерфейсе RS-232 применялись 25 контактные разъемы DB-25. Затем стандартным разъемом стал 9 контактный DB-9.

В настоящее время стандартным разъемом интерфейса RS-232 является DB-9.

В обоих случаях со стороны блочной части используются вилки, а кабельная часть это розетки.

В таблице приведено назначение контактов RS-232 для обоих типов разъемов.

Контакт для DB-25 Контакт для DB-9 Название сигнала Направление Описание
8 1 DCD вход Наличие несущей. Уровень принимаемого сигнала в норме, модем подключен.
3 2 RxD вход Прием данных. Данные от другого устройства.
2 3 TxD выход Передача данных. Данные передаваемые на другое устройство.
20 4 DTR выход Готовность приемника. Сообщает о готовности устройства к приему данных.
7 5 GND Общий провод
6 6 DSR вход Готовность передатчика. Устройство готово для передачи данных.
4 7 RTS выход Запрос на передачу данных. Переводит другое устройство в режим передачи данных.
5 8 CTS вход Готовность передаче. Готовность другого устройства к передаче.
22 9 RI вход Сигнал вызова. Индикатор вызова (телефонного звонка).

Схемотехническая реализация RS-232.

Для того, чтобы из интерфейса UART сделать RS-232 достаточно добавить преобразователи уровней сигналов. Преобразователи не осуществляют никаких логических действий. Они просто конвертируют сигналы логических уровней 0/5 В в уровни +12 / -12 В и наоборот.

Преобразователи можно реализовать на дискретных элементах. Вот схема приемника на базе инвертирующего транзисторного ключа.

Передатчики реализовать на дискретных элементах гораздо сложнее. Требуется двух полярный ключ и два питания к нему + 12 В и – 12 В. Иногда используют транзисторные ключи формирующие выходной сигнал 0 / 5 В. Некоторые приемники RS-232 работают с таким сигналом, некоторые нет. В любом случае нормальная работа интерфейса с такими сигналами не гарантируется.

Для реализации полноценного двухстороннего обмена лучше использовать интегральные преобразователи RS-232. Их существует множество. Я предпочитаю микросхемы MAX232, SP232, ADM232.

Микросхема Производитель Ссылка на документацию
MAX232 Maxim Integrated Products
SP232 Sipex
ADM232 Analog Devices

Это микросхемы разных производителей, но с одинаковыми функциями, параметрами, назначением выводов. Я собираюсь сделать их обзор в разделе электронные компоненты.

В 16 выводном корпусе реализованы преобразователи уровней для 2 входных и 2 выходных сигналов RS-232. Питаются преобразователи от одного напряжения 5 В. Необходимые для передатчиков напряжения + 12 В и – 12 В вырабатываются на внутренних конденсаторных инверторах. Микросхема требует подключения 5 внешних компонентов, все конденсаторы.

Подключение платы Ардуино через интерфейс RS-232.

Думаю после всего выше написанного подключение платы Ардуино к компьютеру или соединение плат Ардуино между собой через RS-232 не вызовет никаких проблем.

Надо добавит к плате преобразователь уровней RS-232. Можно использовать готовый модуль, например, этот.

Программы из уроков 48 и 49 должны без проблем работать с RS-232. Мы ничего не поменяли в логике работы сети. Изменили только уровни сигналов.

Интерфейс RS-422.

Очень коротко расскажу об этом интерфейсе. Он применяется крайне редко.

Это радиальный интерфейс, в котором передача сигналов происходит дифференциальным способом. Для подключения каждого сигнала используется витая пара из двух проводов (линий). Передатчики формируют на линиях противофазные логические уровни, а приемники воспринимают разность напряжения между линиями. В результате значительно повышается помехоустойчивость системы.

Способ передачи сигналов, электрические параметры RS-422 полностью соответствуют требованиям интерфейса RS-485. Отличие только в том, что RS-422 радиальный интерфейс, а RS-485 – шинный. Через первый можно связать только 2 устройства между собой, а вторым интерфейсом можно соединить одной линией связи несколько устройств.

Подробно об этом всем я расскажу в уроке про RS-485. А сейчас коротко приведу основные параметры RS-422.

В следующем уроке расскажу об интерфейсе ИРПС, очень простом, но эффективном способе передачи данных.

Последовательный интерфейс RS-232 — это промышленный стандарт для последовательной двунаправленной асинхронной передачи данных. Ранее использовался в персональных компьютерах для подключения принтеров, модемов, мыши и пр. В настоящее время активно вытесняется пришедшим ему на смену интерфейсом USB, однако в микроконтроллерных системах — это один из наиболее часто встречающихся интерфейсов.

Спецификации RS-232C не огpаничивают максимальнyю длинy кабеля, но огpаничивают максимальное значение его емкости величиной 2500 пф. Емкость интеpфейсных кабелей pазлична, однако общепpинятой длиной yдовлетвоpяющей данной спецификации считается длина 15 метров (до 20000 бод) Чем выше скоpость пеpедачи, тем больше искажения сигнала, вызванные емкостными хаpактеpистиками кабеля.

Выпyскаются специальные интеpфейсные кабели пpямой связи RS-232C низкой емкости, котоpые yдовлетвоpительно pаботают со скоpостью 9600 бод на pасстоянии до 150 м.

Число подключаемых пpиемников и пеpедатчиков подключаемых к одной линии — 1/1, (в отличие от стандаpтов RS-422 1 передатчик/ 10 пpиемников или RS-485 32/32).

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

Последовательная передача данных

Последовательный поток данных состоит из битов синхронизации и собственно битов данных. Формат последовательных данных содержит четыре части: стартовый бит, биты данных (5-8 бит), проверочный и стоповый биты; вся эта конструкция иногда называется символом . На рисунке изображен типичный формат последовательных данных.

Формат последовательных данных, формируемых UART

Когда данные не передаются, на линии устанавливается уровень логической единицы. Это называется режимом ожидания . Начало режима передачи данных характеризуется передачей уровня логического нуля длительностью в одну элементарную посылку. Такой бит называется стартовым . Биты данных посылаются последовательно, причем младший бит — первым; всего их может быть от пяти до восьми. За битами данных следует проверочный бит, предназначенный для обнаружения ошибок, которые возникают во время обмена данными. Последней передается стоповая посылка, информирующая об окончании символа. Стоповый бит передается уровнем логической единицы. Длительность стоповой посылки — 1, 1.5 или 2 тактовых интервала. Электронное устройство, которое генерирует и принимает последовательные данные, называется универсальным асинхронным приемопередатчиком (Universal Asynchronous Receiver Transmitter, или UART).

Обмен информацией с помощью UART происходит следующим образом:

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

Скорость передачи информации в последовательном интерфейсе измеряется в бодах (бод — количество передаваемых битов за 1 секунду). Стандартные скорости равны 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200 бод и т.д. Зная скорость в бодах, можно вычислить число передаваемых символов в секунду. Например, если имеется восемь бит данных без проверки на четность и один стоповый бит, то общая длина последовательности, включая стартовый бит, равна 10. Скорость передачи символов соответствует скорости в бодах, деленной на 10. Таким образом, при скорости 9600 бод (см.рисунок выше) будет передаваться 960 символов в секунду.

Проверочный бит предназначен для обнаружения ошибок в передаваемых битах данных. Когда он присутствует, осуществляется проверка на четность или нечетность. Если интерфейс настроен на проверку по четности, такой бит будет выставляться в единицу при нечетном количестве единиц в битах данных, и наоборот. Это простейший пособ проверки на наличие одиночных ошибок в передаваемом блоке данных. Однако, если во время передачи искажению подверглись несколько битов, подобная ошибка не обнаруживается. Проверочный бит генерируется передающим UART таким образом, чтобы общее количество удиниц было нечетным или четным числом в зависимости от настройки интерфейса; приемное устройство должно иметь такую же настройку. Приемный UART считает количество единиц в принятых данных. Если данные не проходят проверку, генерируется сигнал ошибки.

В UART применяются уровни напряжения ТТЛ. Для передачи данных по каналу связи напряжение с помощью специализированных преобразователей конвертируется с инверсией: логическому нулю соответствует диапазон напряжений от +3 до +12В, логической единице — от -3 до -12В.

Разъемы RS-232 и соединение устройств

Основными разъемами, применяемыми с портом RS-232 являются DB-9S и DB-25S. На рисунке показана распиновка разъема DB-9.

Номера пинов 9-контактного разъема

а в таблице показано соответсвие сигналов контактам RS-232 для 9-ти и 25-ти контактных разъемов и их функции на компьютере

25 контактов 9 контактов Наименование Направление Описание
1 PROT Защитное заземление
2 3 TD Выход Передаваемые данные
3 2 RD Вход Принимаемые данные
4 7 RTS Выход Запрос на передачу
5 8 CTS Вход Очищен для передачи
6 6 DSR Вход Готовность внешнего устройства
7 5 GND Сигнальное заземление
8 1 DCD Вход Обнаружение информационного сигнала
20 4 DTR Выход Готовность к обмену данными
22 9 RI Вход Индикатор звонка
23 DSRD Вход/Выход Детектор скорости передачи данных

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

Соединение устройств по протоколу RS-232

В системах с используется второй тип соединения.

Назначение сигналов

Сигнал Назначение
PROT Защитное заземление. Соединяется с металлическим экраном кабеля и корпусом оборудования
GND Линия заземления. Общий провод для всех сигналов
TD Передаваемые данные. Последовательные данные передаются компьютером по этой линии
RD Принимаемые данные. Последовательные данные принимаются компьютером по этой линии
RTS Запрос на передачу. Линия взаимодействия, которая показывает, что компьютер готов к приему данных. Линия управляется со стороны компьютера; если взамодействия не требуется, она может использоваться как двоичный выход
CTS Готовность к передаче. Линия взаимодействия, с помощью которой внешнее устройство сообщает компьютеру, что оно готово к передаче данных. Если взаимодействия не требуется, она может использоваться как двоичный вход
DTR Компьютер готов. Линия взаимодействия показывает, что компьютер включен и готов к связи. Линия управляется со стороны компьютера; если взаимодействия не требуется, она может использоваться как двоичный выход
DSR Готовность внешнего устройства. Линия взаимодействия, с помощью которой внешнее устройство сообщает компьютеру, что оно включено и готово к связи. Если взаимодействия не требуется, она может использоваться как двоичный вход

Интерфейс RS-232C предназначен для подключения аппаратуры, передающей или принимающей данные (ООД - оконечное оборудование данных, или АПД - аппаратура передачи данных; DTE - Data Terminal Equipment), к оконечной аппаратуре каналов данных (АКД; DCE - Data Communication Equipment). В роли АПД может выступать компьютер, принтер, плоттер и другое периферийное оборудование. В роли АКД обычно выступает модем. Конечной целью подключения является соединение двух устройств АПД. Полная схема соединения приведена на рис. 1; интерфейс позволяет исключить канал удаленной связи вместе с парой устройств АКД, соединив устройства непосредственно с помощью нуль-модемного кабеля (рис. 2).

Рис.1. Полная схема соединения по RS-232C


Рис.2. Соединение по RS-232C нуль-модемным кабелем

Стандарт описывает управляющие сигналы интерфейса, пересылку данных, электрический интерфейс и типы разъемов. В стандарте предусмотрены асинхронный и синхронный режимы обмена, но COM-порты поддерживают только асинхронный режим. Функционально RS-232C эквивалентен стандарту МККТТ V.24/ V.28 и стыку С2, но они имеют различные названия сигналов.

Стандарт RS-232C описывает несимметричные передатчики и приемники - сигнал передается относительно общего провода - схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах - например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице (состояние MARK) на входе данных (сигнал RxD) соответствует диапазон напряжения от –12 до –3 В; логическому нулю - от +3 до +12 В (состояние SPACE). Для входов управляющих сигналов состоянию ON (“включено”) соответствует диапазон от +3 до +12 В, состоянию OFF (“выключено”) - от –12 до –3 В. Диапазон от –3 до +3 В - зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения порога (рис. 3). Уровни сигналов на выходах передатчиков должны быть в диапазонах от –12 до –5 В и от +5 до +12 В. Разность потенциалов между схемными землями (SG) соединяемых устройств должна быть менее 2 В, при более высокой разности потенциалов возможно неверное восприятие сигналов. Заметим, что сигналы уровней ТТЛ (на входах и выходах микросхем UART) передаются в прямом коде для линий TxD и RxD и в инверсном - для всех остальных.

Интерфейс предполагает наличие защитного заземления для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры.

ВНИМАНИЕ

Подключение и отключение интерфейсных кабелей устройств с автономным питанием должно производиться при отключенном питании. Иначе разность невыровненных потенциалов устройств в момент коммутации может оказаться приложенной выходным или входным (что опаснее) цепям интерфейса и вывести из строя микросхемы.

Стандарт RS-232C регламентирует типы применяемых разъемов.

На аппаратуре АПД (в том числе на COM-портах) принято устанавливать вилки DB-25P или более компактный вариант - DB-9P. Девятиштырьковые разъемы не имеют контактов для дополнительных сигналов, необходимых для синхронного режима (в большинстве 25-штырьковых разъемах эти контакты не используются).

На аппаратуре АКД (модемах) устанавливают розетки DB-25S или DB-9S.

Это правило предполагает, что разъемы АКД могут подключаться к разъемам АПД непосредственно или через переходные “прямые” кабели с розеткой и вилкой, у которых контакты соединены “один в один”. Переходные кабели могут являться и переходниками с 9 на 25-штырьковые разъемы (рис. 4).

Если аппаратура АПД соединяется без модемов, то разъемы устройств (вилки) соединяются между собой нуль-модемным кабелем (Zero-modem, или Z-modem), имеющим на обоих концах розетки, контакты которых соединяются перекрестно по одной из схем, приведенных на рис. 5.


Рис. 3. Прием сигналов RS-232C

Рис. 4. Кабели подключения модемов


Рис. 5. Нуль-модемный кабель: а - минимальный, б - полный

Если на каком-либо устройстве АПД установлена розетка - это почти 100 % того, что к другому устройству оно должно подключаться прямым кабелем, аналогичным кабелю подключения модема. Розетка устанавливается обычно на тех устройствах, у которых удаленное подключение через модем не предусмотрено.

В табл. 1 приведено назначение контактов разъемов COM-портов (и любой другой аппаратуры передачи данных АПД). Контакты разъема DB-25S определены стандартом EIA/TIA-232-E, разъем DB-9S описан стандартом EIA/TIA-574. У модемов (АКД) название цепей и контактов такое же, но роли сигналов (вход-выход) меняются на противоположные.

Таблица 1. Разъемы и сигналы интерфейса RS-232C

Обозначение цепи

Контакт разъема

№ провода кабеля выносного разъема PC

Направление

1 Ленточный кабель 8-битных мультикарт.
2 Ленточный кабель 16-битных мультикарт и портов на системных платах.
3 Вариант ленточного кабеля портов на системных платах.
4 Широкий ленточный кабель к 25-контактному разъему.

Подмножество сигналов RS-232C, относящихся к асинхронному режиму, рассмотрим с точки зрения COM-порта PC. Для удобства будем пользоваться мнемоникой названий, принятой в описаниях COM-портов и большинства устройств (она отличается от безликих обозначений RS-232 и V.24). Напомним, что активному состоянию управляющих сигналов (“включено”) и нулевому значению бита передаваемых данных соответствует положительный потенциал (выше +3 В) сигнала интерфейса, а состоянию “выключено” и единичному биту - отрицательный (ниже –3 В). Назначение сигналов интерфейса приведено в табл. 2. Нормальную последовательность управляющих сигналов для случая подключения модема к COM-порту иллюстрирует рис. 6.

Таблица 2. Назначение сигналов интерфейса RS-232C

Назначение

Protected Ground - защитная земля, соединяется с корпусом устройства и экраном кабеля

Signal Ground - сигнальная (схемная) земля, относительно которой действуют уровни сигналов

Transmit Data - последовательные данные - выход передатчика

Receive Data - последовательные данные - вход приемника

Request To Send - выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением - состояние “включено” служит сигналом модему на переключение в режим передачи

Clear To Send - вход разрешения терминалу передавать данные. Состояние “выключено” запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных

Data Set Ready - вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)

Data Terminal Ready - выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения

Data Carrier Detected - вход сигнала обнаружения несущей удаленного модема

Ring Indicator - вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова


Рис. 6. Последовательность управляющих сигналов интерфейса

  1. Установкой DTR компьютер указывает на желание использовать модем.
  2. Установкой DSR модем сигнализирует о своей готовности и установлении соединения.
  3. Сигналом RTS компьютер запрашивает разрешение на передачу и заявляет о своей готовности принимать данные от модема.
  4. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию.
  5. Снятием CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) - компьютер должен приостановить передачу данных.
  6. Сигналом CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место).
  7. Снятие RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер.
  8. Модем подтверждает снятие RTS сбросом CTS.
  9. Компьютер повторно устанавливает RTS для возобновления передачи.
  10. Модем подтверждает готовность к этим действиям.
  11. Компьютер указывает на завершение обмена.
  12. Модем отвечает подтверждением.
  13. Компьютер снимает DTR, что обычно является сигналом на разрыв соединения (“повесить трубку”).
  14. Модем сбросом DSR сигнализирует о разрыве соединения.

Из рассмотрения этой последовательности становятся понятными соединения DTR–DSR и RTS–CTS в нуль-модемных кабелях.

Асинхронный режим передачи

Асинхронный режим передачи является байт-ориентированным (символьно-ориентированным): минимальная пересылаемая единица информации - один байт (один символ). Формат посылки байта иллюстрирует рис. 7. Передача каждого байта начинается со старт-бита, сигнализирующего приемнику о начале посылки, за которым следуют биты данных и, возможно, бит четности (Parity). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена. Внутренний генератор синхронизации приемника использует счетчик-делитель опорной частоты, обнуляемый в момент приема начала старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале стробы располагаются в середине битовых интервалов, что позволяет принимать данные и при незначительном рассогласовании скоростей приемника и передатчика. Очевидно, что при передаче 8 бит данных, одного контрольного и одного стоп-бита предельно допустимое рассогласование скоростей, при котором данные будут распознаны верно, не может превышать 5 %. С учетом фазовых искажений и дискретности работы внутреннего счетчика синхронизации реально допустимо меньшее отклонение частот. Чем меньше коэффициент деления опорной частоты внутреннего генератора (чем выше частота передачи), тем больше погрешность привязки стробов к середине битового интервала, и требования к согласованности частот становятся более строгие. Чем выше частота передачи, тем больше влияние искажений фронтов на фазу принимаемого сигнала. Взаимодействие этих факторов приводит к повышению требований к согласованности частот приемника и передатчика с ростом частоты обмена.


Рис.7. Формат асинхронной передачи RS-232C

Формат асинхронной посылки позволяет выявлять возможные ошибки передачи.

  • Если принят перепад, сигнализирующий о начале посылки, а по стробу старт-бита зафиксирован уровень логической единицы, старт-бит считается ложным и приемник снова переходит в состояние ожидания. Об этой ошибке приемник может не сообщать.
  • Если во время, отведенное под стоп-бит, обнаружен уровень логического нуля, фиксируется ошибка стоп-бита.
  • Если применяется контроль четности, то после посылки бит данных передается контрольный бит. Этот бит дополняет количество единичных бит данных до четного или нечетного в зависимости от принятого соглашения. Прием байта с неверным значением контрольного бита приводит к фиксации ошибки.
  • Контроль формата позволяет обнаруживать обрыв линии: как правило, при обрыве приемник “видит” логический нуль, который сначала трактуется как старт-бит и нулевые биты данных, но потом срабатывает контроль стоп-бита.

Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бит/с. Иногда вместо единицы измерения “бит/с” используют “бод” (baud), но при рассмотрении двоичных передаваемых сигналов это некорректно. В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз.

Количество бит данных может составлять 5, 6, 7 или 8 (5- и 6-битные форматы распространены незначительно). Количество стоп-бит может быть 1, 1,5 или 2 (“полтора бита” означает только длительность стопового интервала).

Управление потоком данных

Для управления потоком данных (Flow Control) могут использоваться два варианта протокола - аппаратный и программный. Иногда управление потоком путают с квитированием. Квитирование (handshaking) подразумевает посылку уведомления о получении элемента, в то время как управление потоком предполагает посылку уведомления о возможности или невозможности последующего приема данных. Зачастую управление потоком основано на механизме квитирования.

Аппаратный протокол управления потоком RTS/CTS (hardware flow control) использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему (рис. 8). Передатчик “выпускает” очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части - сдвигающий, для приема очередной посылки, и хранящий, из которого считывается принятый байт. Это позволяет реализовать обмен по аппаратному протоколу без потери данных.


Рис.8. Аппаратное управление потоком

Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они его поддерживают. При непосредственном (без модемов) соединении двух компьютеров аппаратный протокол требует перекрестного соединения линий RTS - CTS.

При непосредственном соединении у передающего терминала должно быть обеспечено состояние “включено” на линии CTS (соединением собственных линий RTS - CTS), в противном случае передатчик будет “молчать”.

Применяемые в IBM PC приемопередатчики 8250/16450/16550 сигнал CTS аппаратно не отрабатывают, а только показывают его состояние в регистре MSR. Реализация протокола RTS/CTS возлагается на драйвер BIOS Int 14h, и называть его “аппаратным” не совсем корректно. Если же программа, пользующаяся COM-портом, взаимодействует с UART на уровне регистров (а не через BIOS), то обработкой сигнала CTS для поддержки данного протокола она занимается сама. Ряд коммуникационных программ позволяет игнорировать сигнал CTS (если не используется модем), и для них не требуется соединение входа CTS с выходом даже своего сигнала RTS. Однако существуют и иные приемопередатчики (например, 8251), в которых сигнал CTS отрабатывается аппаратно. Для них, а также для “честных” программ, использование сигнала CTS на разъемах (а то и на кабелях) обязательно.

Программный протокол управления потоком XON/XOFF предполагает наличие двунаправленного канала передачи данных. Работает протокол следующим образом: если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11h), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рис. 9). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).


Рис.9. Программное управление потоком XON/XOFF

Преимущество программного протокола заключается в отсутствии необходимости передачи управляющих сигналов интерфейса - минимальный кабель для двустороннего обмена может иметь только 3 провода (см. рис. 5, а). Недостатком, помимо обязательного наличия буфера и большего времени реакции (снижающего общую производительность канала из-за ожидания сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока принимаемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.

Кроме этих двух распространенных стандартных протоколов, поддерживаемых и ПУ, и ОС, существуют и другие.