Подключение по ком порту. Конфигурирование и прерывания

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

Порт и память

То есть, программа прочитает данное из памяти в процессор, что-то с ним сделает, может быть получит из этой информации какие-то новые данные, которые запишет в другое место. Или само данное просто перепишет на другое место. Во всяком случае в памяти информация, которая однажды была записана может быть либо прочитана, либо стёрта. Ячейка получается как сундучок, стоящий у стенки. А вся память состоит из ячейки каждая ячейка имеет свой адрес. Точно как сундучки, стоящие в ряд у стенки в подвале скупого рыцаря.

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

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

Просто и красиво. Эти порты так и назвали сразу — порты ввода-вывода. Через одни из них данные отправляются куда-то, через другие — откуда-то принимаются.

Ну а дальше начинается движение по кругу. Вот есть одно устройство, и есть другое. И вот есть цепочка символов, каждый из которых состоит из отдельных двоичных битов, и эту цепочку нужно передать. Как передавать? Можно по линии из 8 проводочков сразу передавать по целому символу — один проводок = один бит, потом код другого, потом третьего, и так, пока не передашь всю цепочку.

А можно было разворачивать каждый бит не в пространстве (по проводочкам), а во времени: сначала передать один бит символа, потом второй и так восемь раз. Ясно, что во втором случае нужны какие-то дополнительные средства, чтобы символы так разворачивать во времени.

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

И скорость передачи будет другая:

Получается, у каждого варианта свои плюсы, но и свои минусы.

  1. Сразу по восемь бит (то есть побайтно) передавать быстрее, но проводочков надо в восемь раз больше
  2. По одному биту передавать — нужно всего один информационный проводок, зато будет в 8 раз медленнее.

Вот и назвали в первом случае передачу параллельной, а во втором случае — последовательной.

Интерфейс портов

А вся система такой передачи — в одном случае так, в другом — этак, называется интерфейс . Один интерфейс параллельный, другой — последовательный. Почти одно и то же, порты, один параллельный, другой последовательный.

Чем понятие порт отличается от понятия «интерфейс»? В современной технике слова не только появляются, они растут и получают «образование». И как и у людей, могут становиться узкими специалистами, а могут стать «дилетантами». Вот такое типичное слово-дилетант — «интерфейс». Потому что оно — «каждой дыре затычка». Интерфейсы бывают:

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

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

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

В нашей теме интерфейс обозначает вещи немного более простые.

Это аппаратные + программные средства передачи + правила передачи. Аппаратные — понятно. А вот программные средства на компьютерах и в современных средствах связи присутствуют всегда и везде. Даже бывает так: сначала на какой-то аппаратной базе создаётся нечто функциональное, которое выполняется не сразу, а с применением специально написанных программ . А программы все настраиваются.

И постепенно, по мере работы новой функции (или функционального блока), программы которые его «делают» — а они от аппаратных средств отличаются тем, что их можно легко настраивать — доводятся до какого-то состояния оптимальной настройки. Что уже больше и не надо настраивать. И тогда программу в новой версии функционального блока могут заменить на аппаратно выполненный заменитель программной части. Например, «зашить» оптимально работающую хорошо настроенную программу в постоянную память . Или придумать специальную логическую схему, которая выполнит точь-в-точь то же самое, что делала оптимально настроенная программа — не шарахаясь и не забывая иногда все свои полезные настройки.

Поэтому интерфейс такой часто и называют — программно-аппаратным .

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

Например, чтобы 1 битовый приходил в виде +12 или +15 вольт перепада напряжения от нуля. И чтобы была в виде прямоугольничка, или острого всплеска - пик которого обязательно был не меньше, ну, + 5 вольт, а верхнее ограничение вводить, допустим, не очень обязательно. Это потому, что при передаче импульсов на какие-то расстояния электрические сигналы имеют свойство ослабевать и «размазываться».

Если с одного конца отправят строго 12 вольт, то до другого может дойти 3 вольта, а это системой приёма может расцениться просто как шум в линии, и переданная информация будет потеряна.

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

А ещё должны одинаково пониматься и сами те самые проводочки, о которых шла речь в самом начале. Тут надо сказать сразу, такого, чтобы шёл один проводок, никогда не бывает. Даже к телефону подходят в кабеле два проводка, а в норме полагается, чтобы было в кабеле четыре. И у интерфейсов передачи данных всегда несколько проводников. Какие-то из них — информационные, какие-то — служебные. И именно это должно одинаково распознаваться на обоих концах взаимодействия. А проводочки распознаются как ? По цвету, если в кабеле и по местоположению, если в контактах подключения.

Порт слово простое и тоже не совсем однозначное. Но смысл сходный: то, что что-то грузит на что-то и куда-то отправляет. Или наоборот, то, что что-то принимает и что-то из него выгружает. Смысл почти тот же, что и программно-аппаратный интерфейс, но как-то лаконичнее. И строже, как на флоте («Вам скажут — не спорьте… а мы и не спорим…»). Только наши сигналы плывут не по морю, а по кабелю.

Распиновка разъёмов COM-порта

Распиновка никакой связи не имеет с распинанием, хотя, как проводки, вольно бегущие в одной оболочке кабеля, разбирают на стороны и жёстко припаивают к своим штырькам, сходно с распинанием. Штырёк, по-английски «pin», булавка, поэтому и распиновка, слово уже это компьютерно-связистский «проанглийский» жаргонизм. Означает — распайка проводов по штырькам на разъёме.

Форма разъёма, порядок проводков (штырьков) в нём, назначение каждого штырька, а также номиналы напряжений и смысл сигналов в каждом — это часть интерфейса. Обычно вся эта информация собирается в отдельный документ, называемый спецификацией порта. Такая простая и понятная табличка на одну страницу. В других разновидностях интерфейсов что-то такое может называться «протоколом». А здесь ещё просто называют «распиновкой» .

Последовательные порты COM

COM-порты компьютера, это связь компьютерного комплекса «дальнего действия». В отличие от параллельных портов и кабелей, ведших на «тяжёлые» устройства — принтеры, сканеры, Com-порты присоединяли к компьютеру «лёгкие» юниты — мышка, модем. Первые межкомьютерные интерфейсы (через «нуль-модем»). В дальнейшем, когда распространились локальные сети , а мыши стали подключаться по такому же разъёму, как и клавиатура — port ps/2 (пэ-эс-пополам) — com port как-то был подзабыт.

Возрождение пришло с появлением последовательного интерфейса USB. Вот и получилось движение по кругу. Теперь на USB можно встретить, кроме флешек, и мыши USB-шные, и USB-шные «клавы». Принтеры, сканеры модемы — вся периферия теперь на USB, забыла уже о толстых и солидных параллельных LTP — кабелях, которые необходимо было в обязательном порядке прикручивать с каждой стороны на 2 болта. А проводочков-то в этих USB — два сигнальных (собственно, канал один, один прямой сигнал, другой тот же — инверсный) и два — питание и корпус.

Прежних последовательных портов COM было несколько. Самый маленький — и самый востребованный 9-контактный порт (D9), к которому подключали большую чать устройств: мыши, модемы, нуль-модемные кабели. Контакты располагались в два ряда, 5 и 4 в ряд, получалась трапеция. Поэтому и название D9. На «маме» нумерация шла слева направо и сверху вниз:

1 2 3 4 5

Распайка COM-порта, port RS232, 9 контактов.

Обозначение Тип Описание
1 DCD Вход Высокий уровень от модема, когда он принимает несущую модема-партнёра
2 RxD Вход Входящие импульсы данных
3 TxD Выход Исходящие импульсы данных
4 DTR Выход Высокий уровень (+12В) показывает готовность компьютера к приёму данных. Подключённая мышь использовала этот контакт как источник питания
5 GND Общий Земля
6 DSR Вход Готовность к передаче данных устройством
7 RTS Выход Ответная готовность устройства — партнёра
8 CTS Вход Готовность к приёму данных от партнёра
9 RI Вход Сигнал информирования компьютера о входящем звонке, поступившим на модем из линии связи

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

Последовательный порт, как и параллельный, появился задолго до появления персональных компьютеров архитектуры IBM PC. В первых персоналках COM-порт использовался для подсоединения периферийных устройств. Однако сфера его применения несколько отличалась от сферы применения параллельного порта. Если параллельный порт использовался в основном для подключения принтеров, то COM-порт (кстати, приставка COM – это всего лишь сокращение от слова communication) обычно применялся для работы с телекоммуникационными устройствами, такими, как модемы. Тем не менее, к порту можно подключить, например, мышь, а также другие периферийные устройства.

COM-порт, основные сферы применения:

  1. Подключение терминалов
  2. ~ внешних модемов
  3. ~ принтеров и плоттеров
  4. ~ мыши
  5. Прямое соединение двух компьютеров

В настоящее время сфера применения СОМ-порта значительно сократилась благодаря внедрению более быстрого и компактного, и, кстати, тоже последовательного, интерфейса USB. Почти вышли из употребления внешние модемы, рассчитанные на подключение к порту, а также «COM-овские» мыши. Да и редко кто теперь соединяет два компьютера при помощи нуль-модемного кабеля.

Тем не менее, в ряде специализированных устройств последовательный порт до сих используется. Можно найти его и на многих материнских платах. Дело в том, что по сравнению с USB COM-порт имеет одно важное преимущество – согласно стандарту последовательной передачи данных RS-232, он может работать с устройствами на расстоянии в несколько десятков метров, в то время как радиус действия кабеля USB, как правило, ограничен 5 метрами.

Принцип работы последовательного порта и его отличие от параллельного

В отличие от параллельного (LPT) порта, последовательный порт передает данные побитно по одной-единственной линии, а не по нескольким одновременно. Последовательности битов группируются в серии данных, начинающиеся стартовым битом и кончающиеся стоповым битом, а также битами контроля четности, использующимися для контроля ошибок. Отсюда происходит и еще одно английское название, которое имеет последовательный порт – Serial Port.

Последовательный порт имеет две линии, по которым передаются собственно данные – это линии для передачи данных от терминала (ПК) к коммуникационному устройству и обратно. Кроме того, существует еще несколько управляющих линий. Обслуживает Serial port специальная микросхема UART, которая способна поддерживать относительно высокую скорость передачи данных, достигающую 115 000 бод (байт/с). Правда, стоит отметить, что реальная скорость обмена информацией зависит от обоих коммуникационных устройств. Кроме того, в функции контроллера UART входит преобразование параллельного кода в последовательный и обратно.

Порт использует электрические сигналы сравнительного высокого напряжения – до +15 B и -15 В. Уровень логического нуля последовательного порта составляет +12 В, а логической единицы – -12 В. Такой большой перепад напряжений позволяет гарантировать высокую степень помехоустойчивости передаваемых данных. С другой стороны, используемые в Serial port высокие напряжения требуют сложных схемотехнических решений. Это обстоятельство также поспособствовало снижению популярности порта.

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

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

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

В современных компьютерах разъем Serial port представляет собой 9-штырьковый разъем типа «вилка» DB-9, хотя стандарт RS-232 описывает также разъем с 25–ю контактами ­– DB-25, который часто применялся на старых компьютерах. Разъем DB-9 обычно расположен на системной плате ПК, хотя в старых компьютерах он мог находиться на специальной мультикарте, вставляемой в слот расширения.

9- штырьковое гнездо DB-9 на материнской плате

Разъем DB-9 на кабеле подключаемого к порту устройства

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

Назначение линий разъема Serial port DB-9 согласно RS-232 и их соответствие контактам разъема DB-25:

Контакт DB-9 Английское название Русское название Контакт DB-25
1 Data Carrier Detect Несущая обнаружена 8
2 Transmit Data Передаваемые данные 2
3 Receive Data Принимаемые данные 3
4 Data Terminal Ready Готовность терминала 20
5 Ground Земля 7
6 Data Set Ready Готовность передающего устройства 6
7 Request To Send Запрос на отправку данных 4
8 Clear To Send Передача данных разрешена 5
9 Ring Indicator Индикатор звонка 22

Конфигурирование и прерывания

Поскольку в компьютере может быть несколько последовательных портов (до 4), то в системе для них выделяется два аппаратных прерывания - IRQ 3 (COM 2 и 4) и IRQ 4 (COM 1 и 3) и несколько прерываний BIOS. Многие коммуникационные программы, а также встроенные модемы используют для своей работы прерывания и адресное пространство портов COM. При этом обычно применяются не реальные порты, а так называемые виртуальные порты, которые эмулируются самой операционной системой.

Как и в случае многих других компонентов материнской платы, параметры работы портов COM, в частности, значения прерываний BIOS, соответствующих аппаратным прерываниям, можно настроить через интерфейс BIOS Setup. Для этого используются такие опции BIOS, как COM Port, Onboard Serial Port, Serial Port Address, и т.п.

Заключение

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

Вот мы и добрались до COM порта. Но с ним все не так просто как с LPT, и его полноценное использование потребует значительно больших усилий. Главной загвоздкой является и его главное преимущество - передача данных в последовательном виде. Если в LPT байт данных передается по 8-ми линиям по биту на каждую, и состояние каждой линии можно было легко посмотреть, то в COM порту байт данных передается бит за битом по одной линии (относительно земли, конечно) и посмотреть что там передается с помощью одних светодиодов не удастся. Для этого нужно специальное устройство - преобразователь потока последовательных данных в парраллельный, т.н. USART (Universal Synchronous/Asynchronous Receiver Transmitter). Например, он есть в составе материнской платы компьютера, снабженного COM портом, в любом более мение серьезном микроконтроллере.


Надеюсь, вы еще пали духом в освоении COM порта. Все не так уж и мрачно. Некоторые результаты можно получить и без USART. Сформулируем задачу, которую реализуем на начальном этапе работы с COM портом:


"Хочу что бы к компьютеру через COM порт подключался светодиод. Запускаю программу. Далаю какое-то действие в этой программе, светодиод загорается, делаю другое - светодиод тухнет."


Задача довольно специфичная (с учетом того, что USART не используется) и является чистой "самопальщиной", но вполне реализуема и работоспособна. Давайте приступим к ее реализации.


1. COM порт

Опять берем системный блок вашего ПК и смотрим в тыловую часть. Примечаем там 9-ти штырьковй разъем - это и есть COM порт. Реально их может быть неколько (до 4-х). На моем ПК установлено два COM порта (см. фото).


2. Удлинитель COM порта


3. Аппаратная часть

С аппаратной частью нам тоже придется "повозиться", в том смысле что она будет сложнее чем с первым устройством для LPT порта. Дело в том что протокол RS-232 по которому идет обмен данными в COM порту, имеет несколько отличное соотношение логическое состояние - напряжение. Если обычно это логический 0 0 В, логическая 1 +5 В, то в RS-232 это соотношение следующее: логический 0 +12 В, логическая 1 -12 В.

И например, получив -12 В не сразу понятно что с этим напряжением делать. Обычно проводят преобразование уровней RS-232 в ТТЛ (0, 5 В). Самый простой вариант - стабилитроны. Но я предлагаю сделать этот преобразователь на специальной микросхеме. Называется она MAX232.

Теперь давайте посмотрим, а какие сигналы из COM порта мы можем посмотреть на светодиодах? В действительности, в COM порту есть аж 6 независимых линий, представляющих интерес для разработчика устройств сопряжения. Две из них пока для нас недоступны - линии по передаче последовательных данных. А вот оставшиеся 4 предназначены для управления и индикации процесса передачи данных и мы сможем "передалать" их под свои нужды. Две из них предназначены для управления со стороны внешнего устройства и мы их пока трогать не будем, а вот последние две оставшиеся линии мы сейчас и поиспользуем. Они называются:

  • RTS - Запрос на передачу. Линия взаимодействия, которая показывает, что компьютер готов к приему данных.
  • DTR - Компьютер готов. Линия взаимодействия, которая показывает, что компьютер включен и готов к связи.

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

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

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


4. Программная часть

Тут все попроще. Давайте создадим Windows приложение в Microsoft Visual C++ 6.0 на основе MFC для управления двумя линиями взаимодействия COM порта. Для этого создаем новый проект MFC и указываем ему имя, например, TestCOM . Далее выбираем вариант построения на основе диалога.

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

Class CTestCOMDlg: public CDialog { // Construction public: CTestCOMDlg(CWnd* pParent = NULL); // standard constructor HANDLE hFile;

Чтобы наша программа могла упрявлять линиями COM порта, его надо сначала открыть. Напишем код, ответственный за открытие порта при загрузке программы.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) { MessageBox("Не удалось открыть порт!", "Ошибка", MB_ICONERROR); } else { MessageBox("Порт успешно открыт", "Ok", MB_OK); }

С помощью стандарной функции Win API CreateFile() открываем COM-порт COM2 . Далее проверяем успешность открытия с выводом информационного сообщения. Вот тут надо сделать важное замечание: COM2 - это в моем компьютере, а на Вашем компьютере Вы могли подключить его к другому COM порту. Соответственно, его имя нужно изменить на то, кокай порт Вы используете. Посмотреть, какие номера портов присутствуют на Вашем компьютере, можно так: Пуск -> Настройка -> Панель управления -> Система -> Оборудование -> Диспетчер устройств -> Порты (COM и LPT) .

В итоге, функция CTestCOMDlg::OnInitDialog() , расположенная в файле TestCOMDlg.cpp , класса нашего диалога должна принять вид:

BOOL CTestCOMDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application"s main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) { MessageBox("Не удалось открыть порт!", "Оштбка", MB_ICONERROR); } else { MessageBox("Порт успешно открыт", "Ok", MB_OK); } return TRUE; // return TRUE unless you set the focus to a control }

Теперь добавим обработчики кнопок управления линиями. Я дал им соответствующие имена: функция, которая устанавливает еденицу на линии DTR - OnDTR1(), 0 - OnDTR0(). Для линии RTS соответственно аналогичным образом. Напомню, что обработчик создается при двойном щелчке на кнопке. В итоге, эти четыре функции должны принять вид:

Void CTestCOMDlg::OnDTR1() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 6); } void CTestCOMDlg::OnDTR0() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 5); } void CTestCOMDlg::OnRTS1() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 4); } void CTestCOMDlg::OnRTS0() { // TODO: Add your control notification handler code here EscapeCommFunction(hFile, 3); }

Поясню немного как они работают. Как видно, внитри себя они содержат вызов одной и той же Win API функции EscapeCommFunction() с двумя параметрами. Первый из них - это хэндл (HANDLE) на открытый порт, второй - специальный код действия, соответствующий необходимому состоянию линии.

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

© Иванов Дмитрий
Декабрь 2006

Приветствую Вас, друзья. Продолжаем изучать системный блок. Сегодня расскажу о компьютерных портах. Что это такое? С бурным развитием интернет-технологий понятие «порт», «сокет» у многих на слуху. Это другая ветвь, и мы сегодня не будем говорить о ней. Тема этой статьи содержит информацию о сугубо «железных», » реальных» разъемах (или портах), которые предназначены для подключения различных устройств к системному блоку.

«Железо» тоже совершенствуется и с каждой генерацией мы обнаруживаем новые виды разъемов (или порты) на купленных системных блоках. К ним подключаются различные, так называемые периферийные устройства. Системный блок + монитор = компьютер. Все что подключается к ним (принтеры, сканеры, программаторы, видеокарты, мониторы и так далее) — это периферия.

На компьютере портов много. Они находятся на материнской плате системного блока и представляют собой разъемы (большая часть из них на задней части) . Часть разъемов выводится и на переднюю панель и они так же подключены к материнской плате.

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

Наличие слотов расширения позволяет самостоятельно собирать компьютер наподобие конструктора, на основе ваших предпочтений, не тратя лишних денек. Потому что разработчики давно стандартизировали выпускаемое оборудование. При необходимости можно провести его обновление. Это главная причина того, что IBM-PC совместимые компьютеры (так называется такая платформа) когда-то вытеснили с рынка Apple Macintosh.

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

Краткий список портов компьютера

Нужно уметь отличать разъемы один от другого визуально. Не всегда производитель указывает их наименования. Так как разъемы сгруппированы на задней панели системника, то с нее и начнем. Все порты имеют англоязычное наименование, тут уж ничего не поделаешь. Кратко их можно разделить:

  1. Последовательный порты;
  2. Параллельный порт;
  3. Порты для компьютера и мыши;
  4. Порты USB;
  5. Порты SCSI;
  6. Видеопорты;
  7. Разъемы сетевых кабелей;
  8. Разъемы аудио;
  9. Карт-ридеры;

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


Такие платы могут поддерживать и аудио или видеоформаты сторонних производителей (Sony, Philips) и тогда можно встретить на таком компьютере соответствующий разъем. Особым разнообразием сегодня могут похвастаться аудио и видео порты.

Порты компьютера для подключения периферийных устройств

Последовательный порт — сегодня уже морально устаревшая вещь. Но для специалистов, которые занимаются ремонтом электронных устройств они представляют ценность. Изначально такой порт использовался для подключения модема. Скорость передачи данных типичная — от 110 до 115200 бит в секунду. Их обычно было по два с разъемами DB 9 типа «папа»:

Скорости вполне хватает для программатора, чтобы прошить микроконтроллер или мобильный телефон. Или для обмена данными с источником бесперебойного питания. Называются эти порты COM1 и COM2.

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


Для подключения используется разъем DB25 типа «мама». Скорость передачи данных небольшая — но вполне хватает для программатора или старого лазерного принтера. У большинства старых компьютеров всегда было по два последовательных порта и один параллельный.

Порты для клавиатуры и мыши знакомы всем пользователям. В современных компьютерах они имеют фиолетовый и зеленый цвета. Такого же цвета штекеры у мыши и клавы. Перепутать сложно. Разъемы шестиконтактные (mini -Din) типа «мама». Их придумали в Германии и это стало стандартом. Другое название IBM/PC2

так как впервые они были использованы на уже упомянутой платформе IBM PC. Если перепутали при подлкючении разъемы — устройства работать не будут. Несомненный плюс — экономят USB порты. Минус — обязательно требуется перезагрузка компьютера если подключили неправильно. Кстати, тоже исчезающий вид. На многих современных компах этот порт оставлен всего один — и покрашен он одновременно в фиолетово-зеленый цвет. Подключать к нему можно только одно устройство или мышь — или клаву.

Порты USB. Универсальная последовательная шина, (Universal Serial Bus ). C 1998 года вытесняет другие порты; даже на автомагнитолах и видеокамерах Вы сегодня найдете этот разъем. У первых поколений скорость передачи данных была около 12 мб /сек. — умопомрачительная по тем временам. Сегодня мы используем USB 3, скорость которого 5 Гбит/с

Эти порты внешне не изменились. На компьютере стоят разъемы типа «А». Разъем на любом подключаемом устройстве принято называть «B». Имеет четыре контакта два для тока, два для передачи данных. Соответственно, на портах USB 3.0 контактов в два раза больше.

Порты SCSI (Small Computer Systems Interface). Довольно специфическая и редкая вещь у нас; мне думается что и за рубежом ее уже не встретишь у рядового пользователя. Полагаю, что устройства с такими интерфейсами делались под заказ — для корпоративного использования. Это — сетевой интерфейс для обмена данными, со скоростью до 160 мбит/с.


Мне попался один раз ноутбук, привезенный из америки 1999 г. выпуска, фирмы Dell. У него имелся один из таких многоконтактных портов. Расположен он был таким образом, что использовать его можно было, только установив ноутбук на стол. Сам разъем закрыт шторками на пружинках. Следовательно, где -то в Америке были и столы, в которые этот разъем встроен… Приносишь,ставишь на стол, и он подключен к корпоративной сети.

Разновидностями интерфейса являются уже знакомый нам DB-25, а так же 50-High-Density, 68-контактный -High-Density, 80-контактный SCA, Centronics. Можно было подключать и жесткие диски к этому интерфейсу. Отвечает за подключение специальная плата — хост-адаптер.


Видеопорты . Их так же не спутаешь с другими. Стандартный видеопорт — 15 контактный VGA разъем типа D синего цвета, «мама». Служит для подключения монитора. Это старый стандарт, принятый в 1987 году. Не на всех материнских платах он бывает. Если его нет у вас «на борту», то его можно найти в нижней части системного блока. В слот расширения установлена видеокарта:

Если вы решили установить видеокарту в дополнение к уже имеющейся («на борту»), то последняя работать уже не будет. Это нормально. Монитор будет работать только при подключении к установленной.

На современных видеокартах VGA порт уже стало трудно встретить; их заменяют другой разновидностью — DVI. На материнской плате переходного типа это выглядит как то так:

Очень часто встречаются случаи, когда выходит из строя VGA- видеокарта. После покупки новой, обнаруживается, что на ней только DVI — порты.В этом случае нужно приобрести переходник и установить его на разъем DVI:

Обращайте внимание, на тип переходника. Дело в том, что и DVI разъемы отличаются — на новых дорогих видеокартах стоят DVI-D или DVI-I порты. Переходники не взаимозаменяемые, уточняйте этот момент у продавца.

В этом случае не нужно будет покупать новый монитор. Новые мониторы пока тоже идут с двумя типами разъемов — VGA и DVI.

Порт HDMI. Куда теперь без него в 21 веке? Мультимедиа-интерфейс предназначен для передачи видео и аудио высокой четкости с защитой от копирования. Одновременно заменяет как и вышеперечисленные видео так и некоторые аудио порты(SCART, VGA, YPbPr, RCA, S-Video.). Наверное этот интерфейс со временем заменит все остальное. Его можно встретить на любой цифровой технике — от фотоаппарата до компьютера (или ноутбука).

Размер сравним с USB портом, а скорость передачи данных огромна по сравнению с выше перечисленными — до 48 Гбит в секунду. Передача данных осуществляется по кабелю с хорошей защитой от помех. Кабель можно подключить к ноутбуку и к телевизору и смотреть видео. Длинна кабеля не должна превышать 10 метров, в противном случае нужен усилитель/повторитель сигнала.

Про аудио-разъемы подробно говорить не буду. Все примерно так же выглядит, как на домашнем DVD проигрывателе, если речь идет о чем- то особенном. В качестве такого примера можно привести разъем SPDiF, который можно было устанавливать на слот расширения:

Аудиостандарт от фирмы SONY и PHILIPS, эта карта подключается к материнской плате с помощью коннектора на соосветствующий разъем. Стандартные гнезда для подключения микрофона, колонок, наушников выглядят так:

Если хотите HD аудио, то возможно вам придется подключить соответствующий адаптер вот сюда. Читайте документацию по своей материнке:

Сетевые порты. Без них в наше время никак не обойтись. Мы получаем интернет именно через сетевой интерфейс по кабелю, или по радио. На материнских платах стоит стандартный встроенный разъем RJ 45 для подключения интернет- кабеля:

На старых компьютерах стандарт скорости был 100 мбит /с, современные сетевые карты выдают 1000 мбит/сек. Если Вам не достаточно одной сетевой карты, можно купить дополнительную и вставить ее в слот расширения:

Такая карта подходит для PCI слота. Есть варианты и поменьше, для PCI-express:

Уточняйте скорость передачи данных той или иной карты при покупке. Для любителей беспроводных сетей так же представлен широки выбор Wi-Fi адаптеров:

Их так же можно подключить в слоты расширения PCI ,либо PCI — ехpress. Однако, если Вы не хотите ковыряться в системном блоке, можно купить и USB — вариант такой карты:

Вы вставляете ее в порт и вводите пароль от WIFI. И у вас подключено еще одно периферийное устройство. У многих моделей домашних принтеров так же есть адаптер WIi-Fi, и при такой настройке можно печатать без проводов. Благо, сегодня богатый выбор и сетевых карт и принтеров.

Как отключить USB порты при выключении компьютера?

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

Клавиатура так же светится, что ночью не совсем удобно, хотя и не плохо (если печатаешь в темноте). Для того, чтобы отключить питание портов насовсем — попробуйте набрать сочетание клавиш Win+R и в строке «Выполнить» вставить команду powercfg /h off.

После чего нужно выключить компьютер. Симптомы скорее всего исчезнут. Эта команда отключает режим сна, и компьютер вырубается полностью. Можно посмотреть в панели управления настройки по питанию в «Плане электропитания» Но, есть такие модели плат, где эта настройка выключается через BIOS. А на самых передовых эта функция не отключается или спрятана очень глубоко. Предполагается, что так удобно ночью заряжать гаджеты.

В трудных случаях может помочь документация по материнской плате. Находите нужную перемычку (джампер) и вручную отключаете питание. Но это слишком сложно. А самый простой способ — это купить USB — хаб с выключателями и к нему уже подсоединить нужную периферию. И не мучиться. Пока, до новых встреч!

THR - промежуточный регистр данных передатчика (только для записи) Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS . Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются.
RBR - буферный регистр принимаемых данных (только для чтения) Данные, принятые входным сдвигающим регистром помещаются в регистр RBR , откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение.
DLL - регистр младшего байта делителя частоты .
DLM - регистр старшего байта делителя частоты . Делитель определяется по формуле D=115200/V, где V - скорость передачи, бит/с. Входная частота синхронизации 1 8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.
IЕR - регистр разрешения прерываний . Единичное значение бита разрешает прерывание от соответствующего источника.
Назначение бит регистра IER :
* биты =0 - не используются;
* бит 3 - Mod_IЕ - по изменению состояния модема (любой из линий CTS, DSR, RI, DCD );
* бит 2 - RxL_IЕ - по обрыву/ошибке линии;
* бит 1 - TxD_IE - по завершении передачи;
* бит 0 - RxD_IЕ - по приему символа (в режиме FIFO - прерывание по тайм-ауту).
IIR - регистр идентификации прерываний и признака режима FIFO (только для чтения). Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение регистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника. Ниже описано назначение бит регистра IIR .
* Биты - признак режима FIFO:
11-режим FIFO 16550A;
10 - режим FIFO 16550;
00 - обычный.
* Биты - не используются.
* Бит 3 - прерывание по тайм-ауту приема в режиме FIFO (в буфере есть символы для считывания).
* Биты - причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):
11 - ошибка/обрыв линии, сброс выполняется чтением регистра состояния линии;
10 - принят символ, сброс выполняется чтением данных;
01 - передан символ (регистр THR пуст), сброс выполняется записью данных;
00 - изменение состояния модема; сброс выполняется чтением регистра состояния модема.
* Бит 0 - признак необслуженного запроса прерывания (1 - нет запроса, 0 - есть запрос).
В режиме FIFO причину прерывания идентифицируют биты .
* О11 - ошибка/обрыв линии. Сброс выполняется чтением регистра состояния линии.
* 010 - принят символ. Сброс выполняется чтением регистра данных приемника
* 110 - индикатор тайм-аута (за 4-кратный интервал времени символа не передано и не принято ни одного символа, хотя в буфере имеется, по крайней мере, один). Сброс выполняется чтением регистра данных приемника.
* 001 - регистр THR пуст. Сброс выполняется записью данных.
* 000 - изменение состояния модема (CIS, DSR, RI или DCD ). Сброс выполняется чтением регистра MSR .
FCR - регистр управления FIFO (только для записи). Ниже описано назначение бит регистра FCR :
* Биты - ITL (Interrupt Trigger Level) - уровень заполнения FIFO-буфера, при котором вырабатывается прерывание:
00 - 1 байт (по умолчанию);
01 - 4 байта;
10 - 8 байт;
11 - 14 байт.
* Биты зарезервированы.
* Бит 3 - разрешение операций DMA.
* Бит 2 - RESETTF (Reset Transmitter FIFO) - сброс счетчика FIFO-передатчика (записью единицы; сдвигающий регистр не сбрасывается).
* Бит 1 - RESETRF (Reset Receiver FIFO) - сброс счетчика FIFO-приемника (записью единицы; сдвигающий регистр не сбрасывается).
* Бит 0 - TRFIFOE (Transmit And Receive FIFO Enable) - разрешение (единицей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.
LCR - регистр управления линией (настройки параметров канала). Ниже описано назначение бит регистра LCR .
* Бит 7 - DLAB (Divisor Latch Access Bit) - управление доступом к делителю частоты.
* Бит 6 - BRCON (Break Control) - формирование обрыва линии (посылка нулей) при BRCON=1.
* Бит 5 - STICPAR (Sticky Parity) - принудительное формирование бита паритета:
0 - контрольный бит генерируется в соответствии с паритетом выводимого символа;
1 - постоянное значение контрольного бита: при EVENPAR =1 - нулевое, при EVENPAR =0 - единичное.
* Бит 4 - EVENPAR (Even Parity Select) - выбор типа контроля: 0 - нечетность, 1 - четность.
* Бит 3 - PAREN (Parity Enable) - разрешение контрольного бита:
1 - контрольный бит (паритет или постоянный) разрешен;
0 - контрольный бит запрещен.
* Бит 2 - STOPB (Stop Bits) - количество стоп-бит:
0 - 1 стоп-бит;
1 - 2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бит).
* Биты - SERIALDB (Serial Data Bits) - количество бит данных:
00 - 5 бит;
01-6 бит;
10 - 7 бит;
11 - 8 бит.
MCR - регистр управления модемом . Ниже описано назначение бит регистра MCR .
* Биты =0 - зарезервированы.
* Бит 4 - LME (Loopback Mode Enable) - разрешение режима диагностики:
0 - нормальный режим;
1 - режим диагностики (см. ниже).
* Бит 3 - IE (Interrupt Enable) - разрешение прерываний с помощью внешнего выхода OUT2 MSR.7 :
0 - прерывания запрещены;
1 - прерывания разрешены.
* Бит 2 - OUT1C (OUT1 Bit Control) - управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход MSR.6 .
* Бит 1 - RTSC (Request To Send Control) - управление выходом RTS ; в режиме диагностики поступает на вход MSR.4 :
0 - активен (-V);
1 - пассивен (+V).
* Бит 0 - DTRC (Data Terminal Ready Control) - управление выходом DTR ; в режиме диагностики поступает на вход MSR.5 :
0 - активен (-V);
1 - пассивен (+V).
LSR - регистр состояния линии (точнее, состояния приемопередатчика). Ниже описано назначение бит регистра LSR.
* Бит 7 - FIFOE (FIFO Error Status) - ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В не FIFO-режиме всегда 0.
* Бит 6 - TEMPT (Transmitter Empty Status) - регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах THR или FIFO).
* Бит 5 - THRE (Transmitter Holding Register Empty) - регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания.
* Бит 4 - BD (Break Detected) - индикатор обрыва линии (вход приемника находится в состоянии 0 не менее, чем время посылки символа).
* Бит 3 - FE (Framing Error) - ошибка кадра (неверный стоп-бит).
* Бит 2 - РЕ (Parity Error) - ошибка контрольного бита (паритета или фиксированного).
* Бит 1 - ОЕ (Overrun Error) - переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий выгружен из сдвигающего регистра в буферный регистр или в регистр FIFO, прежний символ в сдвигающем регистре теряется.
* Бит 0 - DR (Receiver Data Ready) - принятые данные готовы (в DHR или FIFO-буфере). Сброс - чтением приемника.
Индикаторы ошибок - биты - сбрасываются после чтения регистра LSR . В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один «обрывной» символ, и UART ждет восстановления и последующего старт-бита. MSR - регистр состояния модема. Ниже описано назначение бит регистра MSR :
* Бит 7 - DCD (Data Carrier Detect) - состояние линии DCD :
0 - активна (-V);
1 - пассивна (+V).
* Бит 6 - RI (Ring Indicator) - состояние линии RI :
0 - активна (-V);
1 - пассивна (+V).
* Бит 5 - DSR (Data Set Ready) - состояние линии DSR :
0 - активна (-V);
1 - пассивна (+V).
* Бит 4 - CTS (Clear To Send) - состояние линии CTS :
0 - активна (-V);
1 - пассивна (+V).
* Бит 3 - DDCD (Delta Data Carrier Detect) - изменение состояния DCD .
* Бит 2 - TERI (Trailing Edge Of Ring Indicator) - спад огибающей RI (окончание звонка).
* Бит 1 - DDSR (Delta Data Set Ready) - изменение состояния DSR .
* Бит 0 - DCTS (Delta Clear To Send) - изменение состояния CTS .
Признаки изменения (биты ) сбрасываются по чтению регистра.
SRC - рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).
В диагностическом режиме (при LМЕ=1 ) внутри UART организуется внутренняя «заглушка»:
* выход передатчика переводится в состояние логической единицы;
* вход приемника отключается; * входы DSR, CTS, RI и DCD отключаются от входных линий и внутренне управляются битами DTRC, RTSC, OUT1C, IE ;
* выходы управления модемом переводятся в пассивное состояние (логический ноль).
Переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определять скорость работы UART.

Статьи по теме: