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

  • Tutorial

Вместо вступления

Как обычно я предлагаю заняться странным - попробовать подключить несколько старых RS232 устройств, через один USB порт с помощью синей изоленты и смекалки. Статья не будет большой, скорее это описание что где взять и зачем вообще все это делать.

Зачем?

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

Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.

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

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

Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.

Пробуем что-то сделать

Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.

Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.

High level

Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.

В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).

Разница заключается в том что в Windows можно обратится напрямую к USB устройству даже если оно зарегистрировано как HID и писать\читать его конечные точки (endpoint). В Linux же приходится работать с hid устройством. То есть устанавливается стандартный драйвер hid и всё, работайте только с ним пожалуйста. Работа таким образом происходит немного медленнее чем напрямую, но напрямую тоже возможно если убедить систему не ставить драйвера. Это реально.

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

Заключение

Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.

Не забываем плюсовать

Строго говоря, кабель RS-232 - это наименование стандарта, описывающего интерфейс соединения с компьютера с устройством RS - recommended standard, переводится как "рекомендованный стандарт", а 232 - номер типа. Он был разработан еще в 60-х годах прошлого века. Сегодня новая редакция этого стандарта, которую приняли в 1991 году ассоциации телекоммуникационной и носит название EIA/TIA-232-E. Однако большинство людей продолжают использовать название "кабель RS-232", которое намертво "приросло" к интерфейсу.

Указанный выше интерфейс обеспечивает соединение следующих устройств: DTE (Data Terminal Equipment) — ООД (Оконечное Оборудование Данных), и DCE (Data Communications Equipment) — ОПД (Оборудование Передачи Данных). Под ООД обычно подразумевается персональный компьютер, а под ОПД - модем. Хотя кабель RS-232 используется также для подключения к ПЕОМ других периферийных устройств (принтер, мышь и т. д.), а также для соединения с другими компьютерами или контроллерами. Важно помнить обозначения DCE и DTE, так как они используются в наименованиях сигналов интерфейсов и помогают разбираться с описанием требуемой реализации устройства.

Изначально кабель RS-232 имел 25-контактный соединитель типа DB25. Устройство типа DTE оснащалось разъемом-розеткой («мама»). Позднее стали использовать «урезанный» вариант интерфейса с 9-контактными соединителями DB9. Такой вид кабеля распространен и в наши дни.

Распайка кабеля RS-232

Ниже приводится назначение выводов 9-контактнго соединителя типа DB9. Перечень показывает распайку разъема («папа») оборудования обработки данных, например персонального компьютера. Розетка прибора передачи данных распаивается таким образом, что оба разъема стыкуются через кабель или напрямую «контакт в контакт».

1. Carrier Detect - наличие несущей частоты.

2. Received Data - принимаемые данные.

3. Transmitted Data - передаваемые данные.

4. Data Terminal Ready - готовность ООД.

5. Signal Ground - общий.

6. Data Set Read - готовность ОПД.

7. Request To Send - запрос на передачу.

8. ClearToSend - готов передавать.

9. Ring Indicator - наличие сигнала вызова.

Данные передаются по цепям RD и TD. Остальные цепи предназначаются для отображения состояния DTR и DSR устройств, управления передачей CTS и RTS, а также индикации состояния RI и CD линий. Только при подключении к персональному компьютеру внешнего модема используется полный набор цепей. При подключении других таких как контроллеры или мыши, используются выборочные цепи, необходимые для конкретного оборудования. Они зависят от программной и аппаратной реализации устройства.

Описание и технические параметры

Стандарт четко определяет максимально возможную длину кабеля RS-232 - 15 метров со скоростью передачи данных 9600 бит/с. Однако на практике проверено, что устойчивая работа достигается и при большей длине провода. Считается, что при применении неэкранированного кабеля можно увеличить длину до 30 метров, а при использовании экранированного - до 75 метров. И это без потери Если же понизить скорость примерно вдвое, то длина кабеля увеличивается также вдвое. Рекомендуется использовать кабель на основе в таком случае каждый сигнальный провод состоит в паре с общим проводом. Не рекомендуется объединять экран кабеля с общим сигнальным.

Часто можно встретить кабель RS-232- USB. Он представляет собой стандартный интерфейс, на одном из концов которого используется

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

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

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

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

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

Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 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ОМ-портами) является бит-ориентированным – кадр, пересылаемый по нему, может иметь произвольное количество бит.

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

Общее описание

Интерфейс RS-232, совсем официально называемый "EIA/TIA-232-E", но более известный как интерфейс "COM-порта", ранее был одним из самых распространенных интерфейсов в компьютерной технике. Он до сих пор встречается в настольных компьютерах, несмотря на появление более скоростных и "интеллектуальных" интерфейсов, таких как USB и FireWare. К его достоинствам с точки зрения радиолюбителей можно отнести невысокую минимальную скорость и простоту реализации протокола в самодельном устройстве.

Физический интерфейс реализуется одним из двух типов разъемов: DB-9M или DB-25M, последний в выпускаемых в настоящее время компьютерах практически не встречается.

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


9-контактная вилка типа DB-9M
Нумерация контактов со стороны штырьков
Направление сигналов указано относительно хоста (компьютера)
Контакт Сигнал Направление Описание
1 CD Вход Обнаружена несущая
2 RXD Вход Принимаемые данные
3 TXD Выход Передаваемые данные
4 DTR Выход Хост готов
5 GND - Общий провод
6 DSR Вход Устройство готово
7 RTS Выход Хост готов к передаче
8 CTS Вход Устройство готово к приему
9 RI Вход Обнаружен вызов

Назначение выводов 25-контактного разъема

Контакт Сигнал Направление Описание
1 SHIELD - Экран
2 TXD Выход Передаваемые данные
3 RXD Вход Принимаемые данные
4 RTS Выход Хост готов к передаче
5 CTS Вход Устройство готово к приему
6 DSR Вход Устройство готово
7 GND - Общий провод
8 CD Вход Обнаружена несущая
9 - - Резерв
10 - - Резерв
11 - - Не используется
12 SCD Вход Обнаружена несущая #2
13 SCTS Вход Устройство готово к приему #2
Контакт Сигнал Направление Описание
14 STXD Выход Передаваемые данные #2
15 TRC Вход Тактирование передатчика
16 SRXD Вход Принимаемые данные #2
17 RCC Вход Тактирование приемника
18 LLOOP Выход Локальная петля
19 SRTS Выход Хост готов к передаче #2
20 DTR Выход Хост готов
21 RLOOP Выход Внешняя петля
22 RI Вход Обнаружен вызов
23 DRD Вход Определена скорость данных
24 TRCO Выход Тактирование внешнего передатчика
25 TEST Вход Тестовый режим

Из таблиц видно, что 25-контактный интерфейс отличается наличием полноценного второго канала приема-передачи (сигналы, обозначенные "#2"), а также многочисленных дополнительных управляющих и контрольных сигналов. Однако, часто, несмотря на наличие в компьютере "широкого" разъема, дополнительные сигналы на нем просто не подключены.

Электрические характеристики

Логические уровни передатчика: "0" - от +5 до +15 Вольт, "1" - от -5 до -15 Вольт.

Логические уровни приемника: "0" - выше +3 Вольт, "1" - ниже -3 Вольт.

входное сопротивление приемника не менее 3 кОм.

Данные характеристики определены стандартом как минимальные, гарантирующие совместимость устройств, однако реальные характеристики обычно существенно лучше, что позволяет, с одной стороны, питать маломощные устройства от порта (например, так спроектированы многочисленные самодельные data-кабели для сотовых телефонов), а с другой - подавать на вход порта инвертированный TTL-уровень вместо двуполярного сигнала.

Описание основных сигналов интерфейса

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

RXD - Линия приема хостом данных от устройства. Подробно описана в разделе "Протокол обмена данными".

TXD - Линия передачи хостом данных к устройству. Подробно описана в разделе "Протокол обмена данными".

DTR - Хост устанавливает этот сигнал, когда готов к обмену данными. Фактически сигнал устанавливается при открытии порта коммуникационной программой и остается в этом состоянии все время, пока порт открыт.

DSR - Устройство устанавливает этот сигнал, когда включено и готово к обмену данными с хостом. Этот и предыдущий (DTR) сигналы должны быть установлены для обмена данными.

RTS - Хост устанавливает этот сигнал перед тем, как начать передачу данных устройству, а также сигнализирует о готовности к приему данных от устройства. Используется при аппаратном управлении обменом данными.

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

RI - Устройство (обычно модем) устанавливает этот сигнал при получении вызова от удаленной системы, например при приеме телефонного звонка, если модем настроен на прием звонков.

Протокол обмена данными

В протоколе RS-232 существуют два метода управления обменом данных: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).

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

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

Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается .

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

Один из возможных алгоритмов работы приемника следующий:

  1. Ожидать уровня "0" сигнала приема (RXD в случае хоста, TXD в случае устройства).
  2. Отсчитать половину длительности бита и проверить, что уровень сигнала все еще "0"
  3. Отсчитать полную длительность бита и текущий уровень сигнала записать в младший бит данных (бит 0)
  4. Повторить предыдущий пункт для всех остальных битов данных
  5. Отсчитать полную длительность бита и текущий уровень сигнала использовать для проверки правильности приема с помощью контроля четности (см. далее)
  6. Отсчитать полную длительность бита и убедиться, что текущий уровень сигнала "1".

В предыдущем уроке я перечислил параметры интерфейсов, которые в большей мере влияют на помехоустойчивость. На первое место я поставил уровень сигналов в линии связи. Чем больше амплитуда сигнала, тем труднее помехе исказить сигнал до недопустимого состояния. Например, в стандартном интерфейсе 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.

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