Распиновка COM порта(RS232). Распиновка COM порта(RS232) Последовательный интерфейс rs 232
При вычислении последовательный порт представляет собой последовательный интерфейс связи, через который информация передается или выдается за раз. На протяжении большей части истории персональных компьютеров данные передавались через последовательные порты на устройства, такие как модемы, терминалы и различные периферийные устройства.
Хотя такие интерфейсы, как Ethernet, FireWire и USB, все отправляют данные в виде последовательного потока, термин «последовательный порт» обычно идентифицирует аппаратное обеспечение, более или менее совместимое со стандартом RS-232, предназначенное для взаимодействия с модемом или с аналогичной связью Устройства.
Современные компьютеры без последовательных портов могут потребовать конвертеры с последовательным интерфейсом, чтобы обеспечить совместимость с последовательными устройствами RS-232. Серийные порты все еще используются в таких приложениях, как системы промышленной автоматизации, научные приборы, системы продаж и некоторые промышленные и потребительские товары. Серверные компьютеры могут использовать последовательный порт в качестве консоли управления или диагностики. Сетевое оборудование (например, маршрутизаторы и коммутаторы) часто используют последовательную консоль для конфигурации. Серийные порты по-прежнему используются в этих областях, поскольку они просты, дешевы, а их консольные функции высоко стандартизированы и широко распространены.
Распиновка COM порта(RS232)
Существует 2-е разновидности com порта, 25-и пиновый старый разъем и сменившей его более новый 9-и пиновый разъем.
Ниже приведена схема типового стандартного 9-контактного разъема RS232 с разъемами, этот тип разъема также называется разъемом DB9.
- Обнаружение несущей(DCD).
- Получение данных(RXD).
- Передача данных(TXD).
- Готовность к обмену со стороны приемника(DTR).
- Земля(GND).
- Готовность к обмену со стороны источника(DSR).
- Запрос на передачу(RTS).
- Готовность к передаче(CTS).
- Сигнал вызова(RI).
RJ-45 к DB-9 Информация о выводе адаптера последовательного порта для коммутатора
Консольный порт представляет собой последовательный интерфейс RS-232, который использует разъём RJ-45 для подключения к управляющему устройству, например ПК или ноутбуку. Если на вашем ноутбуке или ПК нет штыря разъема DB-9, и вы хотите подключить ноутбук или ПК к коммутатору, используйте комбинацию адаптера RJ-45 и DB-9.
DB-9 | RJ-45 | ||
---|---|---|---|
Получение Данных | 2 | 3 | |
Передача данных | 3 | 6 | |
Готовность обмену | 4 | 7 | |
Земля | 5 | 5 | |
Земля | 5 | 4 | |
Готовность обмену | 6 | 2 | |
Запрос на передачу | 7 | 8 | |
Готовность к передаче | 8 | 1 |
Цвета проводов:
1 Черный
2 Коричневый
3 Красный
4 Оранжевый
5 Желтый
6 Зеленый
7 Синий
8 Серый (или белый)
Тверской государственный технический университет
В.В. Лебедев, А.Н. Васильев, А.Р. Хабаров
Периферийные устройства ЭВМ
Учебное пособие
Издание первое
Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 230101 Вычислительные машины, комплексы системы и сети.
УДК 681.327.8(075.8)
ББК 32.973.26-04я7
Лебедев, В.В. Периферийные устройства ЭВМ: учебное пособие / В.В. Лебедев, А.Н. Васильев, А.Р. Хабаров. 1-е изд. Тверь: ТГТУ, 2009. 176 с.
Включает описание принципов работы и взаимодействия периферийных устройств и ЭВМ. Подробно рассмотрен один из самых успешно применяемых интерфейсов RS-232С. Материал пособия позволяет студентам ознакомиться с теоретическими основами работы модема, клавиатуры, принтера и видеоадаптера и закрепить их при выполнении предложенного лабораторного практикума.
Предназначено для студентов специальности 230101 Вычислительные машины, комплексы, системы и сети для изучения данной дисциплины, при курсовом и дипломном проектировании.
Рецензенты: заведующий кафедрой ЭВМ Тверского государственного технического университета, доктор технических наук, профессор В.А. Григорьев; Федеральное государственное унитарное предприятие «Центральное конструкторское бюро транспортного машиностроения» (ведущий инженер Д.В. Суринский).
ISBN 978-5-7995-0427-4 © Тверской государственный
технический университет, 2009
Введение
Современные компьютеры представляют собой сложный аппаратно-программный комплекс, предназначенный для автоматической обработки информации в процессе решения вычислительных и информационных задач. Благодаря принципу открытой архитектуры, существует возможность подключения к системному блоку компьютера широкого спектра дополнительных периферийных устройств различного назначения. С помощью периферийных устройств осуществляется связь с различными источниками (поставщиками) и получателями (потребителями) информации. Функции периферийных устройств достаточно разнообразны, однако среди них можно выделить две основные: хранение информации на различных носителях данных и преобразование ее согласно функции, выполняемой внешним устройством. К периферийным устройствам относятся устройства ввода-вывода и внешняя память; к аппаратным средствам ввода информации в компьютер – клавиатура, различного рода манипуляторы (мышь, трекбол, джойстик), сканер и другие устройства; к аппаратным средствам вывода информации из компьютера – мониторы, принтеры, графопостроители, синтезаторы речи. Модемы используются как для передачи, так и для приема информации. Устройства внешней памяти компьютера выполняют функции двустороннего обмена информацией и служат для постоянного хранения программ и данных.
Коммуникация компьютера с периферийными устройствами осуществляется посредством портов ввода-вывода или интерфейсов. Под интерфейсом понимается совокупность правил и средств, устанавливающих единые принципы взаимодействия устройств. Интерфейс периферийного устройства включает в себя техническое исполнение, наборы передаваемых сигналов и правила обмена информацией с компьютером. Существуют два основных класса: последовательные и параллельные интерфейсы. Чисто теоретически параллельные всегда должны выигрывать по скорости у последовательных, но на практике оказывается, что и последовательные имеют свои плюсы, благодаря чему они заняли свою нишу.
Изучение интерфейсов для связи с периферийными устройствами необходимо, так как грамотный специалист по вычислительной технике должен владеть теоретическими знаниями и практическими навыками для построения различных устройств сопряжения на базе существующих стандартных интерфейсов, а также в случае необходимости разрабатывать свои собственные интерфейсы.
В учебном пособии рассмотрены принципы работы одного из самых широко применяемых интерфейсов – RS-232C или COM-порта. Его изучение позволит достаточно быстро освоить принципы функционирования последовательных интерфейсов, протоколов работы электронных схем передачи последовательных сигналов, и перейти к освоению других последовательных интерфейсов: USB и FireWire.
Рассмотрены различные периферийные устройства, такие как модем, клавиатура, принтер и монитор. Особое внимание уделено рассмотрению их интерфейсов. Дан большой объем справочной информации.
Приведен лабораторный практикум, выполнение которого поможет закреплению и лучшему усвоению теоретического материала, а также приобретению практических навыков в разработке и использовании интерфейсов периферийных устройств.
Учебное пособие ориентировано в первую очередь на студентов и преподавателей вузов, аспирантов и молодых специалистов, работа и исследования которых затрагивают вопросы взаимодействия компьютера и периферийных устройств.
Интерфейс RS-232C
Интерфейс RS-232C – CОМ-порт
Последовательный интерфейс для передачи данных в одном направлении использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Английские названия интерфейса и порта Serial interface и Serial port иногда неправильно переводят как «серийные». Последовательная передача позволяет сократить количество сигнальных линий и добиться улучшения связи на больших расстояниях.
Начиная с первых моделей, в PC имелся последовательный порт – CОМ-порт (Communication Port – коммуникационный порт). Этот порт обеспечивает асинхронный обмен по стандарту RS-232C. Синхронный обмен в PC поддерживают лишь специальные адаптеры, например SDLC или V.35. CОМ-порты реализуются на микросхемах универсальных асинхронных приемопередатчиков (UART), совместимых с семейством i8250/16450/16550. Они занимают в пространстве ввода-вывода по 8 смежных 8-битных регистров и могут располагаться по стандартным базовым адресам 3F8h (CОМ1), 2F8h (CОМ2), 3E8h (CОМ3), 2E8h (CОМ4). Порты могут вырабатывать аппаратные прерывания IRQ4 (обычно используется для CОМ1 и CОМ3) и IRQ3 (для CОМ2 и CОМ4). С внешней стороны порты имеют линии последовательных данных передачи и приема, а также наборы сигналов управления и состояния, соответствующие стандарту RS-232C. CОМ-порты имеют внешние разъемы-вилки (male) DB25P или DB9P, выведенные на заднюю панель компьютера. Гальваническая развязка отсутствует – схемная земля подключаемого устройства соединяется со схемной землей компьютера. Скорость передачи данных может достигать 115 200 бит/с.
Компьютер может иметь до четырех последовательных портов CОМ1 – CОМ4 (для машин класса AT типично наличие двух портов) с поддержкой на уровне BIOS. Сервис BIOS Int 14h обеспечивает инициализацию порта, ввод и вывод символа (без прерываний) и опрос состояния. Через Int 14h скорость передачи программируется в диапазоне 110-9600 бит/с (меньше, чем реальные возможности порта). Для повышения производительности широко используется взаимодействие программ с портом на уровне регистров, для чего требуется совместимость аппаратных средств CОМ-порта с программной моделью i8250/16450/16550.
Название порта указывает на его основное применение – подключение коммуникационного оборудования (например, модема) для связи с другими компьютерами, сетями и периферийными устройствами. К порту могут непосредственно подключаться и периферийные устройства с последовательным интерфейсом: принтеры, плоттеры, терминалы и т.д. CОМ-порт широко используется для подключения мыши, а также организации непосредственной связи двух компьютеров. К CОМ-порту подключаются и электронные ключи.
Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенные адаптеры двух CОМ-портов. Один из портов может использоваться и для беспроводной инфракрасной связи с периферийными устройствами (IrDA). Существуют карты ISA с парой CОМ-портов, где они чаще всего соседствуют с LPT-портом, а также с контроллерами дисковых интерфейсов. «Классический» CОМ-порт позволяет осуществлять обмен данными только программно-управляемым способом, при этом для пересылки каждого байта процессору приходится выполнять несколько инструкций. Современные порты имеют FIFO-буферы данных и позволяют выполнять обмен данных по каналу DMA, существенно разгружая CPU.
В спецификациях PC`99 традиционные CОМ-порты не рекомендованы, но еще разрешены для использования. Если они есть, то должны быть совместимыми с UART 16550A и обеспечивать скорость до 115,2 Кбит/с. Устройствам, которые традиционно используют CОМ-порт, рекомендуется переводить на последовательные шины USB и FireWire.
Протокол RS-232C
Стандарт RS-232C описывает несимметричные передатчики и приемники – сигнал передается относительно общего провода – схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах, например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице соответствует напряжение на входе приемника в диапазоне -12 … -3В (рис. 1). Логическому нулю соответствует диапазон +3 … +12В. Диапазон -3 … +3В – зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения порога. Уровни сигналов на выходах передатчиков должны быть в диапазонах -12 … -5В и +5 … +12В для представления единицы и нуля соответственно.
Интерфейс предполагает наличие защитного заземления для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры.
Наиболее часто используются трех- или четырехпроводная связь (для двунаправленной передачи). Схема соединения для четырехпроводной линии связи показана на рис. 2. Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.
Рис.1. Уровни сигналов RS-232C на передающем
и принимающих концах линии связи
Рис.2. Схема четырехпроводной линии связи для RS-232C
Назначение контактов разъемов CОМ-портов (и любой другой аппаратуры передачи данных АПД) приведено в табл. 1. У модемов название цепей и контактов такое же, но роли сигналов (вход-выход) меняются на противоположные.
Подмножество сигналов RS-232C, относящихся к асинхронному режиму, рассмотрим с точки зрения CОМ-порта PC. Для удобства будем пользоваться мнемоникой названий, принятой в описаниях CОМ-портов и большинства устройств (она отличается от безликих обозначений RS-232 и V.24). Назначение сигналов интерфейса приведено в табл. 2.
Таблица 1. Разъемы и сигналы интерфейса RS-232C
Обозначение цепи | Контакт разъема | № провода кабеля выносного разъема PC | Направле-ние | ||||||
CОМ-порт | RS-232 | V.24 | DB-25P | DB-9P | 1 1 | 2 2 | 3 3 | 4 4 | I/O |
PG | AA | (10) | (10) | (10) | - | ||||
SG | AB | - | |||||||
TD | BA | O | |||||||
RD | BB | I | |||||||
RTS | CA | O | |||||||
CTS | CB | I | |||||||
DSR | CC | I | |||||||
DTR | CD | 108/2 | O | ||||||
DCD | CF | I | |||||||
RI | CE | I |
Примечания:
1 Ленточный кабель 8-битных мультикарт.
2 Ленточный кабель 16-битных мультикарт и портов на системных платах.
3 Вариант ленточного кабеля портов на системных платах.
4 Широкий ленточный кабель к 25-контактному разъёму.
Нормальная последовательность управляющих сигналов для случая подключения модема к CОМ-порту приведена на рис. 3. Напомним, что положительному уровню соответствует логическое состояние «выключено», а отрицательному – «включено».
Таблица 2. Назначение сигналов интерфейса RS-232C
Сигнал | Назначение |
PG | Protected ground – защитная земля, соединяется с корпусом устройства и экраном кабеля |
SG | Signal ground – сигнальная (схемная) земля, относительно которой действуют уровни сигналов |
TD | Transmit data – последовательные данные – выход передатчика |
RD | Receive data – последовательные данные – вход приемника |
RTS | Request to send – выход запроса передачи данных: состояние «включено» уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением – состояние «включено» служит сигналом модему на переключение в режим передачи |
CTS | Clear to send – вход разрешения терминалу передавать данные. Состояние «выключено» запрещает передачу данных. Сигнал используется для аппаратного управления потоком данных |
DSR | Data set ready – вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала) |
DTR | Data terminal ready – выход сигнала готовности терминала к обмену данными, состояние «включено» поддерживает коммутируемый канал в состоянии соединения |
DCD | Data carrier detected – вход сигнала обнаружения несущей удаленного модема |
RI | Ring indicator – вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова |
Рис. 3. Последовательность управляющих сигналов интерфейса RS-232C
Рассмотрим последовательность управляющих сигналов.
1. Установкой сигнала DTR компьютер указывает на желание использовать модем.
2. Установкой сигнала DSR модем сигнализирует о своей готовности к установлению соединения.
3. Сигналом RTS компьютер запрашивает разрешение на передачу и заявляет о своей готовности принимать данные от модема.
4. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию.
5. Снятием сигнала CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) – компьютер должен приостановить передачу данных.
6. Восстановлением сигнала CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место).
7. Снятие сигнала RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер.
8. Модем подтверждает снятие сигнала RTS сбросом сигнала CTS.
9. Компьютер повторно устанавливает сигнал RTS для возобновления передачи.
10. Модем подтверждает готовность к этим действиям.
11. Компьютер указывает на завершение обмена.
12. Модем отвечает подтверждением.
13. Компьютер снимает сигнал DTR, что обычно является сигналом на разрыв соединения.
14. Модем сбросом сигнала DSR сообщает о разрыве соединения.
Из рассмотрения этой последовательности становятся понятными соединения DTR-DSR и RTS-CTS в нуль-модемных кабелях.
При асинхронной передаче (рис. 4) каждому байту предшествует старт-бит, сигнализирующий приемнику о начале посылки, за которым следуют биты данных и, возможно, бит паритета (четности). Завершает посылку стоп-бит, гарантирующий паузу между посылками. Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами возможны паузы произвольной длительности. Старт-бит, имеющий всегда строго определенное значение (логический 0), обеспечивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена.
Формат асинхронной посылки позволяет выявлять возможные ошибки передачи: ложный старт-бит, потерянный стоп-бит, ошибку паритета. Контроль формата позволяет обнаружить разрыв линии: при этом принимается логический нуль, который сначала трактуется как старт-бит и нулевые биты данных, потом срабатывает контроль стоп-бита.
Рис. 4. Формат асинхронной передачи
Для асинхронного режима принят ряд стандартных скоростей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 и 115 200 бит/с. Иногда вместо единицы измерения бит/с используют бод (baud), но при рассмотрении двоичных передаваемых сигналов это некорректно. В бодах принято измерять частоту изменения состояния линии, а при недвоичном способе кодирования (широко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз.
Количество бит данных может составлять 5, 6, 7 или 8. Количество стоп-бит может быть 1, 1,5 или 2 (полтора бита означает только длительность стопового интервала).
Асинхронный режим является байт-ориентированным (символьно- ориентированным) – минимальная пересылаемая единица информации – байт (символ). В отличие от него синхронный режим (не поддерживается CОМ-портами) является бит-ориентированным – кадр, пересылаемый по нему, может иметь произвольное количество бит.
RS 232
RS-232 - это стандартный электрический интерфейс для последовательной передачи данных, поддерживающий асинхронную связь (RS - recommended standard - рекомендованный стандарт, 232 - его номер).
Этот стандарт соединения оборудования был разработан в 1969 году рядом крупных промышленных корпораций и опубликован Ассоциацией электронной промышленности США (Electronic Industries Association - EIA). Международный союз электросвязи ITU-T использует аналогичные рекомендации под названием V.24 и V.28.
Интерфейс RS-232 обеспечивает соединение двух устройств, одно из которых называется DTE (Data Terminal Equipment) - ООД (Оконечное Оборудование Данных) и второе - DCE (Data Communications Equipment) - ОПД (Оборудование Передачи Данных).
Как правило, DTE (ООД) - это компьютер, а DCE (ОПД) - это модем, хотя RS-232 использовался и для подключения к компьютеру периферийных устройств (мышь, принтер, прибор), и для соединения с другим компьютером или контроллером. Обозначения DTE и DCE используются в названиях сигналов интерфейса и помогают разобраться с описанием конкретной реализации.
Интерфейс RS-232 (стандарт EIA-232) использует 25 контактные разъемы DB и служит для подключения последовательных устройств DTE и DCE (как в синхронном, так и в асинхронном режиме). Существуют также варианты этого интерфейса для 26-контактного разъема UD-26 (EIA-232-E/RS-232E ALT A) и усеченный вариант — для 9-контактного DB-9 (EIA-574) и RJ-45 (EIA-561) наиболее распространенные в настоящее время.
Контакт |
Сигнал |
От устройства DCE |
К устройству DCE |
|
Передача (Transmitted Data, TD) |
||||
Прием (Received Data, RD) |
||||
Запрос на передачу (Request to Send, RTS) |
||||
Готовность к передаче (Clear to Send, CTS) |
||||
Готовность данных (Data Set Ready, DSR) |
||||
Сигнальная " земля " (Signal Gnd/Common Return) |
||||
Детектирование несущей (Rcvd. Line Signal Detector, CD, DCD) |
||||
Тестовое напряжение (+) |
||||
Тестовое напряжение (-) |
||||
Не используется |
||||
Детектирование несущей, возврат (Rcvd. Line Signal Detector, CD) |
||||
Готовность к передаче, возврат (Secondary Clear to Send) |
||||
Передача, возврат (Secondary Transmitted Data) |
||||
Прием, возврат (Secondary Received Data) |
||||
Тактирование приема (Receiver Sig. Element Timing, RSET) |
||||
Локальный шлейф (LL) |
||||
Запрос на передачу, возврат (Secondary Request to Send) |
||||
Готовность терминала (Data Terminal Ready, DTR) |
||||
Детектирование качества сигнала (Sig. Quality Detector) |
||||
Индикатор вызова (Ring Indicator) |
||||
Выбор скорости (Data Sig. Rate Selector (DCE)) |
||||
Тактирование передачи (Transmitter Sig. Element Timing, TSET) |
||||
Не используется |
D — данные, C — управление, T — синхронизация
Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи центрального компьютера с терминалом. В настоящее время используется в самых различных применениях.
Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс). Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.
Порядок обмена по интерфейсу RS- 232C
Наименование |
Направление |
Описание |
Контакт |
Контакт |
Carrier Detect |
||||
Receive Data |
||||
Transmit Data |
||||
Data Terminal Ready |
||||
System Ground |
||||
Data Set Ready |
||||
Request to Send |
||||
Clear to Send |
||||
Ring Indicator |
Интерфейс RS- 232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS- 232C по сравнению с Centronics являются возможность передачи на значительно большие расстояния и гораздо более простой соединительный кабель. В то же время работать с ним несколько сложнее. Данные в RS- 232C передаются в последовательном коде побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону (дуплексный режим).
Компьютер имеет 25-контактный (DB25) или 9-контактный (DB9) разъем для подключения RS- 232C . Назначение контактов разъема приведено в таблице.
Назначение сигналов следующее:
FG — защитное заземление (экран).
TxD — данные, передаваемые компьютером (логика отрицательная).
RxD — данные, принимаемые компьютером (логика отрицательная).
RTS(Request to Send) — сигнал запроса передачи. Активен во все время передачи.
CTS(Clear to Send) — сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.
DSR — готовность данных. Используется для задания режима модема.
SG — сигнальное заземление, нулевой провод.
DCD — обнаружение несущей данных (детектирование принимаемого сигнала).
DTR — готовность выходных данных.
RI — индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.
Наиболее часто используются трех- или четырехпроводная связь (для двунапрaвленной передачи). Схема соединения для четырехпроводной линии связи показана на рисунке 1.1.
Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.
Формат передаваемых данных показан на рисунке 1.2. Собственно данные (5, 6, 7 или 8 бит) соопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определннные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение — не более 10%). Скорость передачи по RS- 232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.
Рис. 1.1 Схема 4-проводной линии связи для RS- 232C .
Все сигналы RS- 232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис.1.3.). Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю — высокий уровень).
Для подключения произвольного УС к компьютеру через RS- 232C обычно используют трех- или четырехпроводную линию связи (см. рис. 1.1), но можно задействовать и другие сигналы интерфейса.
Рис. 1.2 Формат данных RS- 232C
Обмен по RS- 232C осуществляется с помощью обращений по специально выделенным для этого портам COM1 (адреса 3F8h…3FFh, прерывание IRQ4), COM2 (адреса 2F8h…2FFh, прерывание IRQ3), COM3 (адреса 3F8h…3EFh, прерывание IRQ10), COM4 (адреса 2E8h…2EFh, прерывание IRQ11). Форматы обращений по этим адресам можно найти в многочисленных описаниях микросхем контроллеров последовательного обмена UART (Universal Asynchronous Receiver/Transmitter), например, i8250, КР580ВВ51.
Рис.1.3 Уровни сигналов RS- 232C на передающем и принимающем концах линии связи.
Ключевые моменты:
1. Любая программа, способная обращаться к COM-портам c номерами от 5 и выше, скорее всего использует вызовы Windows API и потому есть большая вероятность того, что она будет работать и с USB’шным COM-портом.
2. Прикладная программа, работающая через специфические драйверы, может вызвать проблемы: "заказные" драйверы могут отсылать портам специальные команды, не распознаваемые Windows. Такая ситуация может не позволить обращаться к COM-порту через USB.
3. В случаях, когда прикладное ПО требует от пользователя указать адрес ввода-вывода и IRQ, есть большая вероятность того, что это ПО не распознает адаптер USB / RS232.
Оценка статьи:
Существует несколько стандартов RS-232, различающихся буквой в суффиксе: RS-232C. RS-232D. RS-232E и пр. Вдаваться в различия между ними нет никакого смысла- они являются лишь последовательным усовершенствованием и детализацией технических особенностей одного и того же устройства. Все современные порты поддерживают спецификации RS-232D или RS- 232Е. В состав любого порта с интерфейсом RS-232 (в том числе СОМ-порта PC) входит универсальный асинхронный приемопередатчик (Universal Asynchronous Receiver-Transmitter. UART), который потому и носит название "универсального", что одинаков для всех подобных интерфейсов (кроме RS-232, это RS-485 и RS-422 1). Также в RS-232 входит схема преобразования логических уровней UART (это обычные логические уровни 0^5 илн 0+3,3 В) в уровни RS-232, где биты передаются разпополярными уровнями напряжения, притом инвертированными относительно IJART. В UART действует положительная логика, где логическая 1 есть высокий уровень (+3 или +5 В), а у RS-232 наоборот, логическая I есть отрицательный уровень от -3 до -12 В, а логический 0 - положительный уровень от +3 до +12 В.
Сама идея передачи по этому интерфейсу заключается в передачи целого байта по одному проводу в аиде последовательных импульсов, каждый ич которых может быть 0 или 1. Если в определенные моменты времени считывать состояние линии, то можно восстановить то. что было послано. Однако эта простая идея натыкается на определенные трудности. Для приемника и передатчика, связанных между собой тремя проводами ("земля" и два сиг нальных провода "туда" и "обратно"), приходится задавать скорость передачи и приема, которая должна быть одинакова для устройств на обоих концах линии. Эти скорости стандартизированы, и выбираются из ряда 1200, 2400. 4800, 9600. 14 400, 19 200. 28 800, 38 400, 56 000, 57 600, 115 200, 128 000, 256 000 (более медленные скорости я опустил) 2 . Число это обозначает количество передаваемых/принимаемых бит в секунду (бод). Проблема состоит в том, что приемник и передатчик - это физически совершенно разные системы, и скорости эти для них не могут быть строго одинаковыми в принципе (из-за разброса параметров тактовых генераторов), и даже если их каким-то фантастическим образом синхронизировать в начале, то они в любом случае быстро "разъедутся". Поэтому такая передача всегда сопровождается начальным (стартовым) битом, который служит для синхронизации. После нею идут восемь (или девять - если используется проверка на четность) информационных битов, а затем стоповые биты, которых может быт ь один, два и более, но это уже не имеет принципиального значения - почему, мы сейчас увидим.
Общая диаграмма передачи таких последовательностей показана на рис. ГИЛ. Хитрость заключается в том, что состояния линии передачи, называемые стартовый и столовый биты, имеют разные уровни. В данном случае стартовый бит передается положительным уровнем напряжения (логическим нулем), а столовый- отрицательным уровнем (логической единицей) 3 , по-
Обычный формат данных, по которому работает львиная доля всех устройств, обозначается 8nl, что читается так: 8 информационных бит, no parity,
тому фронт стартового бита всегда однозначно распознается. В этот-то момент и происходит синхронизация. Приемник отсчитывает время от фронта стартового бита, равное Ъ А периода заданной частоты обмена (чтобы попасть примерно в середину следующего бита), и затем восемь (или девять, если это задано заранее) раз подряд с заданным периодом регистрирует состояние линии. После этого линия переходит в состояние стопового бита и может в нем пребывать сколь угодно долго, пока не придет следующий стартовый бит. Задание минимального количества стоповых битов, однако, производится тоже- для того чтобы приемник знал, сколько времени минимально ему нужно ожидать следующего стартового бита (как минимум, это может быть, естественно, один период частоты обмена, т. е. один стоповый бит). Если по истечении этого времени стартовый бит не придет, приемник может регистрировать так называемый Timeout, т. е. перерыв, по-русски, и заняться своими делами. Если же линия "зависнет" в состоянии логического 0 (высокого уровня напряжения), то это может восприниматься устройством, как состояние "обрыва" линии- не очень удобный механизм, и в микроконтроллерах он через UART не поддерживается. Это не мешает нам, естественно, для установки или определения такого состояния просто отключать UART и устанавливать состояние логического нуля на выводе TxD (что и есть имитация физического "обрыва"), или определять уровень логического 0 на выводе RxD, но серьезных причин для использования этой возможности, я, честно говоря, не вижу (см. на эту тему также замечание в главе 20).
Рис. П4.1. Диаграмма передачи данных по последовательному интерфейсу RS-232
в формате 8N2
1 столовый бит. "No parity" означает, что проверка на четность не производится. Это самая распространенная схема работы такого порта, причем, т. к. никакими тайм-аугами (Timeout) мы также себе голову заморачивать не будем, то нам в принципе все равно, сколько стоповых битов будет, но во избежание излишних сложностей следует их устанавливать всегда одинаково - у передатчика и у приемника. На диаграмме рис. П4.1 показана передача некоего кода, а также, для наглядности, передача байта, состоящего из всеч единиц и из всех нулей в формате, опять же для наглядности, 8п2.
Из описанного алгоритма работы понятно, что погрешность несовпадения скоростей обмена может быть такой, чтобы фронты не "разъезжались" за время передачи/приема всех десяти-двенадцати битов более, чем на полпериода, т. е. в принципе фактическая разница скоростей может достигать 4-5%, но на практике их стараются все же сделать как можно ближе к стандартным величинам.
Приемник RS-232 часто дополнительно снабжают схемой, которая фиксирует уровень не единожды за период действия бита, а трижды, при этом за окончательный результат принимается уровень двух одинаковых из трех полученных состояний линии, таким образом удается избежать случайных помех. Длина линии связи по стандарту не должна превышать 15 м. но на практике это могут быть много большие величины. Если скорость передачи не выбирать слишком высокой, то такая линия может надежно работать на десятки метров (автору этих строк удавалось без дополнительных ухищрений наладить обмен с компьютером на скорости 4800 по кабелю, правда, довольно толстому, длиной около полукилометра). В табл. П4.1 приведены ориентировочные эмпирические данные по длине неэкранированной линии связи для различных скоростей передвчи.
Таблица П4.1. Длина кабеля RS-232 для разных скоростей передачи данных
Эти данные ни в коем случае не могут считаться официальными - слишком много влияющих факторов (уровень помех, толщина проводов, их взаимное расположение в кабеле, фактические уровни напряжения, выходное/входное сопротивление портов и т. п.). В случае экранированного кабеля 4 эти величины можно увеличить примерно в полтора-два раза. Во всех случаях использования "несанкционированной" длины кабеля связи следует применять меры по дополнительной проверке целостности данных- контроль четности, и/или программные способы (вычисление контрольных сумм и т. п.), описанные в главе 20.
Для работы в обе стороны нужно две линии, которые у каждого приемопередатчика обозначаются RxD (приемная) и TxD (передающая). В каждый момент времени может работать только одна из линий, т. е. приемопередатчик либо передает, либо принимает данные, но не одновременно (так называемый "полудуплексный режим" - это сделано потому, что у UART-микросхем чаще всего один регистр и на прием и на передачу). Кроме линий RxD и TxD, в разъемах RS-232 присутствуют также и другие линии. Полный список всех контактов для обоих стандартных разъемов типа DB (9- и 25-контактного) приведен в табл. П4.2. Нумерация контактов DB-разъема обычно написана прямо на нем, она также есть на рис. 10.8 в главе 10 (на примере гнезда разъема для игрового порта DB-15F).
Таблица П4.2. Контакты для ОВ-разьемов
Обозначение |
Направление |
Детектор принимаемого сигнала с линии (Data Carrier Detect) |
Принимаемые данные (Receive Data) |
Передаваемые данные (Transmit Data) |
Готовность выходных данных (Data Terminal Ready) |
Общий (Ground) |
Готовность данных (Data Set Ready) |
Запрос для передачи данных (Request То Send) |
Таблица П4.2 (окончание)
Для нормальной совместной работы приемника и передатчика выводы RxD н TxD, естественно, нужно соединять накрест - TxD одного устройства с RxD второго и наоборот (то же относится и к RTS-CTS и т. д.). Кабели RS-232, которые устроены именно таким образом, называются еще нуль-модемными (в отличие от простых удлинительных). Их стандартная конфигурация показана на рис. П4.2. В варианте "с" (справа на рисунке) дополнительные выводы соединены именно так, как описано ранее.
Рис. П4.2. Схемы нуль-модемных кабелей RS-232: a.b - различные полные варианты,
с - минимальный вариант
Выходные линии RTS и DTR иногда могут использовать и для "незаконных" целей - питания устройств, подсоединенных к СОМ-порту. Именно так устроены, например, компьютерные мыши, работающие через СОМ. Позже мы покажем пример устройства (преобразователя уровней), которое будет использовать питание от вывода RTS. А как при необходимости можно установить эти линии в нужное состояние?
- Tutorial
Вместо вступления
Как обычно я предлагаю заняться странным - попробовать подключить несколько старых RS232 устройств, через один USB порт с помощью синей изоленты и смекалки. Статья не будет большой, скорее это описание что где взять и зачем вообще все это делать.Зачем?
Нужно это бывает когда некий специальный аппаратный комплекс, состоящий из отдельных устройств и который выполняет какую-то единый функционал, вдруг начинают модифицировать. Разумеется что можно попробовать найти комплекс оборудования по новее, но в реальной жизнь на это идут очень редко. Начинают модифицировать то что есть. Иногда вдумчиво, но чаще как получится.Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.
Эти компьютеры не блещут мощностью, но отличаются космической стоимостью. Естественно он перестает отвечать требованиям современных технологий и многим приходит в голову идея заменить их на обычный ПК и получить приличную мощность по адекватной цене, однако быстро выясняется что RS232 на новых ПК вымер как класс. Теперь этот интерфейс стал сугубо специализированным. Соответственно надо или самостоятельно прикручивать кучу RS232 или искать уже готовое спец решение.
Разумеется что можно заменить само оборудование, но если вы посмотрите сколько стоит стационарный лазерный сканер приличной фирмы и помножите эту цену на их количество то передумаете.
Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.
Пробуем что-то сделать
Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.
High level
Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).
Разница заключается в том что в Windows можно обратится напрямую к USB устройству даже если оно зарегистрировано как HID и писать\читать его конечные точки (endpoint). В Linux же приходится работать с hid устройством. То есть устанавливается стандартный драйвер hid и всё, работайте только с ним пожалуйста. Работа таким образом происходит немного медленнее чем напрямую, но напрямую тоже возможно если убедить систему не ставить драйвера. Это реально.
Как и обещал не растягиваю статью и не привожу подробное описание кода, те пару человек кому интересно могут посмотреть проекты и поиграться в живую, а остальным думаю будет полезнее принять к сведению что есть такое решение и прибегнуть к более глубокому изучению в случае необходимости.
Заключение
Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.Не забываем плюсовать
Возможно, будет полезно почитать:
- Установка новой темы на Windows Изменить вид пуска windows 7 ;
- Все что нужно знать о смартфоне! ;
- Download Master Portable скачать бесплатно русская версия Бесстрастный download php ;
- Тюнер для настройки гитары ;
- Утилиты для Windows Скачать набор утилит для windows 7 ;
- Очистка от файлов приложения ;
- Подробный обзор Фото для Mac — все, что вам нужно знать про замену iPhoto и Aperture ;
- Эмулятор CD-чейнджера – можно ли сделать своими руками? ;