Справочник
Технологии »
»
»

Анатомия COM-порта. Часть 1

Анатомия COM-порта

В последнее время последовательный способ передачи данных вытесняет параллельный.
За примерами далеко ходить не надо: появление шин USB и SATA говорит само за себя.
И действительно, параллельную шину трудно масштабировать (удлинить шлейф, увеличить частоту тактирования шины), неудивительно, что технологии поворачиваются к параллельным шинам задней частью.

Последовательные интерфейсы

На сегодня существует великое множество различных интерфейсов последовательной передачи данных.
Кроме уже упомянутых USB и SATA еще можно вспомнить как минимум два широко известных стандарта RS-232 и MIDI (он же и GamePort).
Объединяет их все то же — последовательная передача каждого бита информации, или Serial Interface.
Преимуществ у подобных интерфейсов великое множество, и самое главное из них — малое количество соединительных проводов, а следовательно, меньшая цена.

Передача данных

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

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

Асинхронная передача подразумевает использование специальных битов, маркирующих начало и конец данных – стартового (логический ноль) и стопового (логическая единица) бита.
Также возможно использование специального бита четности, который определяет четное или нечетное количество передаваемых единичных битов (в зависимости от принятого соглашения).
На принимающей стороне проводится анализ этого бита, и если бит четности не соответствует количеству единичных битов, то пакет данных пересылается снова.

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

Ну, если бы все компьютерные технологии были просты, то любая домохозяйка давно бы уже лепила параллельно с пельменями новые протоколы …
Попробуем взглянуть на процесс по-другому.
Данные передаются пакетами, примерно как IP пакеты, вместе с данными идут и информационные биты, количество этих битов может варьироваться от 2 до 3 с половиной.
С половиной?!
Да, ты не ослышался, именно с половиной!

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

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

Ты наверняка слышал, что в качестве единицы измерения скорости передачи данных используется «бод» — частота изменения состояния линии, и эта величина будет совпадать со скоростью передачи данных только в случае если сигнал может иметь одно из двух значений.
Если же в одном изменении сигнала закодировано несколько бит (а это встречается у многих модемов), скорость передачи и частота изменения линии будут совершенно различными величинами.

Теперь пару слов о загадочном термине «пакет данных».
Под пакетом в данном случае понимается набор битов, передаваемых между стартовым и стоповым битами.
Их число может изменяться от пяти до восьми.
Можно задаться вопросом, почему именно пять-восемь бит?
Почему бы не передать сразу, скажем, килобайт данных внутри пакета?

Ответ очевиден: передавая маленькие пакеты данных, мы пусть и проигрываем, отправляя с ними три служебных бита (от 50 до 30 процентов данных), зато если при передаче пакет будет испорчен, мы легко узнаем это (помнишь про бит четности?) и быстро передадим его снова.
А вот в килобайте данных ошибку обнаружить будет уже трудно, и передавать его будет гораздо сложнее.

В качестве примера асинхронного последовательного устройства передачи данных можно привести COM-порт компьютера, любимый модем с дизайном от Труссарди и мышь, подключаемую к этому же порту, которую недалекие секретарши почему-то все время стараются засунуть в PS/2.
Работают все эти устройства по интерфейсу RS-232, вернее по асинхронной его части, поскольку в стандарте описана и синхронная передача данных.

RS-232 электрический интерфейс

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

Длина соединительных проводов не должна превышать 15 метров.
Логической единице соответствует значение напряжения на входе приемника от -12 до -3 Вольт, логическому нулю — от +3 до +12 Вольт.
На выходе передатчика, соответственно, логическая единица — это напряжение в диапазоне от -12 до -5 Вольт, а логический ноль — от +5 до +12 Вольт.

Что касается разъема, то ты наверняка знаешь, что бывают 9-контактные и 25-контактные разъемы для последовательных интерфейсов, так вот, 25-контактный разъем как раз предназначен для синхронной работы, а 9-ти — для асинхронной.
COM-порт компа выглядит как разъем типа «папа» (male), ну а подключаемая аппаратура имеет разъем типа «мама» (female).

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

1 · 2
Справочник