Ком-порт или последовательный порт — это двунаправленный интерфейс для передачи байтовой информации. В отличие от параллельных портов, информация передается через него по одному биту. Зачем нужен ком-порт и что можно подключить к нему? Как узнать, чем занят конкретный порт, и какую скорость передачи данных выбрать? Обо всем этом подробнее в нашей статье.
- Для чего нужен ком-порт: применение в различных областях
- Интерфейс COM на материнской плате: для чего он нужен
- Как узнать, чем занят ком-порт
- Какую скорость передачи данных выбрать
- Полезные советы и рекомендации
- Выводы
Для чего нужен ком-порт: применение в различных областях
С помощью ком-порта можно соединить два компьютера, используя нуль-модемный кабель. Этот кабель необходим для передачи файлов с одного компьютера на другой. В UNIX ком-порт используется для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра. Кроме того, ком-порты могут использоваться для подключения периферийных устройств к компьютеру: сканеров, принтеров, модемов, геймпадов, электронных весов, банкоматов и даже для диагностики автомобилей.
COM на материнской плате — это один из интерфейсов связи, который позволяет подключать периферийные устройства к компьютеру. С помощью COM-порта можно осуществлять обмен данными между компьютером и внешним оборудованием.
Что такое последовательный (COM-порт)
Последовательный порт или COM-порт (произносится «ком-порт», от англ. COMmunication port) — двунаправленный последовательный интерфейс, предназначенный для обмена байтовой информацией.
Последовательный потому, что информация через него передаётся по одному биту, бит за битом (в отличие от параллельного порта). Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C.
Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем.
9-контактный разъём COM-порта
Хотя некоторые другие интерфейсы компьютера — такие как Ethernet, FireWire и USB — также используют последовательный способ обмена, название «последовательный порт» закрепилось за портом, имеющим стандарт RS-232C, и предназначенным изначально для обмена информацией с модемом.
С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель».
Порты и перенаправлениеоткрытие портов. Инструкция и объяснения на пальцах!
Варианты разъёма COM-порта типа DB-9F
Наиболее часто используются Д-образные разъёмы: 9- и 25-контактные, (DB-9 и DB-25 соответственно).
Раньше использовались также DB-31 и круглые восьмиконтактные DIN-8.
Максимальная скорость передачи обычно составляет 115200 бит/с.
Стандарт на него был разработан в 1969 году.
В настоящее время в персональных компьютерах всё ещё встречается данный вид интерфейса, несмотря на значительное вытеснения другими портами: PS/2 (подключение мыши и клавиатуры), USB универсальная последовательная шина с питанием.
Материал из Википедии — свободной энциклопедии
Последовательный асинхронный адаптер (COM порт)
Основные понятия и термины Практически каждый компьютер оборудован хотя бы одним последовательным асинхронным адаптером. Обычно он представляет собой отдельную плату или же расположен прямо на материнской плате компьютера. Его называют еще асинхронным адаптером RS-232-C, или портом RS-232-C. Каждый асинхронный адаптер обычно содержит несколько портов RS-232-C, через которые к компьютеру можно подключать внешние устройства. Каждому такому порту соответствует несколько регистров, через которые программа получает к нему доступ, и определенная линия IRQ для сигнализирования компьютеру об изменении состояния порта. При выполнении BIOS процедуры начальной загрузки каждому порту RS-232-C присваивается логическое имя COM1 — COM4 (COM-порт номер 1 — 4). Интерфейс RS-232-C разработан ассоциацией электронной промышленности (Electronic Industries Association — EIA) как стандарт для соединения компьютеров и различных последовательных периферийных устройств. Компьютер IBM PC поддерживает интерфейс RS-232-C не в полной мере скорее разъем, обозначенный на корпусе компьютера как порт последовательной передачи данных, содержит некоторые из сигналов, входящих в интерфейс RS-232-C и имеющих соответствующие этому стандарту уровни напряжения. В настоящее время порт последовательной передачи данных используется очень широко. Вот далеко не полный список применений:
- подключение мыши;
- подключение графопостроителей (плоттеров), сканеров, принтеров, дигитайзеров;
- связь двух компьютеров через порты последовательной передачи данных;
- подключение модемов для передачи данных по телефонным линиям;
- подключение к сети персональных компьютеров.
Основные понятия и термины
Последовательная передача данных означает, что данные передаются по единственной линии. При этом биты байта данных передаются по очереди с использованием одного провода. Для синхронизации группе битов данных обычно предшествует специальный стартовый бит, после группы битов следуют бит проверки на четность и один или два стоповых бита. Иногда бит проверки на четность может отсутствовать. Сказанное иллюстрируется следующим рисунком:
Из рисунка видно, что исходное состояние линии последовательной передачи данных — уровень логической 1. Это состояние линии называют отмеченным — MARK. Когда начинается передача данных, уровень линии переходит в 0. Это состояние линии называют пустым — SPACE. Если линия находится в таком состоянии больше определенного времени, считается, что линия перешла в состояние разрыва связи — BREAK. Стартовый бит START сигнализирует о начале передачи данных. Далее передаются биты данных, вначале младшие, затем старшие.
Если используется бит четности P, то передается и он. Бит четности имеет такое значение, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой. Конечно, такой алгоритм не дает стопроцентной гарантии обнаружения ошибок. Так, если при передаче данных изменилось четное число битов, то четность сохраняется и ошибка не будет обнаружена. Поэтому на практике применяют более сложные методы обнаружения ошибок.
В самом конце передаются один или два стоповых бита STOP, завершающих передачу байта. Затем до прихода следующего стартового бита линия снова переходит в состояние MARK. Использование бита четности, стартовых и стоповых битов определяют формат передачи данных. Очевидно, что передатчик и приемник должны использовать один и тот же формат данных, иначе обмен будет невозможен. Другая важная характеристика — скорость передачи данных. Она также должна быть одинаковой для передатчика и приемника.
Скорость передачи данных обычно измеряется в бодах (по фамилии французского изобретателя телеграфного аппарата Emile Baudot — Э. Бодо). Боды определяют количество передаваемых битов в секунду. При этом учитываются и старт/стопные биты, а также бит четности. Иногда используется другой термин — биты в секунду (bps). Здесь имеется в виду эффективная скорость передачи данных, без учета служебных битов.
Аппаратная реализация
Компьютер может быть оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения материнской платы. Бывают также платы, содержащие четыре или восемь портов последовательной передачи данных. Их часто используют для подключения нескольких компьютеров или терминалов к одному, центральному компьютеру. Эти платы имеют название «мультипорт».
В основе последовательного порта передачи данных лежит микросхема Intel 8250 или ее современные аналоги — Intel 16450, 16550, 16550A. Эта микросхема является универсальным асинхронным приемопередатчиком (UART — Universal Asynchronous Receiver Transmitter). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода. Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт «выдвигается» из сдвигового регистра по битам. Аналогично имеются сдвиговый и буферный регистры приемника.
Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой UART автоматически. Регистры, управляющие асинхронным последовательным портом, будут описаны в следующей главе. К внешним устройствам асинхронный последовательный порт подключается через специальный разъем. Существует два стандарта на разъемы интерфейса RS-232-C, это DB25 и DB9. Первый разъем имеет 25, а второй 9 выводов. Приведем разводку разъема последовательной передачи данных DB25:
1 | Защитное заземление(Frame Ground, FG) | — |
2 | Передаваемые данные(Transmitted Data, TD) | Выход |
3 | Принимаемые данные(Received Data, RD) | Вход |
4 | Запрос для передачи(Request to send, RTS) | Выход |
5 | Сброс для передачи(Clear to Send, CTS) | Вход |
6 | Готовность данных(Data Set Ready, DSR) | Вход |
7 | Сигнальное заземление(Signal Ground, SG) | — |
8 | Детектор принимаемого с линии сигнала(Data Carrier Detect, DCD) | Вход |
9-19 | Не используются | — |
20 | Готовность выходных данных(Data Terminal Ready, DTR) | Выход |
21 | Не используется | — |
22 | Индикатор вызова(Ring Indicator, RI) | Вход |
23-25 | Не используются | — |
Наряду с 25-контактным разъемом часто используется 9-контактный разъем:
1 | Детектор принимаемого с линии сигнала(Data Carrier Detect, DCD) | Вход |
2 | Принимаемые данные(Received Data, RD) | Вход |
3 | Передаваемые данные(Transmitted Data, TD) | Выход |
4 | Готовность выходных данных(Data Terminal Ready, DTR) | Выход |
5 | Сигнальное заземление(Signal Ground, SG) | — |
6 | Готовность данных(Data Set Ready, DSR) | Вход |
7 | Запрос для передачи(Request to send, RTS) | Выход |
8 | Сброс для передачи(Clear to Send, CTS) | Вход |
9 | Индикатор вызова(Ring Indicator, RI) | Вход |
Только два вывода этих разъемов используются для передачи и приема данных. Остальные передают различные вспомогательные и управляющие сигналы. На практике для подсоединения того или иного устройства может понадобиться различное количество сигналов. Интерфейс RS-232-C определяет обмен между устройствами двух типов: DTE (Data Terminal Equipment — терминальное устройство) и DCE (Data Communication Equipment — устройство связи). В большинстве случаев, но не всегда, компьютер является терминальным устройством. Модемы, принтеры, графопостроители всегда являются устройствами связи. Рассмотрим теперь сигналы интерфейса RS-232-C более подробно.
Сигналы интерфейса RS-232-C
Здесь мы рассмотрим порядок взаимодействия компьютера и модема, а также двух компьютеров непосредственно соединенных друг с другом. Сначала посмотрим, как происходит соединение компьютера с модемом. Входы TD и RD используются устройствами DTE и DCE по-разному. Устройство DTE использует вход TD для передачи данных, а вход RD для приема данных. И наоборот, устройство DCE использует вход TD для приема, а вход RD для передачи данных. Поэтому для соединения терминального устройства и устройства связи выводы их разъемов необходимо соединить напрямую:
Остальные линии при соединении компьютера и модема также должны быть соединены следующим образом:
Рассмотрим процесс подтверждения связи между компьютером и модемом. В начале сеанса связи компьютер должен удостовериться, что модем может произвести вызов (находится в рабочем состоянии). Затем, после вызова абонента, модем должен сообщить компьютеру, что он произвел соединение с удаленной системой. Подробнее это происходит следующим образом. Компьютер подает сигнал по линии DTR, чтобы показать модему, что он готов к проведению сеанса связи. В ответ модем подает сигнал по линии DSR. Когда модем произвел соединение с другим, удаленным модемом, он подает сигнал по линии DCD, чтобы сообщить об этом компьютеру. Если напряжение на линии DTR падает, это сообщает модему, что компьютер не может далее продолжать сеанс связи, например из-за того что выключено питание компьютера. В этом случае модем прервет связь. Если напряжение на линии DCD падает, это сообщает компьютеру, что модем потерял связь и не может больше продолжать соединение. В обоих случаях эти сигналы дают ответ на наличие связи между модемом и компьютером.
Сейчас мы рассмотрели самый низкий уровень управлением связи — подтверждение связи. Существует более высокий уровень, который используется для управления скоростью обмена данными, но он также реализуется аппаратно. Практически управление скоростью обмена данными (управление потоком) необходимо, если производится передача больших объемов данных с высокой скоростью. Когда одна система пытается передать данные с большей скоростью, чем они могут быть обработаны принимающей системой, результатом может стать потеря части передаваемых данных. Чтобы предотвратить передачу большего числа данных, чем то, которое может быть обработано, используют управление связью, называемое «управление потоком» (flow-controll handshake). Стандарт RS-232-C определяет возможность управления потоком только для полудуплексного соединения. Полудуплексным называется соединение, при котором в каждый момент времени данные могут передаваться только в одну сторону. Однако фактически этот механизм используется и для дуплексных соединений, когда данные передаются по линии связи одновременно в двух направлениях.
Управление потоком
В полудуплексных соединениях устройство DTE подает сигнал RTS, когда оно желает передать данные. DCE отвечает сигналом по линии CTS, когда оно готово, и DTE начинает передачу данных. До тех пор, пока оба сигнала RTS и CTS не примут активное состояние, только DCE может передавать данные. При дуплексных соединениях сигналы RTS/CTS имеют противоположные значения по сравнению с теми, которые они имели для полудуплексных соединений. Когда DTE может принять данные, он подает сигнал по линии RTS. Если при этом DCE готово для принятия данных, оно возвращает сигнал CTS. Если напряжение на линиях RTS или CTS падает, то это сообщает передающей системе, что получающая система не готова для приема данных. Ниже мы приводим отрывок диалога между компьютером и модемом, происходящий при обмене данными.
Конечно, все это хорошо звучит. На практике все не так просто. Соединить компьютер и модем не составляет труда, так как интерфейс RS-232-C как раз для этого и предназначен. Но если вы захотите связать вместе два компьютера при помощи такого же кабеля, который вы использовали для связи модема и компьютера, то у вас возникнут проблемы. Для соединения двух терминальных устройств — двух компьютеров — как минимум необходимо перекрестное соединение линий TR и RD:
Однако в большинстве случаев этого недостаточно, так как для устройств DTE и DCE функции, выполняемые линиями DSR, DTR, DCD, CTS и RTS, асимметричны. Устройство DTE подает сигнал DTR и ожидает получения сигналов DSR и DCD. В свою очередь, устройство DCE подает сигналы DSR, DCD и ожидает получения сигнала DTR. Таким образом, если вы соедините вместе два устройства DTE кабелем, который вы использовали для соединения устройств DTE и DCE, то они не смогут договориться друг с другом. Не выполнится процесс подтверждения связи.
Теперь перейдем к сигналам RTS и CTS, управления потоком данных. Иногда для соединения двух устройств DTE эти линии соединяют вместе на каждом конце кабеля. В результате получаем то, что другое устройство всегда готово для получения данных. Поэтому, если при большой скорости передачи принимающее устройство не успевает принимать и обрабатывать данные, возможна потеря данных. Чтобы решить все эти проблемы для соединения двух устройств типа DTE используется специальный кабель, в обиходе называемый нуль-модемом. Имея два разъема и кабель, вы легко можете спаять его самостоятельно, руководствуясь следующими схемами.
Для полноты картины рассмотрим еще один аспект, связанный с механическим соединением портов RS-232-C. Из-за наличия двух типов разъемов — DB25 и DB9 — часто бывают нужны переходники с одного типа разъемов на другой. Например, вы можете использовать такой переходник для соединения COM-порта компьютера и кабеля нуль-модема, если на компьютере установлен разъем DB25, а кабель оканчивается разъемами DB9. Схему такого переходника мы приводим на следующем рисунке:
Заметим, что многие устройства (такие, как терминалы и модемы) позволяют управлять состоянием отдельных линий RS-232-C посредством внутренних переключателей (DIP-switches). Эти переключатели могут менять свое значение на разных моделях модемов. Поэтому для их использования следует изучить документацию модема. Например, для hayes-совместимых модемов, если переключатель 1 находится в положении «выключен» (down), это означает, что модем не будет проверять наличие сигнала DTR. В результате модем может отвечать на приходящие звонки, даже если компьютер и не запрашивает у модема установление связи.
Технические параметры интерфейса RS-232-C
При передаче данных на большие расстояния без использования специальной аппаратуры из-за помех, наводимых электромагнитными полями, возможно возникновение ошибок. Вследствие этого накладываются ограничения на длину соединительного кабеля между устройствами DTR-DTR и DTR-DCE. Официальное ограничение по длине для соединительного кабеля по стандарту RS-232-C составляет 15,24 метра. Однако на практике это расстояние может быть значительно больше. Оно непосредственно зависит от скорости передачи данных. Согласно McNamara (Technical Aspects of Data Communications, Digital Press, 1982) определены следующие значения:
110 | 1524,0 | 914,4 |
300 | 1524,0 | 914,4 |
1200 | 914,4 | 914,4 |
2400 | 304,8 | 152,4 |
4800 | 304,8 | 76,2 |
9600 | 76,2 | 76,2 |
Уровни напряжения на линиях разъема составляют для логического нуля -15..-3 вольта, для логической единицы — +3..+15 вольт. Промежуток от -3 до +3 вольт соответствует неопределенному значению. Если вы подключаете внешние устройства к разъему интерфейса RS-232-C (а также при соединении двух компьютеров нуль-модемом), предварительно выключите его и компьютер, а также снимите статический заряд (подсоединив заземление). В противном случае можно вывести из строя асинхронный адаптер. Земля компьютера и земля внешнего устройства должны быть соединены вместе.
Теги:
none
Опубликована: 2004 г.
0
0
Вознаградить Я собрал 0 0
Последовательный порт, описание, протоколы обмена, DTE, DCE, часть 1
Последовательный порт, описание, протоколы обмена, DTE, DCE, часть 1. Последовательный порт (serial port), серийный порт или COM-порт — двунаправленный последовательный интерфейс, предназначенный для обмена битовой информацией
1. Описание
Последовательный порт (англ. Serial port), серийный порт или COM-порт — двунаправленный последовательный интерфейс, предназначенный для обмена битовой информацией.
2. Протокол обмена
Этим термином пользуются при описании взаимодействия информационных потоков в каналах связи, при согласованности между приемником и передатчиком и интерпретация передаваемых данных. Протокол обмена состоит из нескольких параметров связи (скорость, четность, размеры пакетов, инициализация приемника(передатчика), восстановление связи при обрыве).
Рассмотрим некоторые стандартные протоколы:
Протокол RS-232
Для соединения со стороны компьютера используется интерфейс, называемый СОМ-порт (COMmunication port, коммуникационный порт).Стандарт RS-232 (его официальное название «Interface Between Data Terminal Equipment and Data Circuit-Termination Equipment Employing Serial Binary Data Interchange») предназначен для подключения аппаратуры, передающей или принимающей данные, к оконечной аппаратуре каналов данных. Стандарт описывает управляющие сигналы интерфейса, пересылку данных, электрический интерфейс и типы разъемов. Интерфейс RS-232 используется и во многих устройствах обычного персонального компьютера, начиная с «мыши» и модема до ключей аппаратной защиты. И хотя уже все компьютеры имеют интерфейс USB, интерфейс RS-232 еще жив и активно применяется. Согласно стандарту RS-232, сигнал (последовательность битов) передается напряжением. Передатчик и приемник являются несимметричными: сигнал передается относительно общего провода (в отличие от симметричной передачи протокола RS-485 или RS-422) Логическому нулю па входе приемника соответствует диапазон +3. + 12 В, а логической единице — диапазон —12. —3 . Один из самых неприятных недостатков стандарта RS-232 — плохая помехозащищенность и, соответственно, короткие линии передачи.
Протокол RS-422A
Стандарт RS-422A (другое название ITU-T V.II) определяет электрические характеристики симметричного цифрового интерфейса. Он предусматривает работу на более высоких скоростях (до 10 Мбит/с) и больших расстояниях (до 1000 м) в интерфейсе DTE-DCE. Для его практической реализации, в отличие от RS-232, требуются два физических провода на каждый сигнал. Реализация симметричных цепей обеспечивает наилучшие выходные характеристики.
Протокол RS-423A
Стандарт RS-423A (другое название V 6) определяет электрические характеристики несимметричного цифрового интерфейса. «Несимметричность» означает, что данный стандарт, подобно RS-232, для каждой линии интерфейса использует только один провод. При этом для всех линий используется единый общий провод. Как и RS-422A, этот стандарт не определяет сигналы, конфигурацию выводов или типы разъемов. Он содержит только описание электрических характеристик интерфейса. Стандарт RS-423A предусматривает максимальную скорость передачи 100 Кбит/с.
Протокол RS-485
Полное название этого стандарта T1A/EIA-485A (аналогичный стандарт описывается в ISO 8482). Он включает в себя 17 страниц и определяет требования к электрическим характеристикам формирователей и приемников. В нем ничего не говорится ни о качестве сигнала, ни о методах доступа к линиям связи, ни о протоколе обмена, ни о технологической схеме (назначении контактов и т. п.). «Приложение А» этого стандарта описывает принципы работы устройств на основе RS-485.В дополнение к описанию стандарта был опубликован документ TSB89, называющийся «Application Guidelines for T1A/EIA-485A». TSB89 состоит из 23 страниц и посвящается разъяснению, как применять устройства, определяемые стандартом TIA/E1A-485A для физических сетей.
Протокол RS-499
Стандарт RS-449, в отличие от RS-422A и RS-423A, содержит информацию о параметрах сигналов, типах разъемов, расположении контактов и т. п В этом отношении RS-449 является дополнением к стандартам RS-422A и RS-423A. Стандарту RS-449 соответствует международный стандарт V.36. Комбинация RS-449, RS-422A и (или) RS-423A первоначально предназначалась для замены RS-232. Однако этого не произошло, хотя данные стандарты нашли достаточно широкое применение в качестве высокоскоростного интерфейса DTE-DCE. Стандарт RS-449 определяет 30 сигналов интерфейса, большинство из которых имеют эквиваленты в RS 232, но добавлены и новые. Обозначения большинства сигналов были изменены во избежание путаницы. Десять сигналов RS-449 определены как линии первой категории. Эта группа сигналов включает в себя все основные сигналы данных и синхронизации, такие как «Передаваемые данные», «Принимаемые данные», «Синхронизация терминала». Скорость передачи сигналов первой категории существенно зависит от длины кабеля. Для линий этой категории на скоростях до 20 Кбит/с могут использоваться стандарты RS-422A либо RS-423A; на скоростях выше 20 Кбит/с (до 2 Мбит/с) — только RS-422A. Оставшиеся 20 линий классифицируются как линии второй категории и используются стандартом RS-423A. К этой категории относятся такие управляющие линии, как «Качество сигнала», «Выбор скорости передачи» и др. Стандарт RS-449 определяет тип разъема и, в отличие от RS-232, распределение контактов разъема. Используемые разъемы имеют 37 контактов для прямого и 9 контактов для обратного канала.
Протокол RS-562
Протокол RS-562 представляет собой низковольтную реализацию RS-232 с максимальным уровнем сигнала 3,5 В.
«Готовность к соединению» (DTE,DCE)
• DTE (Data Terminal Equipment) — оконечное оборудование, принимающее или передающее данные. В качестве DTE может выступать компьютер, принтер, плоттер или другое периферийное оборудование;
• DCE (Data Communications Equipment) — аппаратура канала данных. Функция DCE состоит в обеспечении возможности передачи информации между двумя или большим числом DTE. Для этого DCE должно обеспечить соединение с DTE, с одной стороны, и с каналом передачи — с другой. Роль DCE чаще всего выполняет модем.
Все линии обмена между DTE и DCE можно разбить на четыре основные группы:
• линии данных;
• линии управления;
• линии синхронизации;
• линии “земли”.
COM порт глазами ремонтника. Ремонт, настройка, диагностика. Часть 1, теория.
Статья первая «COM порт – глазами ремонтника. Ремонт, настройка, диагностика».
Данный раздел содержит только теоретические данные и для практики имеет малое значение, однако именно на этот раздел будет ссылаться остальной материал, поэтому обойти стороной этот материал не удастся. Однако тем, кто знаком с принципом работы COM порта, данный раздел желательно пропустить.
Статья первая «COM порт – глазами ремонтника. Ремонт, настройка, диагностика».
Данный раздел содержит только теоретические данные и для практики имеет малое значение, однако именно на этот раздел будет ссылаться остальной материал, поэтому обойти стороной этот материал не удастся. Однако тем, кто знаком с принципом работы COM порта, данный раздел желательно пропустить.
Описание и принцип работы.
COM-порт(Communication port) — порт работающий по стандарту RS-232 (Recommended Standard 232). RS-232 — стандарт описывающий интерфейс для последовательной двунаправленной передачи двоичных данных между терминалом (DTE, Data Terminal Equipment) и конечным устройством (DCE,Data Circuit-Terminating Equipment ). В настоящее время действующим является RS-232C (Recommended Standard 232 Edition: C) редакция 1969 года, именно это стандарт мы и будем рассматривать далее. Интерфейс RS-232 реализован полностью аппаратно, это значит, что он работает всегда, не зависимо от ОС (операционной системы) или даже без ОС.
Разъемы интерфейса COM порта.
На компьютере интерфейс реализуется одним из двух типов разъемов: DB-9M или DB-25M (разъем DB-25M на современных компьютерах не применяется, однако DB-25F(M), напротив, широко используется в переферийных устройствах например — ККМ, принтера).
В современных компьютерах бытового назначения разъем COM порта может не выводится непосредственно наружу, а организован в виде вывода под планку COM порта, либо вообще отсутствует. Начиная с 1999 по спецификации РС 99 интерфейс RS-232 должен заменяться интерфейсом USB.
![]() | ![]() | ![]() |
COM порт непосредственно установленный на материнской плате | COM порт на материнской плате под планку COM порта | Планка COM порта |
В чем отличие разъема DB-9M от DE-9M, какое обозначение правильное?
Правильное обозначение DE-9M, но есть некотороые нюансы.
Если придерживаться технической документации разъемов D-sub обойма B отличается по типоразмеру от обоймы E
Разъём D-sub содержит два или более параллельных рядов контактов или гнёзд, обычно окружённых металлическим экраном в форме латинской D, который обеспечивает механическое крепление соединения и экранирует от электромагнитных помех. Форма разъёма в виде буквы D предохраняет от неправильной ориентации разъёма. В принятой системе обозначений буква D обозначает всю серию разъёмов D-sub, а вторая буква используется для указания размера разъёма, исходя из числа стандартных контактов, которые могут разместиться внутри D-образного экрана (A = 15 контактов, B = 25, C = 37, D = 50, E = 9), далее следует число фактически используемых контактов, и буква, обозначающая «пол» разъёма: M — male («папа»), F — female («мама»), P — plug (штепсель/«папа»), S — socket (розетка/«мама»). Например, DB25M означает разъём D-sub с экраном, вмещающим 25 контактов и фактическим числом контактов, равным 25.
Таким образом выражение DB-9M не правильное, фактически правильно будет DE-9M, однако в современных условиях, различие между этими названиями не делается, как в технической литературе, так и у поставщиков. Поэтому, как бы это не звучало странно, далее мы будем сознательно делать ошибку и разъем DE-9M называть, как DB-9M, хотя в реальности такого разъема не может быть по определению.
Разъем DB9M (папа), внешний вид, расположение контактов (pinout).
Назначение выводов 9 контактного (9pin) разъема DB9M COM порта со стороны компьютера по стандарту RS232C. Направление сигналов указано относительно хоста (компьютера).
1 | DCD | Вход | Data Carrier Detected — Несущая обнаружена |
2 | RxD | Вход | Receive Data — Принимаемые данные |
3 | TxD | Выход | Transmit Data — Передаваемые данные |
4 | DTR | Выход | Data Terminal Ready — Готовность хоста (компьютера) к работе |
5 | GND | – | Signal Ground — Схемная земля |
6 | DSR | Вход | Data Set Ready — Готовность устройства к работе |
7 | RTS | Выход | Request To Send — Запрос на передачу (хост готов к передаче) |
8 | CTS | Вход | Clear To Send — Готовность устройства к приему данных (устройство готово к приему) |
9 | RI | Вход | Ring Indicator — Индикатор вызова |
Разъем DB25M (папа), внешний вид, расположение контактов (pinout).
Назначение выводов 25 контактного (25pin) разъема DB25M COM порта со стороны компьютера по стандарту RS232C. Направление сигналов указано относительно хоста (компьютера).
1 | PG | – | Protective Ground — Защитное заземление. |
2 | TxD | Выход | Transmit Data — Передаваемые данные |
3 | RxD | Вход | Receive Data — Принимаемые данные |
4 | RTS | Выход | Request To Send — Запрос на передачу (хост готов к передаче) |
5 | CTS | Вход | Clear To Send — Готовность устройства к приему данных (устройство готово к приему) |
6 | DSR | Вход | Data Set Ready — Готовность устройства к работе |
7 | GND | – | Signal Ground — Схемная земля |
8 | DCD | Вход | Data Carrier Detected — Несущая обнаружена |
20 | DTR | Выход | Data Terminal Ready — Готовность хоста (компьютера) к работе |
22 | RI | Вход | Ring Indicator — Индикатор вызова |
Электрические характеристики COM порта (стандарт RS232C).
Полное описание можно посмотреть в документации действующего протокола ITU-T v.28 03.1993 в редакции от 1993 года (скачать).
Эквивалентная электрическая схема RS-232C
- V0- напряжение генератора при разомкнутой схеме
- R0- общее сопротивление генератора
- C0- общая ёмкость генератора
- V1- напряжение между сигнальной линией и общим проводом в месте стыка.
- CL- общая ёмкость приёмника
- RL- общее сопротивление приёмника
- EL- ЭДС приёмника при разомкнутой схеме
- Электрические характеристики приёмника сигналов.
- RL- общее сопротивление приёмника должно находиться в пределах 3000. 7000 Ом.
- V1- напряжение на входе приёмника должно быть в пределах ±3. ±15 В.
- EL- ЭДС приёмника при разомкнутой схеме должно быть не более ±2 В.
- CL- общая ёмкость цепей приёмника должна быть не более 2500 пФ.
- Входной импеданс приёмника не должен быть индуктивным.
- Электрические характеристики генератора сигналов.
- Допускается короткое замыкание сигналов.
- Допускается оставлять выход генератора без нагрузки.
- V0- напряжение генератора при разомкнутой схеме должно быть не более ±25В/±15 В (RS-232/ITU-T v.28)
- R0 и C0 для генератора не нормируются.
- Короткое замыкание цепей генератора не должно вызывать токи величиной более 0,5А.
- Если EL=0, то напряжение на входе приёмника должно быть V1=±5. ±15 В, для любого диапазона нагрузки генератора RL=3000. 7000 Ом.
- Генератор должен быть способен работать на ёмкостную нагрузку C0 плюс 2500 пФ.
- Уровни сигналов для стандарта RS-232C.
- Логической «1» считается информационный сигнал с напряжением V1 менее -3 В.
- Логическим «0» считается информационный сигнал с напряжением V1 более +3 В.
- Сервисный или синхронизирующий сигнал считается включенным «ON»(«MARK») если V1 более +3 В.
- Сервисный или синхронизирующий сигнал считается выключенным «OFF»(«SPACE») если V1 менее -3 В.
- Напряжение в диапазоне V1=-3 В. +3 В считается переходной областью.
- Характеристики сигналов.
- Все сигналы вошедшие в область перехода V1=-3В. +3В должны выйти в противоположный сигнал без повторного захода в эту область (т.е. монотонно).
- Не допускается колебания сигнала в области перехода.
- Сервисные и синхронизирующие сигналы должны проходить область перехода за время не более 1мс.
- Сигналы данных должны проходить область перехода за время не более 3% от времени одиночного элемента, но не более чем за 1 мс.
- Скорость нарастания фронта сигнала не должна превышать величины 30В за миллисекунду.
- Ограничения первых двух пунктов не относятся к электромеханическим устройствам размыкания и замыкания цепи.
Описание контактов интерфейса RS232C
- GND- Ground, (общий) второй провод для всех сигналов.(Сигналы передаются всегда по двум проводам!)
- TxD- Transmited Data, асинхронный канал для передачи данных.
- RxD- Received Data, асинхронный канал для приема данных.
- RTS- Request To Send (запрос на передачу), Выход который говорит о том, что у компьютера есть данные для передачи по каналу TxD для конечного устройства.
- DTR- Data Terminal Ready(готовность терминала данных), Выход который говорит о том, что компьютер(терминал) готов к обмену данными с конечным устройством
- CTS- Clear To Send (очищен для передачи) Вход, который говорит о том, что конечное устройство готово принимать данные от терминала по каналу TxD. Обычно этот сигнал выставляет конечное устройство после того, как оно получит от компьютера сигнал RTS=True(запрос на передачу) и будет готово принять данные от компьютера. Если конечное устройство не выставит сигнал CTS=True, то передача по каналу TxD не начнется. Данный сигнал используется для аппаратного управления потоками данных
- DSR- Data Set Ready(установка данных готова), Вход который говорит о том, что конечное устройство выполнило все установки и готово начать передавать и принимать данные от компьютера. Если конечное устройство модем, то установка DSR=True воспринимается компьютером(терминалом) так, что модем уже установил связь с другим модемом и готов начать процедуру обмена между двумя компьютерами оснащенных модемами
- DCD- Data Carrier Detected(обнаружен носитель информации), Вход который информирует компьютер(терминал) об обнаружении другого терминала, то есть конечное устройство , например модем, обнаружил другой модем, который хочет инициализировать обмен данных между терминалами. Модем выставляет сигнал DCD=True, который обнаруживается на входе компьютера(терминала). Если терминал готов к обмену данными, то он на сигнал DCD=True должен выставить сигнал готовности терминала к обмену данными DTR=True, после чего начинается обмен данными между двумя терминалами.
- RI- Ring Indicator(индикатор звонка), Вход который говорит компьютеру(терминалу) что на конечное устройство поступает сигнал вызова. Например, на модем поступил сигнал вызова с телефонной станции, совсем не обязательно, что этот вызов закончится обменом данных.
Следует отметить, что данные инверитрованы, т.е -12в- это логическая еденица, +12в -это логический ноль, а служебные сигналы +12в — это Mark (логическая еденица), -12 — это Space(логический ноль).
Протокол обмена данными.
В протоколе RS-232 существуют два метода управления обменом данных: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).
Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.
Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0x13, называемый XOFF) и возобновления (символ с кодом 0x11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.
Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается.
Асинхронный режим передачи состоит в том, что каждый байт данных (и бит контроля четности, в случае его наличия) «оборачивается» синхронизирующей последовательностью из одного нулевого старт-бита и одного или нескольких единичных стоп-битов.
Протокол имеет ряд переменных параметров, которые должны быть приняты одинаковыми на стороне приемника и на стороне передатчика для успешного обмена данными:
- Скорость обмена данными задается в битах в секунду, определяя длительность одного бита, выбирается из ряда стандартных значений (300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200), но могут быть и нестандартными, если поддерживаются обеими сторонами;
- Количество бит данных может быть от 4 до 8;
- Контроль четности может быть четным («even», когда общее число единичных битов в принятых данных, включая сам бит четности, должно быть четным), нечетным («odd», когда общее число единичных битов в принятых данных, включая сам бит четности, должно быть четным) или вообще отсутствовать;
- Длина стоп-бита может составлять одну, полторы или две длительности бита.
COMандирский порт
Com-port ( communication port ) — самый старый из последовательных портов ПК ( рис. 1 ). «Последовательный» означает то, что данные в таком интерфейсе передаются по одному проводнику. Последовательные интерфейсы можно разделить на две основные разновидности — синхронные и асинхронные . Передача информации на физическом уровне — это изменение электрических сигналов. И когда мы передаем последовательность единичных или нулевых битов, физически этот процесс представляется в виде электрического импульса ( рис. 2 ). Причем, в зависимости от скорости передачи, в импульсах одинаковой длительности может быть разное количество единичек. Так вот, для получения информации из таких импульсов используют синхронизацию. Выходит, что параллельно с информационным потоком генерируется последовательность импульсов, которые указывают, в какой момент времени необходимо снимать информацию. Эти импульсы и определяют скорость обмена, ведь если за единицу времени подать больше синхроимпульсов, значит, больше информационных данных выделится из потока.
Если эти синхроимпульсы передаются от одного устройства другому, то такая передача называется синхронной. Асинхронной же считается такая передача, когда с фиксированной скоростью пересылается только информация, а приемник и передатчик синхронизируют процесс обмена данными самостоятельно. Наш СОМ-порт является асинхронным. Хочется также заметить, что разница между импульсами, по которым синхронизируется передача, и импульсами, синхронизирующими прием, не должна превышать 5% от их частоты. Так что едва ли не основной проблемой для асинхронных интерфейсов является одновременность запуска синхронизирующих генераторов. Для СОМ-порта стандартными являются следующие скорости: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Максимальная длина кабеля-соединителя — 15 метров. Есть специальные кабели, которые позволяют увеличить длину соединения до 150 метров. А если использовать устройства, называемые «репитерами» , то расстояние можно еще дополнительно увеличить. Вы спросите, зачем модему кабель в 150 метров? Вполне закономерный вопрос, однако такие расстояния используются в тех случаях, когда к ПК необходимо подключить какое-то специализированное технологическое устройство. Как, например, счетчик электрической энергии находится где-то в распределительном щите, а компьютер — в бухгалтерии.
Компьютерный СОМ-порт работает по стандарту RS-232C , который определяет электрические уровни сигналов и протокол обмена. Порт содержит две линии для обмена информацией (прием и передача), и 9 линий для управления обменом. Если для управления обменом задействовать эти линии, то обмен будет называться «аппаратным» (протокол RTS/CTS ). Однако обмен информацией можно организовать, используя только линии приема и передачи, тогда он будет называться «программным» (протокол XON/XOFF ). В таком режиме посылается символ, сигнализирующий о начале передачи, называется он XON, окончание передачи сигнализируется символом XOFF.
Теперь разберемся, как из цепочки передаваемых бит выделяются байты. Начало байта сигнализирует старт-бит , который имеет всегда определенное значение — 0, окончание — стоп-бит .
Аппаратной основой СОМ-порта является микросхема UART ( Universal Asynchronous Receiver/Transmitter — универсальный асинхронный приемопередатчик), которая с момента своего появления прошла длительный процесс эволюции ( таблица 1 ).
Если вы загляните в окно настройки последовательного порта, то заметите, что список скоростей явно не ограничивается 115.2 Кбит/с. Это связано с тем, что кроме стандартных, можно использовать еще и так называемые высокоскоростные СОМ-порты — Enhanced Serial Ports ( ESP ) и Super High Speed Serial Ports . Это варианты, базирующиеся на микросхемах 16550AF , 16650 , 16750 . Они обеспечивают обмен на скорости до 921.6 Кбит/с. В принципе, все высокоскоростные модемы xDSL содержат в своем составе такую микросхему, которая обеспечивает связь на 230–460 Кбит/с.
Теперь от теоретической части перейду к практической, и опираясь на вышеизложенные теоритические предпосылки, я расскажу о настройках СОМ-порта. Открыв окно свойств порта и выбрав вкладку Настройка , увидим множество опций ( рис. 3 ).
Ну, со скоростью , думаю, все понятно — в этом пункте выбираем скорость обмена между устройством и ПК. В принципе можно выбрать ту скорость, которая вам больше нравится, хотя я полагаю, если у вас модем на 56К, скорость работы порта устанавливать в 19200 бит/с вы не будете :-).
Биты данных — сколько бит передавать за один раз (между старт-битом и стоп-битом).
Четность — выбор способа контроля четности. Кто не знает, контроль четности — способ проверки принятого числа на ошибочность. При передаче к числу добавляется еще один бит, дополняющий количество единиц в числе до четного или нечетного (это уже как выбрано в режиме передачи). Этот бит становится младшим разрядом передаваемого числа и принимает значение 1, если у нас нечетное число единиц, и 0, если четное. При проверке на четность, в случае если мы приняли нечетное число единиц (при проверке на нечетность — наоборот), порт передает устройству информацию об ошибке и просит повторить передачу.
Стоповые биты — количество стоп-бит, необходимых для правильного распознавания конца байта.
Управление потоком — выбор режима управления потоком (аппаратного или программного). В режиме программного управления, при определении ошибки, требуется некоторое время, чтобы отправить сигнал XOFF и приостановить прием, но за это время может произойти передача нескольких байт, которые будут утеряны (в случает отсутствия буфера принимаемых данных).
И наконец, в пункте Дополнительно можно выбрать объем буферов FIFO либо отключить их вообще (что не рекомендуется).
Рассказав про эти настройки, дам вам один совет. Если у вас все нормально работает, не меняйте настройки, стоящие по умолчанию! Менять их необходимо тогда, когда этого требует устройство (о чем, наверняка, будет подробно сказано в инструкции к нему).
Теперь о «железном» конфигурировании СОМ-портов. Данные сведения могут очень пригодиться тем, кто купил внутренний WIN-модем. Как известно, при конфигурировании устройства необходимо указать ресурсы, которые ему необходимы (адрес ввода-вывода, номер прерывания, канал DMA). Система PlugPlay. И вам необходимо указывать ресурсы самостоятельно.
Итак, для коммуникационных портов стандартны перечисленные ниже ресурсы. Диапазон ввода-вывода — 3F8-3FFh для COM1, 2F8-2FFh — для COM2, 3E8-3Efh — для COM3, 2E8-2Efh — для COM4. С прерываниями немного сложнее — для СОМ1 (3) используется IRQ4, для СОМ2 (4) — IRQ3. Теперь, приведя эти цифры, расскажу о подводных камнях, подстерегающих покупателей WIN-модемов. Последние работают через СОМ3 или СОМ4, и при установке часто могут нахомутать с ресурсами, ведь Plug
• бит 1 — готовность переданных данных (когда записанный в регистр данных байт, целиком передан);
• бит 2 — состояние разрыва соединения или обнаружения ошибки;
• бит 3 — изменения на разъеме COM-порта.
Регистр идентификации прерывания (3FA) определяет причину появления прерывания.
Бит ноль, если он равен единице, сигнализирует об отсутствии прерываний, ожидающих обслуживание.
В битах 1-2 зашифрованы следующие состояния:
• 00 — прерывание генерируется при переполнении приемника, ошибке четности или формата данных, или при состоянии разрыв соединения, сбрасывается при чтении регистра состояния линии;
• 01 — данные приняты и доступны для чтения, сбрасывается после чтения из порта данных;
• 11 — устанавливается при изменении состояния входных линий CTS, RI, DCD и DSR.
Биты 3-7 должны быть равны нулю.
Регистр управления портом (3FB), с его помощью можно задать различные параметры порта, такие как, например, размер передаваемого пакета данных, количество стоповых битов, тип контроля четности и т.д.
Полный список, приведен в следующей таблице.
Регистр управления устройством модуляции-демодуляции или просто модемом (3FC) — достаточно специфический регистр, который управляет состоянием линий DTR (бит 0) и RTS (бит 1), состоянием модемных резервных линий OUT1 (бит 2), OUT2 (бит 3) и запуском автодиагностики порта при замыкании выхода на вход (бит 4).
Биты с пятого по седьмой должны быть равны нулю.
Выставление соответствующего бита в 1 приводит к появлению на линии логической единицы, запуск автодиагностики происходит также при выставлении четвертого бита в единицу.
Регистр состояния линии (3FD) является самым полезным регистром после регистра данных.
С его помощью ты всегда сможешь узнать, в каком состоянии у тебя находится порт, и можно ли тебе произвести нужное действие.
Вот формат этого регистра (1 соответствует активному состоянию):
• бит 0 — приемник получил данные, и их можно прочитать из регистра данных, при чтении из регистра 3F8 этот бит устанавливается в 0;
• бит 1 — потеря данных, новый байт данных был получен, а старый не прочитан из регистра данных, и новый байт заместил в регистре данных старый байт;
• бит 2 — произошла ошибка четности;
• бит 3 — произошла ошибка синхронизации;
• бит 4 — обнаружен разрыв соединения;
• бит 5 — регистр переданных данных пуст, можно записать новый байт;
• бит 6 — данные переданы приемнику (то есть сдвиговый регистр, куда помещается байт из регистра данных, пуст);
• бит 7— устройству не удалось связаться с компьютером в установленный срок.
И, наконец, последний из регистров COM-порта, регистр состояния модема (3FE), имеет следующий формат:
• бит 0 — произошло изменение состояния линии CTS;
• бит 1 — произошло изменение состояния линии DSR;
• бит 2 — произошло изменение состояния линии IR;
• бит 3 — произошло изменение состояния линии DCD;
• бит 4 — состояние линии CTS;
• бит 5 — состояние линии DSR;
• бит 6 — состояние линии IR;
• бит 7 — состояние линии DCD.
Алгоритм работы
Допустим, ты спаял некое устройство, подключаемое к COM-порту.
Этот супердевайс принимает от компьютера управляющие команды и отсылает ему какую-нибудь информацию.
Тогда твоя программа будет выглядеть следующим образом:
Вначале необходимо инициализировать порт.
Для этого воспользуйся регистром управления 3FB и установи нужные тебе параметры порта, а также реши, нужны ли тебе прерывания.
Если нужны, то твоя дверца — с надписью 3F9.
Один поток твоей программы постоянно занят тем, что отправляет данные, поступающие ему на вход, в регистр данных.
Но отправляет он их только тогда, когда регистр данных готов к этому, то есть тебе надо постоянно проверять пятый бит регистра состояния порта 3FD, и если он становится равным единице, то можно писать байт в регистр данных 3F8.
Второй поток занят диаметрально противоположной задачей — он принимает данные.
Но перед тем как прочитать данные из регистра данных, необходимо убедиться, что там лежит новый свеженький байт.
Делается это путем проверки нулевого бита регистра состояния порта 3FD.
Если ты хочешь, чтобы твое устройство и управляющая программа работали безошибочно, то постоянно проверяй ошибки, то есть равны ли биты с 1 по 4 регистра состояния нулю.
Если да, то все хорошо, если хоть один из них становится равным единице, принимай адекватные меры.
Наконец последнее, о чем я хочу тебя предупредить, это различия в работе операционных систем с ядром NT (Windows NT, 2000, XP, AS2003) и старых Windows 9Х/Me.
Если в старых ОС можно было напрямую работать с портами, например с помощью методов стандартной библиотеки C — _inp(), _outp(), которые, в свою очередь, просто выполняют ассемблерные команды in, out, то в новых системах тебе придется изрядно попотеть.
По словам Microsoft, для целостности системы больше кого попало к портам ввода/вывода не пускают, и если ты хочешь что-нибудь прочитать или записать из/в порт, будь любезен, работай на уровне драйвера устройства, то есть пиши свой драйвер, дружок.
Вот так, не порт, а целый детектив.
Если столько премудростей скрывает в своей работе древний СОМ-порт, то что же говорить о более современных интерфейсах?