Последовательный интерфейс для передачи данных исполь зует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Отсюда название интерфейса и порта. Английские термины - Serial Interface и Serial Port (иногда их неправильно переводят как "серийные"). Последовательная передача позволяет сокра тить количество сигнальных линий и увеличить дальность связи. Характерной особенностью является применение не ТТЛ сигналов. В ряде последовательных интерфейсов при меняется гальваническая развязка внешних (обычно вход ных) сигналов от схемной земли устройства, что позволяет соединять устройства, находящиеся под разными потенциа лами. Ниже будут рассмотрены интерфейсы RS-232C, RS 422А, RS-423A, RS-485, токовая петля, MIDI, а также СОМ-порт. 2.1. Способы последовательной передачи Последовательная передача данных может осуществляться в асинхронном или синхронном режимах. При асинхронной пе редаче каждому байту предшествует старт-бит, сигнализи рующий приемнику о начале посылки, за которым следуют биты данных и, возможно, бит паритета (четности^). Завер шает посылку стоп-бит, гарантирующий паузу межцу посыл ками (рис. 2.1). Старт-бит следующего байта посылается в любой момент после стоп-бита, то есть между передачами воз можны паузы произвольной длительности. Старт-бит, имею щий всегда строго определенное значение (логический 0), обес печивает простой механизм синхронизации приемника по сигналу от передатчика. Подразумевается, что приемник и передатчик работают на одной скорости обмена. Внутренний генератор синхронизации приемника использует счетчик-де литель опорной частоты, обнуляемый в момент приема нача ла старт-бита. Этот счетчик генерирует внутренние стробы, по которым приемник фиксирует последующие принимаемые биты. В идеале стробы располагаются в середине битовых интервалов, что позволяет принимать данные и при незна чительном рассогласовании скоростей приемника и пере датчика. Очевидно, что при передаче 8 бит данных, одного контрольного и одного стоп-бита предельно допустимое рас согласование скоростей, при котором данные будут распоз наны верно, не может превышать 5%. С учетом фазовых ис кажений и дискретности работы внутреннего счетчика синхронизации реально допустимо меньшее отклонение час тот. Чем меньше коэффициент деления опорной частоты внут реннего генератора (чем выше частота передачи), тем больше погрешность привязки стробов к середине битового интерва ла, и требования к согласованности частот становятся более строгими. Чем выше частота передачи, тем больше влияние искажений фронтов на фазу принимаемого сигнала. Взаимо действие этих факторов приводит к повышению требований к согласованности частот приемника и передатчика с ростом частоты обмена. Рис. 2.1. Формат асинхронной передачи Формат асинхронной посылки позволяет выявлять возмож ные ошибки передачи'. ^ Если принят перепад, сигнализирующий о начале посыл ки, а по стробу старт-бита зафиксирован уровень логи ческой единицы, старт-бит считается ложным и прием ник снова переходит в состояние ожидания. Об этой ошибке приемник может и не сообщать. й" Если во время, отведенное под стоп-бит, обнаружен уро вень логического нуля, фиксируется ошибка стоп-бита. 55й Если применяется контроль четности, то после посылки бит данных передается контрольный бит. Этот бит до- 3 Зак.№530 полняет количество единичных бит данных до четного или нечетного в зависимости от принятого соглашения. Прием байта с неверным значением контрольного бита приводит к фиксации ошибки. Контроль формата позволяет обнаруживать обрыв линии: при этом принимаются логический нуль, который сначала трактуется как старт-бит, и нулевые биты данных, потом срабатывает контроль стоп-бита. Для асинхронного режима принят ряд стандартных скоро стей обмена: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600 и 115 200 бит/с. Иногда вместо еди ницы измерения "бит/с" используют "бод" (baud), но при рассмотрении двоичных передаваемых сигналов это некор ректно. В бодах принято измерять частоту изменения со стояния линии, а при недвоичном способе кодирования (ши роко применяемом в современных модемах) в канале связи скорости передачи бит (бит/с) и изменения сигнала (бод) могут отличаться в несколько раз (подробнее см. в прило жении А). Количество бит данных может составлять 5, 6, 7 или 8 (5- и 6-битные форматы распространены незначительно). Коли чество стоп-бит может быть 1, 1,5 или 2 ("полтора бита" означает только длительность стопового интервала). Асинхронный обмен в PC реализуется с помощью СОМ-пор та с использованием протокола RS-232C. Синхронный режим передачи предполагает постоянную ак тивность канала связи. Посылка начинается с синхробайта, за которым сразу же следует поток информационных бит. Если у передатчика нет данных для передачи, он заполняет паузу непрерывной посылкой байтов синхронизации. Оче видно, что при передаче больших массивов данных наклад ные расходы на синхронизацию в данном режиме будут ниже, чем в асинхронном. Однако в синхронном режиме необхо дима внешняя синхронизация приемника с передатчиком, поскольку даже малое отклонение частот приведет к ис кажению принимаемых данных. Внешняя синхронизация возможна либо с помощью отдельной линии для передачи сигнала синхронизации, либо с использованием самосин- хронизирующего кодирования данных, при котором на сто роне приемника из принятого сигнала могут быть выделены импульсы синхронизации. В любом случае синхронный ре жим требует дорогих линий связи или оконечного оборудо вания. Для PC существуют специальные платы - адаптеры SDLC (дорогие), поддерживающие синхронный режим об мена. Они используются в основном для связи с большими машинами (mainframes) IBM и мало распространены. Из синхронных адаптеров в настоящее время применяются адап теры интерфейса V.35. Рис. 2.2. Стандарты последовательного интерфейса На физическом уровне последовательный интерфейс имеет различные реализации, различающиеся способом передачи электрических сигналов. Существует ряд родственных меж дународных стандартов: RS-232C, RS-423A, RS-422A и RS-485. На рис. 2.2 приведены схемы соединения приемни ков и передатчиков, а также показаны ограничения на дли ну линии (L) и максимальную скорость передачи данных (V). Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфазной помехи, хотя дифференциальный вход приемника RS-423A несколь- ко смягчает ситуацию. Лучшие параметры имеет двухточеч ный интерфейс RS-422A и его магистральный (шинный) аналог RS-485, работающие на симметричных линиях свя зи. В них для передачи каждого сигнала используются диф ференциальные сигналы с отдельной (витой) парой прово дов. В перечисленных стандартах сигнал представляется потен циалом. Существуют последовательные интерфейсы, где информативен ток, протекающий по общей цепи передат чик-приемник - "токовая петля" и MIDI. Для связи на ко роткие расстояния приняты стандарты беспроводной инф ракрасной связи. Наибольшее распространение в PC получил простейший из перечисленных - стандарт RS-232C, реализуемый СОМ-портами. В промышленной автоматике широко применяется RS-485, а также RS-422A, встречаю щийся и в некоторых принтерах. Существуют преобразо ватели сигналов для согласования этих родственных ин терфейсов. 2.2. Интерфейс RS-232C Интерфейс предназначен для подключения аппаратуры, передающей или принимающей данные {О ОД - оконечное оборудование данных или АПД - аппаратура передачи дан ных; DTE - Data Terminal Equipment), к оконечной аппарату ре каналов данных (АКД', DCE - Data Communication Equipment). В роли АПД может выступать компьютер, прин тер, плоттер и другое периферийное оборудование. В роли АКД обычно выступает модем. Конечной целью подключе ния является соединение двух устройств АПД. Полная схе ма соединения приведена на рис. 2.3. Интерфейс позволяет исключить канал удаленной связи вместе с парой устройств АПД, соединив устройства непосредственно с помощью нуль модемного кабеля (рис. 2.4). Стандарт описывает управляющие сигналы интерфейса, пе ресылку данных, электрический интерфейс и типы разъе мов. В стандарте предусмотрены асинхронный и синхрон ный режимы обмена, но СОМ-порты поддерживают только асинхронный режим. Функционально RS-232C эквивалентен стандарту МККТТ V.24/ V.28 и стыку С2, но они имеют раз личные названия сигналов. Рис. 2.4. Соединение по RS-232C нуль-модемным кабелем 2.2.1. Электрический интерфейс Стандарт RS-232C использует несимметричные передатчи ки и приемники - сигнал передается относительно общего провода - схемной земли (симметричные дифференциаль ные сигналы используются в других интерфейсах - напри мер, RS-422). Интерфейс НЕ ОБЕСПЕЧИВАЕТ ГАЛЬВАНИ ЧЕСКОЙ РАЗВЯЗКИ устройств. Логической единице соответствует напряжение на входе приемника в диапазоне -12...-3 В. Для линий управляющих сигналов это состояние называется ON( "включено"), для линий последовательных данных - MARK. Логическому нулю соответствует диапазон +3...+12 В. Для линий управляющих сигналов состояние называется OFF ("выключено"), а для линий последователь ных данных - SPACE. Диапазон -3...+3 В - зона нечувстви тельности, обусловливающая гистерезис приемника: состоя ние линии будет считаться измененным только после пересечения порога (рис. 2.5). Уровни сигналов на выходах передатчиков должны быть в диапазонах -12...-5 В и +5...+12 В для представления единицы и нуля соответствен но. Разность потенциалов между схемными землями (SG) соединяемых устройств должна быть менее 2 В, при более высокой разности потенциалов возможно неверное воспри ятие сигналов. Интерфейс предполагает наличие ЗАЩИТНОГО ЗАЗЕМЛЕ НИЯ для соединяемых устройств, если они оба питаются от сети переменного тока и имеют сетевые фильтры. Подключение и отключение интерфейсных кабелей устройств с автономным питанием должно производиться при отклю ченном питании. Иначе разность невыровненных потенциа лов устройств в момент коммутации может оказаться при ложенной к выходным или входным (что опаснее) цепям интерфейса и вывести из строя микросхемы. Рис. 2.5. Прием сигналов RS-232C Для интерфейса RS-232C специально выпускаются буфер ные микросхемы приемников (с гистерезисом и передатчи ком двуполярного сигнала). При несоблюдении правил за земления и коммутации они обычно являются первыми жертвами "пиротехнических" эффектов. Иногда их устанав ливают в "кроватках", что облегчает замену. Цоколевка мик росхем формирователей сигналов RS-232C приведена на рис. 2.6. Часто буферные схемы входят прямо в состав ин терфейсных БИС. Это удешевляет изделие, экономит место на плате, но в случае аварии оборачивается крупными фи нансовыми потерями. Вывести из строя интерфейсные мик росхемы замыканием сигнальных цепей маловероятно: ток короткого замыкания передатчиков обычно не превосходит 20 мА. Рис. 2.6. Формирование сигналов RS-232C: а - приемник 1489 (А - вход RS-232, С - управление гистерезисом (ТТЛ), Y - выход ТТЛ); б - передатчик 1488 (А, В - входы ТТЛ, Y - выход RS-232, VDD = +12 В, VEE = -12 В); в - таблица состояния выходов передатчика (*1В - логическая 1) Стандарт RS-232C регламентирует типы применяемых разъе мов. На аппаратуре АПД (в том числе на СОМ-портах) принято устанавливать вилки (male - "папа") DB-25P или более ком пактный вариант - DB-9P. Девятиштырьковые разъемы не имеют контактов для дополнительных сигналов, необходи мых для синхронного режима (в большинстве 25-штырько вых разъемов эти контакты не используются). На аппаратуре АКД (модемах) устанавливают розетки (female - "мама") DB-25S или DB-9S. Это правило предполагает, что разъемы АКД могут подклю чаться к разъемам АПД непосредственно или через переход ные "прямые" кабели с розеткой и вилкой, у которых кон такты соединены "один в один". Переходные кабели могут являться и переходниками с 9- на 25-штырьковые разъемы (рис. 2.7). Рис. 2.7. Кабели подключения модемов Если аппаратура АПД соединяется без модемов, то разъемы устройств (вилки) соединяются между собой нуль-модемным кабелем (Zero-modem или Z-modem), имеющим на обоих кон цах розетки, контакты которых соединяются перекрестно по одной из схем, приведенных на рис. 2.8. Рис. 2.8. Нуль-модемный кабель: а - минимальный, б - полный Если на каком-либо устройстве АПД установлена розетка это почти стопроцентный признак того, что к другому уст ройству оно должно подключаться прямым кабелем, анало гичным кабелю подключения модема. Розетка устанавли вается обычно на тех устройствах, у которых удаленное подключение через модем не предусмотрено. В табл. 2.1 приведено назначение контактов разъемов СОМ портов (и любой другой аппаратуры АПД). Контакты разъема DB-25S определены стандартом EIA/TIA-232-E, разъем DB-9S описан стандартом EIA/ TIA-574. У модемов назва ние цепей и контактов такое же, но роли сигналов (вход выход) меняются на противоположные. Подмножество сигналов RS-232C, относящихся к асинхрон ному режиму, рассмотрим с точки зрения СОМ-порта PC. Следует помнить, что активному состоянию сигнала ("вклю чено") и логической единице передаваемых данных соответ ствует отрицательный потенциал (ниже -3 В) сигнала ин терфейса, а состоянию "выключено" и логическому нулю положительный (выше +3 В). Назначение сигналов интер фейса приведено в табл. 2.2.
1*- шлейф 8-битных мультикарт. 2*- шлейф 16-битных мультикарт и портов на системных платах. 3* - вариант шлейфа портов на системных платах. 4*- широкий шлейф к 25-контактному разъему.
2.2.2. Управление потоком данных Для управления потоком данных (Flow Control) могут ис пользоваться два варианта протокола - аппаратный и про граммный. Иногда управление потоком путают с квитиро ванием, но это разные методы достижения одной цели согласования темпа передачи и приема. Квитирование (Handshaking) подразумевает посылку уведомления о полу чении элемента, в то время как управление потоком предпо лагает посылку уведомления о невозможности последующе го приема данных. Аппаратный протокол управления потоком RTS/CTS (Hardware Flow Control) использует сигнал CTS, который поз воляет остановить передачу данных, если приемник не готов к их приему (рис. 2.9). Передатчик "выпускает" очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состо яние приемника. Микросхемы асинхронных приемопередат чиков имеют не менее двух регистров в приемной части - сдвигающий, для приема очередной посылки, и хранящий, из которого считывается принятый байт. Это позволяет реали зовать обмен по аппаратному протоколу без потери данных. Рис. 2.9. Аппаратное управление потоком Аппаратный протокол удобно использовать при подключе нии принтеров и плоттеров, если они его поддерживают (рис. 2.10). При непосредственном (без модемов) соедине нии двух компьютеров аппаратный протокол требует пере крестного соединения линий RTS - CTS. Если аппаратный протокол не используется, у передающего терминала должно быть обеспечено состояние "включено" на линии CTS перемычкой RTS - CTS. В противном случае передатчик будет "молчать". Рис. 2.10. Кабель подключения принтера с протоколом RTS-CTS Программный протокол управления потоком XON/XOFF пред полагает наличие двунаправленного канала передачи данных. Работает протокол следующим образом: если устройство, принимающее данные, обнаруживает причины, по которым не может их дальше принимать, оно по обратному последо вательному каналу посылает байт-символ XOFF (13h). Про тивоположное устройство, приняв этот символ, приостанав ливает передачу. Когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (llh), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на из менение состояния приемника по сравнению с аппаратным протоколом увеличивается по крайней мере на время пере дачи символа (XON или XOFF) плюс время реакции програм мы передатчика на прием символа (рис. 2.11). Из этого сле дует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимае мых данных и сигнализирующим о неготовности заблаго временно (имея в буфере свободное место). Рис. 2.11. Программное управление потоком XON/XOFF Преимущество программного протокола заключается в от сутствии необходимости передачи управляющих сигналов интерфейса - минимальный кабель для двустороннего об мена может иметь только 3 провода (см. рис. 2.8а). Недо статком, кроме требования наличия буфера и большего вре мени реакции (снижающего общую производительность канала из-за ожидания сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом слу чае из потока принимаемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограни чивает набор передаваемых символов. Минимальный вари ант кабеля для подключения принтера (плоттера) с прото колом XON/XOFF приведен на рис. 2.12. Кроме этих двух распространенных стандартных протоко лов, поддерживаемых и ПУ, и ОС, существуют и другие. Некоторые плоттеры с последовательным интерфейсом ис пользуют программное управление, но посылают не стан дартные символы XON/XOFF, а слова (ASCII-строки). Такой обмен на уровне системной поддержки протокола практи чески не поддерживается (эти плоттеры непосредственно "разговаривают" с прикладной программой). Конечно, можно написать драйвер СОМ-порта (перехватчик INT 14h), но не обходимость обработки в нем текстовых сообщений от уст ройства вывода обычно не вызывает восторга у системного программиста. Кабель для подключения совпадает с приве денным на рис. 2.12. Рис. 2.12. Кабель подключения принтера по протоколу XON/XOFF 2.3. Интерфейс "токовая петля" Распространенным вариантом последовательного интерфей са является токовая петля. В ней электрическим сигналом является не уровень напряжения относительно общего про вода, а ток в двухпроводной линии, соединяющей приемник и передатчик. Логической единице (состоянию "включено") соответствует протекание тока 20 мА, а логическому нулю отсутствие тока. Такое представление сигналов для описан ного формата асинхронной посылки позволяет обнаружить обрьго линии - приемник заметит отсутствие стоп-бита (об рыв линии действует как постоянный логический нуль). Токовая петля обычно предполагает гальваническую развяз ку входных цепей приемника от схемы устройства. При этом источником тока в петле является передатчик (этот вариант называют активным передатчиком). Возможно и питание от приемника (активный приемник), при этом выходной ключ передатчика может быть также гальванически развязан с ос тальной схемой передатчика. Существуют упрощенные ва рианты без гальванической развязки, но это уже вырожден ный случай интерфейса. Токовая петля с гальванической развязкой позволяет пере давать сигналы на расстояния до нескольких километров. Расстояние определяется сопротивлением пары проводов и уровнем помех. Поскольку интерфейс требует пары прово дов для каждого сигнала, обычно используют только два сиг нала интерфейса. В случае двунаправленного обмена при меняются только сигналы передаваемых и принимаемых данных, а для управления потоком используется программ ный метод XON/XOFF. Если двунаправленный обмен не тре буется, используют одну линию данных, а для управления потоком обратная линия задействуется для сигнала CTS (ап паратный протокол) или встречной линии данных (про граммный протокол). Преобразовать сигналы RS-232C в токовую петлю можно с помощью несложной схемы (рис. 2.13). Здесь принтер под ключается по токовой петле к СОМ-порту с аппаратным управлением потоком. Для получения двуполярного сигна ла, требуемого для входных сигналов СОМ-порта, приме няется питание от интерфейса. При надлежащем ПО одной токовой петлей можно обеспечить двунаправленную полудуплексную связь двух устройств. При этом каждый приемник "слышит" как сигналы передатчика на противоположной стороне канала, так и сигналы своего передатчика. Они расцениваются коммуникационными паке тами просто как эхо-сигнал. Для безошибочного приема пе редатчики должны работать поочередно. Рис. 2.13. Подключение принтера с интерфейсом "токовая петля" к СОМ-порту 2.4. Интерфейс MIDI Цифровой интерфейс музыкальных инструментов MIDI (Musical Instrument Digital Interface) является двунаправ ленным последовательным асинхронным интерфейсом с ча стотой передачи 31,25 Кбит/с. Этот интерфейс, разработан ный в 1983 году, стал фактическим стандартом для сопряжения компьютеров, синтезаторов, записывающих и воспроизводящих устройств, микшеров, устройств специаль ных эффектов и другой электромузыкальной техники. В интерфейсе применяется токовая петля 10 мА (возможно 5 мА) с гальванической развязкой входной цепи. Это исклю чает связь "схемных земель" соединяемых устройств через интерфейсный кабель, устраняя помехи, крайне нежелатель ные для звуковой техники. Снижению интерференционных помех служит и выбор частоты передачи, которая совпадает с одним из значений частот квантования, принятых в циф ровой звукозаписи. Асинхронная посылка содержит старт-бит, 8 бит информации и 1 стоп-бит, контроль четности отсутствует. Старший бит посылки является признаком "команда/данные". Его нуле вое значение указывает на наличие семи бит данных в млад ших разрядах. При единичном значении биты [6:4] содер жат код команды, а биты [3:0] - номер канала. Команды могут быть как адресованными конкретному каналу, так и широ ковещательными безадресными. К последней группе отно сятся команды старта, стопа и отметки времени, обеспечи вающие синхронизацию устройств (система синхронизации MIDI Sync и МТС - MIDI Time Code). Интерфейс определяет три типа портов: MIDI-In, MIDI-Out и MIDI-Thru. Входной порт MIDI-In представляет собой вход интерфейса "токовая петля 10 мА", гальванически развязанного от при емника оптроном с быстродействием не хуже 2 мкс. Устрой ство отслеживает информационный поток на этом входе и реагирует на адресованные ему команды и данные. Выходной порт MIDI-Out представляет собой выход источ ника тока 10 мА, гальванически связанного со схемой уст- ройства. Ограничительные резисторы предохраняют выход ные цепи от повреждения при замыкании на землю или ис точник 5 В. На выход подается информационный поток от данного устройства. В потоке может содержаться и транс лированный входной поток. Транзитный порт MIDI-Thru (не обязателен) служит для ре трансляции входного сигнала. В качестве разъемов применяются 5-контактные разъемы DIN, распространенные в бытовой звуковой аппаратуре. На всех устройствах устанавливаются розетки, на кабелях - вилки. Все соединительные кабели MIDI унифицированы (рис. 2.14). Контакт 2 - экран кабеля - соединяется с общим проводом только на стороне передатчика (на разъемах MIDI-Out и MIDI-Thru). Рис. 2.14. Соединительные кабели MIDI В маркировке входов и выходов, указанной около разъемов, бывают разночтения. Одни производители пишут "In" или "Out" в соответствии с функцией разъема данного устрой ства (и это, правильно), тогда любой кабель соединяет "In" и "Out". Другие считают, что подпись должна обозначать функ цию подключаемого устройства. Тогда кабель будет соединять разъемы с обозначениями "In" - "In" и "Out" - "Out". Интерфейс позволяет объединить группу до 16 устройств в локальную сеть. Топология должна подчиняться правилу: вход MIDI-In одного устройства должен подключаться к выходу MIDI-Out или MIDI-Thru другого. При планирова нии MIDI-сети необходимо руководствоваться информа ционными потоками и связью устройств. Управляющие устройства - клавиатуры, секвенсоры (в режиме воспроиз- ведения), источники синхронизации - должны находиться перед управляемыми. Если устройства нуждаются в двуна правленном обмене, они соединяются в кольцо. Возможно применение специальных мультиплексоров, позволяющих логически коммутировать несколько входных потоков в один выходной. Вырожденным случаем кольца является двуна правленное соединение двух устройств. Несколько вариан тов соединения приведено на рис. 2.15. В PC MIDI-порт имеется на большинстве звуковых адапте ров, его сигналы выведены на неиспользуемые контакты (12 и 15) разъема игрового адаптера. Для подключения устройств MIDI требуется переходной адаптер, реализующий интер фейс "токовая петля". Переходной адаптер обычно встраи вается в специальный кабель, схема которого приведена на рис. 2.16. Некоторые модели PC имеют встроенные адапте ры и стандартные 5-штырьковые разъемы MIDI. Рис. 2.15. Варианты топологии сети MIDI: a - цепь, б - кольцо с мультиплексором В PC для интерфейса MIDI применяются порты, совмести мые с контроллером MPU-401 (Roland) в режиме UART. В пространстве ввода/вывода MPU-401 занимает два смеж ных адреса MP?/ (обычно ЗЗОп)иМР[/+^: ^ Порт DATA (адрес MPU+0) - запись и считывание байт, передаваемых и принимаемых по интерфейсу MIDI. Порт STATUS/COMMAND (адрес MPU+1) - чтение со стояния / запись команд (запись - только для интеллек туального режима). В байте состояния определены сле дующие биты: Бит 7 - DSR (Data Set Ready) - готовность (DSR=0) при нятых данных для чтения. Бит устанавливается в "I", когда все принятые байты считаны из регистра данных. Бит 6 - DRR (Data Read Ready) - готовность (DRR=0) UART к записи в регистр данных или команд. Условие готовности к записи не возникнет, если приемник имеет непрочитанный байт данных. Рис. 2.16. Вариант схемы кабеля-адаптера MIDI На некоторых системных платах применяются БИС контрол леров интерфейсов, в которых UART, используемая для СОМ-порта, конфигурированием через BIOS SETUP может быть переведена в режим MIDI-порта. 2.5. СОМ-порт Последовательный интерфейс СОМ-порт (Communication Port - коммуникационный порт) появился в первых моделях IBM PC. Он был реализован на микросхеме асинхронного при емопередатчика Intel 8250. Порт имел поддержку BIOS (/Л/Т 74/?), однако широко применялось (и применяется) взаи модействие с портом на уровне регистров. Поэтому во всех PC совместимых компьютерах для последовательного интерфейса применяют микросхемы приемопередатчиков, совместимые с i8250. В ряде отечественных PC-совместимых (почти) компь ютеров для последовательного интерфейса применялась мик росхема КР580ВВ51 - аналог 18251. Однако эта микросхема является универсальным синхронно-асинхронным приемопе редатчиком (УСАПП или USART - Universal Asynchronous Receiver-Transmitter). Совместимости с PC на уровне регист ров СОМ-порта такие компьютеры не имеют. Хорошо, если у соответствующих компьютеров имеется "честный" драйвер B/OS /Л/Т 14h, а не заглушка, возвращающая состояние модема "всегда готов" и ничего не делающая. Совместимость на уров не регистров СОМ-порта считается необходимой. Многие раз работчики коммуникационных пакетов предлагают работу и через B/OS /Л/Т 14h, однако на высоких скоростях это неэффек тивно. Говоря о СОМ-порте PC, по умолчанию будем подра зумевать совместимость регистровой модели с i8250 и реали зацию асинхронного интерфейса RS-232C. 2.5.1. Использование СОМ-портов СОМ-порты чаще всего применяют для подключения манипуляторов (мышь, трекбол). В этом случае порт исполь зуется в режиме последовательного ввода; питание произво дится от интерфейса. Мышь с последовательным интерфей сом - Serial Mouse -может подключаться к любому исправному порту. Для согласования разъемов порта и мыши возможно при менение переходника DB-9S-DB-25P или DB-25S-DB-9P. Для мыши требуется прерывание, для порта СОМ1 - IRQ4, для COM2 - IRQ3. Жесткая привязка номера IRQ к номеру порта обусловлена свойствами драйверов. Каждое событие - пере мещение мыши или нажатие-отпускание кнопки - кодируется двоичной посылкой по интерфейсу RS-232C. Применяется асин хронная передача; двуполярное питание обеспечивается от уп равляющих линий интерфейса (табл. 2.3).
Две разновидности Serial Mouse - MS-Mouse и PC-Mouse (Mouse Systems Mouse) - требуют соответствующих драй веров, многие мыши имеют переключатель MS/PC. Мышь с "чужим" драйвером либо не отзывается, либо "скачет" за гадочным образом. Эти разновидности используют различ ные форматы посылок: при одинаковой скорости 1200 бит/с, одном стоп-бите и отсутствии контроля четности Microsoft Mouse использует 7 бит данных, a PC-Mouse - 8 бит. Мышь посылает пакет при каждом изменении состояния - переме щении, нажатии или отпускании кнопки. Пакет, передавае мый MS-Mouse, состоит из трех байт (табл. 2.4). PC-Mouse передает 5 байт (табл. 2.5). Здесь LB (Left Buttom), MB (Middle Buttom) и RB (Right Buttom) означают состояние левой, средней и правой кнопок, Х[7:0] и Y[7:0] - биты от носительного перемещения мыши с момента предыдущей посылки по координатам Х и Y. Положительным значениям соответствует перемещение по координате Х вправо, а по координате Y вниз для MS-Mouse и вверх для PC-Mouse. Отсюда становятся понятными беспорядочные перемещения курсора на экране при несоответствии драйвера типу мыши.
Для подключения внешних модемов используется полный (9-проводный) кабель АПД-АКД, схема которого приведена на рис. 2.7. Этот же кабель используется для согласования разъемов (по количеству контактов); возможно применение переходников 9-25, предназначенных для мышей. Для ра боты коммуникационного ПО обычно требуется использо вание прерываний, но здесь есть свобода выбора номера (ад реса) порта и линии прерывания. Если предполагается работа на скоростях 9600 бит/с и выше, то СОМ-порт должен быть реализован на микросхеме UART 16550A или совместимой. Возможности работы с использованием FIFO-буферов и об мена по каналам DMA зависят от коммуникационного ПО. Для связи двух компьютеров, удаленных друг от друга на небольшое расстояние, используют и непосредственное со единение их СОМ-портов нуль-модемным кабелем (рис. 2.8). Использование программ типа Norton Commander или Interink MS-DOS позволяет обмениваться файлами со ско ростью до 115,2 Кбит/с без применения аппаратных преры ваний. Это же соединение может использоваться и сетевым пакетом Lantastic, предоставляющим более развитый сервис. Подключение принтеров и плоттеров к СОМ-порту требу ет применения кабеля, соответствующего выбранному про токолу управления потоком: программному XON/XOFF или аппаратному RTS/CTS. Схемы кабелей приведены на рис. 2.10 и 2.12. Аппаратный протокол предпочтительнее. Прерыва ния при выводе средствами DOS (командами COPY или PRINT) не используются. СОМ-порт используется для подключения электронных ключей (Security Devices), предназначенных для защиты от нелицензированного использования ПО. Эти устройства мо гут быть как "прозрачными", позволяя воспользоваться тем же портом для подключения периферии, так и полностью занимающими порт. СОМ-порт при наличии соответствующей программной под держки позволяет превратить PC в терминал, эмулируя си стему команд распространенных специализированных тер миналов (VT-52, VT-100 и т. д.). Простейший терминал получается, если замкнуть друг на друга функции BIOS об служивания СОМ-порта (INT 14h), телетайпного вывода (/Л/Т 10h) и клавиатурного ввода (INT 16h). Однако такой тер минал будет работать лишь на малых скоростях обмена (если, конечно, его делать не на Pentium), поскольку функции BIOS хоть и универсальны, но не слишком быстры. Интерфейс RS-232C широко распространен в различных ПУ и терминалах. СОМ-порт может использоваться и как дву направленный интерфейс, у которого имеется 3 программно управляемые выходные линии и 4 программно-читаемые входные линии с двуполярными сигналами. Их использова ние определяется разработчиком. Существует, например, схе ма однобитного широтно-импульсного преобразователя, по зволяющего записывать звуковой сигнал на диск PC, используя входную линию СОМ-порта. Воспроизведение этой записи через обычный динамик PC позволяет передать речь. В настоящее время, когда звуковая карта стала почти обязательным устройством PC, это не впечатляет, но когда то такое решение было интересным. СОМ-порт используют для беспроводных коммуникаций с применением излучателей и приемников инфракрасного диапазона - IR (Infra Red) Connection. Этот интерфейс по зволяет осуществлять связь между парой устройств, уда ленных на расстояние, достигающее нескольких метров. Раз личают инфракрасные системы низкой (до 115,2 Кбит/с), средней (1,152 Мбит/с) и высокой (4 Мбит/с) скорости. Низкоскоростные системы служат для обмена короткими сообщениями, высокоскоростные - для обмена файлами между компьютерами, подключения к компьютерной сети, вывода на принтер, проекционный аппарат и т. п. Ожида ются более высокие скорости обмена, которые позволят передавать "живое видео". В 1993 году создана ассоциация разработчиков систем инфракрасной передачи данных IrDA (Infrared Data Association), призванная обеспечить совмес тимость оборудования от различных производителей. В настоящее время действует стандарт IrDA 1.1. Имеются соб ственные системы фирм Hewlett Packard - HP-SIR (Hewlett Packard Slow Infra Red) - и Sharp - ASK (Amplitude Shifted Keyed IR). Основные характеристики интерфейсов следу ющие: т IrDA SIR (Slow Infra Red), HP-SIR - 9,6-115,2 Кбит/с; ^ IrDA MIR (Middle Infra Red) - 1,2 Мбит/с; ^ IrDA FIR (Fast Infra Red) - 4 Мбит/с; ^ Sharp ASK - 9,6-57,6 Кбит/с. На скоростях до 115 200 бит/с для инфракрасной связи ис пользуются UART, совместимые с 16450/16550. В современ ных системных платах на использование инфракрасной связи может конфигурироваться порт COM2. В этом случае на пе реднюю панель компьютера устанавливается внешний при емопередатчик - "инфракрасный глаз", который подключа ется к разъему IR-Connector системной платы. На средних и высоких скоростях обмена применяются спе циализированные микросхемы, ориентированные на интен сивный программно-управляемый обмен или DMA с воз можностью прямого управления шиной. Инфракрасные излучатели не создают помех в радиочастот ном диапазоне и обеспечивают конфиденциальность пере дачи. ИК-лучи не проходят через стены, поэтому зона при ема ограничивается небольшим легко контролируемым пространством. Инфракрасная технология привлекательна для связи портативных компьютеров со стационарными ком пьютерами или док-станциями. Инфракрасный интерфейс имеют некоторые модели принтеров. 2.5.2. Микросхемы асинхронных приемопередатчиков Преобразование параллельного кода в последовательный для передачи и обратное преобразование при приеме данных вы полняют специализированные микросхемы UART (Universal Asynchronous Receiver-Transmitter - универсальный асинхрон ный приемопередатчик). Эти же микросхемы формируют и обрабатывают управляющие сигналы интерфейса. СОМ-пор ты IBM PC XT/AT базируются на микросхемах, совместимых на уровне регистров с UART 18250 - 8250/16450/16550А. Это семейство представляет собой усовершенствование начальной модели, направленное на повышение быстродействия, сниже ние потребляемой мощности и загрузки процессора при ин тенсивном обмене. Отметим следующее: т 8250 имеет ошибки (появление ложных прерываний), учтенные в XT BIOS. "; 8250А - ошибки исправлены, в результате чего потеряна совместимость с BIOS. Работает в некоторых моделях AT, но непригоден для скорости 9600 бит/с. т 8250В - исправлены ошибки 8250 и 8250А, восстановле на ошибка в прерываниях - возвращена совместимость с XT BIOS. Работает в AT под DOS (кроме скорости 9600 бит/с). Микросхемы 8250х имеют невысокое быстродействие по об ращениям со стороны системной шины. Они не допускают обращения к своим регистрам в смежных шинных циклах процессора - для корректной работы с ними требуется вве дение программных задержек между обращениями CPU. В компьютерах класса AT применяют микросхемы UART следующих модификаций: а? 16450 - быстродействующая версия 8250 для AT. Оши бок 8250 и полной совместимости с XT BIOS не имеет. Требуется для работы OS/2 с СОМ-портами. ^ 16550 - развитие 16450. Может использовать канал DMA для обмена данными. Имеет FIFO-буфер, но некорректность его работы не позволяет им воспользо ваться. т 16550А - имеет работающие 16-байтные FIFO-буферы приема и передачи и возможность использования DMA. Именно этот тип UART должен применяться в AT при интенсивных обменах на скоростях 9600 бит/с и выше. Совместимость с этой микросхемой обеспечивает боль шинство микросхем контроллеров портов ввода/вывода, входящих в современные чипсеты. Микросхемы UART 16550А с программной точки зрения представляют собой набор регистров, доступ к которым определяется адресом (смещением адреса регистра относи тельно базового адреса порта) и значением бита DLAB (бита 7 регистра LCR). В адресном пространстве микросхема зани мает 8 смежных адресов. Список регистров UART 16550А и способы доступа к ним приведены в табл. 2.6. Микросхе мы 8250 отличаются отсутствием регистра FCR и всех воз можностей FIFO и DMA.
* Некоторые биты допускают только чтение. Запись в регистр может привести к сбою протокола. THR - промежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS. Бит 0 передается (и принимается) первым. При длине посылки менее 8 бит старшие биты игнорируются. RBR - буферный регистр принимаемых данных (только для чтения). Данные, принятые входным сдвигающим регистром, помещаются в регистр RBR, откуда они могут быть считаны процессором. Если к моменту окончания приема очередно го символа предыдущий не был считан из регистра, фикси руется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение. DLL - регистр младшего байта делителя частоты. DLM - регистр старшего байта делителя частоты. Делитель определяется по формуле D==115200/V, где V - скорость пе- редачи, бит/с. Входная частота синхронизации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных. IER - регистр разрешения прерываний. Единичное значение бита разрешает прерывание от соответствующего источника. Назначение бит регистра IER: ^ Биты 7-4=0 - не используются. ^ Бит 3 - Mod IE-no изменению состояния модема (лю бой из линий CTS, DSR, Rl, DCD). йа Бит 2 - RxL IE-no обрыву/ошибке линии. ^ Бит 1 - TxD IE - по завершении передачи. ай Бит 0 - RxD IE-no приему символа (в режиме FIFO прерывание по тайм-ауту). IIR - регистр идентификации (только для чтения) прерыва ний и признака режима FIFO. Для упрощения программного анализа UART выстраивает внутренние запросы прерывания по четырехуровневой системе приоритетов. Порядок приори тетов (по убыванию): состояние линии, прием символа, осво бождение регистра передатчика, состояние модема. При воз никновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника. Назначение бит регистра IIR: ^ Биты [7:6] - признак режима FIFO: 11 -режим FIFO 16550A, 10 - режим FIFO 16550, 00 - обычный. ^ Биты [5:4] - не используются. :в? Бит 3 - прерывание по тайм-ауту (не в режиме FIFO). т Биты [2:1] - причина прерывания с наивысшим приори тетом (в обычном, не FIFO-режиме): 11 - ошибка/обрыв линии; сброс - чтением регистра со стояния линии, 10 - принят символ; сброс - чтением данных, 01 - передан символ (регистр THR пуст); сброс - запи сью данных, 00 - изменение состояния модема; сброс - чтением ре гистра состояния модема. ^ Бит 0 - признак необслуженного запроса прерывания: 1 - нет запроса, О -есть запрос. Идентификация прерываний в режиме FIFO, IIR [3:1]: ^ Oil - ошибка/обрыв линии; сброс - чтением регистра состояния линии. ^ 010 - принят символ; сброс - чтением регистра данных приемника. ^ 110 - индикатор тайм-аута (за 4-кратный интервал вре мени символа не передано и не принято ни одного сим вола, хотя в буфере имеется по крайней мере один). Сброс - чтением регистра данных приемника. ^ 001 - регистр THR пуст; сброс - записью данных. ^ 000 - изменение состояния модема (CTS, DSR, R1 или DCD), сброс - чтением регистра MSR. FCR - регистр управления FIFO (только для записи). Назначение бит регистра FCR: ^ Биты [7:6] - ITL (Interrupt Trigger Level) - уровень запол нения FIFO-буфера, при котором вырабатывается пре рывание: 00-1 байт (по умолчанию), 01-4 байта, 10 -8байт, 11 -14 байт. ^ Биты [5:4] зарезервированы. ^ Бит 3 - разрешение операций DMA. ^ Бит 2 -RESETTF(Reset Transmitter FIFO) - сброс счетчи ка FIFO-передатчика (записью единицы; сдвигающий регистр не сбрасывается). ^ Бит 1 - RESETRFfReset 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=i. ^ Бит 5 - STICPARf Sticky Parity) - принудительное форми рование бита паритета: О - контрольный бит генерируется в соответствии с па ритетом выводимого символа, 1 - постоянное значение контрольного бита: при lEVENPAR^i - нулевое, при EVENPAFf^O - единичное. s® Бит 4 - EVENPARf Even Parity Select) - выбор типа конт роля: 0 - нечетность, 1 - четность. т Бит 3 - PAREN( Parity Enable) - разрешение контрольно го бита: 1 - контрольный бит (паритет или постоянный) разре шен, О - запрещен. is Бит 2 - STOPS (Stop Bits) - количество стоп-бит: 0-1 стоп-бит, 1-2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бита). т Биты [1:0] - SERIALDBf Serial Data Bits) - количество бит данных: 00 -5 бит, 01 -6 бит, 10 -7 бит, 11 -8 бит. MCR - регистр управления модемом. Назначение бит регистра MCR-. ш Биты [7:5]=0 - зарезервированы. *§ Бит 4 - LME(Loopback Mode Enable) - разрешение режи ма диагностики: О - нормальный режим, 1 - режим диагностики (см. ниже). ж Бит 3 - 1Е( Interrupt Enable) - разрешение прерываний с помощью внешнего выхода OUT2; в режиме диагностики поступает на вход MSR. 7: О - прерывания запрещены, 1 - разрешены. ^ Бит 2 - OUT1C(OUT1 Bit Control) - управление выходным сигналом 1 (не используется); в режиме диагностики по ступает на вход MSR.6. ^ Бит 1 - RTSC (Request To Send Control) - управление выходом RTS; в режиме диагностики поступает на вход MSR.4: 1 - активен (-V), О - пассивен (+V). ^ Бит 0 - DTRCfData Terminal Ready Control) - управление выходом DTR; в режиме диагностики поступает на вход MSR.5: 1 - активен (-V), О - пассивен (+V). LSR - регистр состояния линии (точнее, состояния приемо передатчика). Назначение бит регистра LSR: ^ Бит 7 - FIFOE( FIFO Error Status) - ошибка принятых дан ных в режиме FIFO (буфер содержит хотя бы один сим вол, принятый с ошибкой формата, паритета или обры вом). В ne-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-буфере). Сброс - чтением приемника. Индикаторы ошибок - биты [4:1] - сбрасываются после чте ния регистра LSR. В режиме FIFO признаки ошибок хранят ся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один "обрывной" символ, и UART ждет восстановления и последующего старт-бита. MSR - регистр состояния модема. Назначение бит регистра MSR: т Бит 7 - DCD (Data Carrier Detect) - состояние линии DCD. та Бит 6 - Rl(Ring Indicator) - состояние линии Rl. ак Бит 5 - DSR(Data Set Ready) - состояние линии DSR. ss Бит 4 - CTS(Clear To Send) - состояние линии CTS. т Бит 3 - DDCD(Delta Data Carrier Detect) - изменение со стояния DCD. ss Бит 2 - TERI(Trailing Edge OfRing Indicator) -спад огиба ющей Rl (окончание звонка). ^ Бит 1 - DDSR (Delta Data Set Ready) - изменение состоя ния DSR. ss? Бит 0 - DCTS (Delta Clear To Send) - изменение состоя ния CTS. Признаки изменения (биты [3:0]) сбрасываются по чтению регистра. SCFt - рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 от сутствует). В диагностическом режиме (при LME=i) внутри UART орга низуется внутренняя заглушка: ^ Выход передатчика переводится в состояние логической 1. ^ Вход приемника отключается. ^ Выход сдвигающего регистра передатчика логически со единяется со входом приемника. ^ Входы DSR, CTS, RI и DCD отключаются от входных линий и внутренне управляются битами DTRC, RTSC, OUT1C, IE. ^ Выходы управления модемом переводятся в пассивное состояние (логический ноль). Переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определять скорость работы UART. 2.5.3. Ресурсы и конфигурирование СОМ-портов Компьютер может иметь до четырех последовательных пор тов СОМ 1-COM4 (для машин класса AT типично наличие двух портов). СОМ-порты имеют внешние разъемы-вилки DB25P или DB9P, выведенные на заднюю панель компьюте ра (назначение выводов приведено в табл. 2.1). СОМ-порты реализуются на микросхемах UART, совмести мых с семейством 18250. Они занимают в пространстве вво да/вывода по 8 смежных 8-битных регистров и могут рас полагаться по стандартным базовым адресам. Порты вырабатывают аппаратные прерывания. Возможность разде ляемого использования одной линии запроса несколькими портами (или ее разделения с другими устройствами) зави сит от реализации аппаратного подключения и ПО. При ис пользовании портов, установленных на шину ISA, разделяе мые прерывания обычно не работают. Управление последовательным портом разделяется на два этапа - предварительное конфигурирование (Setup) аппарат ных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Конфи гурирование СОМ-порта зависит от его исполнения. Порт на плате расширения конфигурируется джамперами на са мой плате. Порт на системной плате конфигурируется через BIOS Setup. Конфигурированию подлежат следующие параметры: ^ Базовый адрес, который может иметь значения 3F8h, 2F8h, 3E8h (ЗЕОЬ, 338h) или 2E8h (2EOh, 238h). При инициа лизации BIOS проверяет наличие портов по адресам именно в этом порядке и присваивает обнаруженным портам логические имена СОМ1, COM2, COM3 и COM4. Для PS/2 стандартными для портов СОМЗ-СОМ8 явля ются адреса 3220h, 3228h, 4220h, 4228h, 5220h и 5228h соответственно. ^ Используемая линия запроса прерывания: для СОМ1 и COM3 обычно используется IRQ4 или IRQ11, для COM2 и COM4 - IRQ3 или IRQ 10. В принципе номер прерыва ния можно назначать в произвольных сочетаниях с ба зовым адресом (номером порта), но некоторые програм мы и драйверы (например, драйверы последовательной мыши) настроены на стандартные сочетания. Каждому порту, нуждающемуся в аппаратном прерывании, назна чают отдельную линию, не совпадающую с линиями за проса прерываний других устройств. Прерывания необ ходимы для портов, к которым подключаются устройства ввода, UPS или модемы. При подключении принтера или плоттера прерываниями пользуются только многозадач ные ОС (не всегда), и этот дефицитный ресурс PC мож но сэкономить. Также прерываниями обычно не пользу ются при связи двух компьютеров нуль-модемным кабелем. ^ Канал DMA (для UART 16450/16550, расположенных на системной плате) - разрешение использования и номер канала DMA. Режим DMA при работе с СОМ-портами используют редко. Режим работы порта по умолчанию (2400 бит/с, 7 бит дан ных, 1 стоп-бит и контроль четности), заданный при ини циализации порта во время BIOS POST, может изменяться в любой момент при настройке коммуникационных программ или командой DOS MODECOMx: с указанием параметров. 2.5.4. Неисправности и тестирование СОМ-портов Неполадки с СОМ-портами случаются (выявляются) при установке новых портов или неудачном подключении внеш них устройств. Проверка конфигурирования Тестирование последовательных портов (как и параллельных) начинают с проверки их опознавания системой. Список ад ресов установленных портов обычно появляется в таблице, выводимой BIOS перед загрузкой ОС. Список можно по смотреть с помощью тестовых программ или прямо в BIOS Data AREA с помощью отладчика. Если BIOS обнаруживает меньше портов, чем установлено физически, вероятно, двум портам присвоен один адрес или установлен нестандартный адрес какого-либо порта. Пробле мы могут возникать с адресами портов COM3 и COM4: не все версии BIOS будут искать порты по альтернативным адресам 3EOh, 338h, 2EOh и 238h; иногда не производится поиск по адресам 3E8h и 2E8h. Нумерация найденных пор тов, отображаемая в заставке, может вводить в заблуждение: если установлены два порта с адресами 3F8h и 3E8h, в за ставке они могут называться СОМ1 и COM2, и по этим име нам на них можно ссылаться. Однако те же порты в застав ке могут называться и СОМ 1 и COM3 (поскольку 3E8h является штатным адресом для COM3), но попытка сослать ся на порт COM3 будет неудачной, поскольку в данном слу чае адрес 3E8h будет находиться в ячейке 0:402h BIOS Data Area, соответствующей порту COM2, а в ячейке порта COM3 (0:404h) будет нуль - признак отсутствия такового порта. 4 Зак.№530 "Объяснить" системе, где какой порт, можно вручную лю бым отладчиком, занеся правильные значения базовых ад ресов в ячейки BIOS Data Area (это придется делать каждый раз после перезагрузки ОС перед использованием "потерян ного" порта). Существуют тестовые утилиты, позволяющие находить порты (например, Port Finder). Если двум портам назначен один и тот же адрес, тестовая программа обнаружит ошибки порта только с использова нием внешней заглушки (External LoopBack). Программное тестирование порта без заглушки не покажет ошибок, поскольку при этом включается диагностический режим (см. описание UART) и конфликтующие (по отдельности ис правные) порты будут работать параллельно, обеспечивая со впадение считываемой информации. В реальной жизни нор мальная работа конфликтующих портов невозможна. Разбираться с конфликтом адресов удобно, последователь но устанавливая порты и наблюдая за адресами, появляю щимися в списке. Если физически установлен только один порт и его не обна руживает BIOS, причины те же, что с LPT-портом: либо он отключен при конфигурировании, либо вышел из строя. Неисправность может устраниться при вынимании/вставке платы адаптера в слот системной шины. При работе с СОМ-портом задействуются соответствующие аппаратные прерывания - их используют при подключении модема, мыши и других устройств ввода. Неработоспособ ность этих устройств может быть вызвана некорректной на стройкой запроса прерывания. Здесь возможны как конф ликты с другими устройствами, так и несоответствие номера прерывания адресу порта. Функциональное тестирование В первом приближении СОМ-порт можно проверить диаг ностической программой (Checkit) без использования за глушек. Этот режим тестирования проверяет микросхему UART (внутренний диагностический режим) и вырабатыва ние прерываний, но не входные и выходные буферные мик росхемы, которые являются более частыми источниками не приятностей. Если тест не проходит, причину следует искать или в конфликте адресов/прерываний, или в самой микро схеме UART. Для более достоверного тестирования рекомендуется исполь зовать внешнюю заглушку, подключаемую к разъему СОМ порта (рис. 2.17). В отличие от LPT-порта у СОМ-порта количество входных сигналов превышает количество выход ных, что позволяет выполнить полную проверку всех цепей. Заглушка соединяет выход приемника со входом передат чика. Обязательная для всех схем заглушек перемычка RTS CTS позволяет работать передатчику - без нее символы не смогут передаваться. Выходной сигнал DTR обычно исполь зуют для проверки входных линий DSR, DCD и RI. Рис. 2.17. Заглушка для проверки СОМ-портов (LoopBack) Если тест с внешней заглушкой не проходит, причину сле дует искать во внешних буферах, их питании или в шлей фах подключения внешних разъемов. Здесь может помочь осциллограф или вольтметр. Последовательность проверки может быть следующей: 1. Проверить наличие двуполярного питания выходных схем передатчиков (этот шаг логически первый, но поскольку он технически самый сложный, его можно отложить на крайний случай, когда появится желание заменить бу ферные микросхемы). 2. Проверить напряжение на выходах TD, RTS и DTR: после аппаратного сброса на выходе TD должен быть отри цательный потенциал около -12 В (по крайней мере ниже -5 В), а на выходах RTS и DTR - такой же положи тельный. Если этих потенциалов нет, возможна ошибка подключения разъема к плате через шлейф. Распростра ненные варианты: ш шлейф не подключен; ^ шлейф подключен неправильно (разъем перевернут или вставлен со смещением); ^ раскладка шлейфа не соответствует разъему платы. Первые два варианта проверяются при внимательном осмотре, третий же может потребовать некоторых усилий. В табл. 2.1 приведены три варианта раскладки 10-проводного шлейфа разъема СОМ-порта, известных автору; для СОМ портов на системных платах возможно существование и других. Теоретически шлейф должен поставляться в соот ветствии с разъемом платы, на которой расположен порт. Если дело в ошибочной раскладке, то эти три выходных сигнала удастся обнаружить на других контактах разъе мов (на входных контактах потенциал совсем небольшой). Если эти сигналы обнаружить не удалось, очевидно, вы шли из строя буферные формирователи. 3. Соединив контакты линий RTS и CTS (или установив за глушку), следует попытаться вывести небольшой файл на СОМ-порт (например, командой COPYC:AUTOEXEC. BAT СОМ 7;). С исправным портом эта команда успешно вы полнится за несколько секунд с сообщением об успеш ном копировании. При этом потенциалы на выходах RTS и DTR должны измениться на отрицательные, а на выхо де TD должна появиться пачка двуполярных импульсов с амплитудой более 5 В. Если потенциалы RTS и DTR не изменились, ошибка в буферных формирователях. Если на выходе RTS (и входе CTS) появился отрицательный потенциал, а команда COPY завершается с ошибкой, ско рее всего, вышел из строя приемник линии CTS (или опять-таки ошибка в шлейфе). Если команда COPY ус пешно проходит, а изменения на выходе TD не обнару живаются (их можно увидеть стрелочным вольтметром, но оценить амплитуду импульсов не удастся), виноват буферный передатчик сигнала TD. Замена микросхем приемников и передатчиков существен но облегчается, если они установлены в "кроватки". Перед заменой следует с помощью осциллографа или вольтметра удостовериться в неисправности конкретной микросхемы. Расположение выводов микросхем приведено на рис. 2.6. Если буферные элементы включены в состав интерфейсной БИС (что теперь весьма распространено), то такой порт ре монту не подлежит (по крайней мере в обычных условиях). Неисправный СОМ-порт, установленный на системной плате, можно попытаться отключить в BIOS SETUP, но порт мог сгореть и вместе со схемой своего отключения - тогда он останется "живым мертвецом" в карте портов ввода/вывода и прерываний. Иногда он полностью выводит из строя сис темную плату. Источниками ошибок могут являться разъемы и кабели. В разъемах встречаются плохие контакты, а кабели кроме воз можных обрывов могут иметь плохие частотные характери стики. Частотные свойства кабелей обычно сказываются при большой длине (десятки метров) на высоких скоростях об мена (56 или 115 Кбит/с). При необходимости использова ния длинных кабелей на высоких скоростях сигнальные про вода данньк должны быть перевиты с отдельными проводами "схемной земли". Питание от интерфейса, или Почему может не работать мышь При подключении к СОМ-порту устройств с небольшим энер гопотреблением возникает соблазн использования питания от выходных линий интерфейса. Если линии управления DTR и RTS не используются по прямому назначению, их можно за действовать как питающие с напряжением около 12 В. Ток короткого замыкания на "схемную землю" ограничен буфер ной микросхемой передатчика на уровне 20 мА. При иници ализации порта эти линии переходят в состояние "выключе но", то есть вырабатывают положительное напряжение. Линия TD в покое находится в состоянии логической единицы, так что на выходе вырабатывается отрицательное напряжение. Потенциалами линий можно управлять через регистры СОМ порта (выход TD вырабатывает положительное напряжение, если установить бит BRCON). Двуполярным питанием от линий интерфейса (+V от DTR и RTS, -V от TD) пользуются все манипуляторы, подключае мые к СОМ-портам. Зная это, в случае неработоспособнос ти мыши с данным портом следует проверить напряжения на соответствующих контактах разъема. Бывает, что с конк ретным портом не работает только конкретная мышь (мо дель или экземпляр), хотя другие мыши с этим портом и эти же мыши с другими портами работают нормально. Здесь дело может быть в уровнях напряжений. Стандарт требует от порта выходного напряжения не менее 5 В (абсолютного значения), и, если данный порт обеспечивает только этот минимум, некоторым мышам не хватит мощности для пита ния светодиодов (главных потребителей энергии). Порт получает двуполярное питание через системную плату от блока питания компьютера. Отсутствие на выходе блока питания напряжения +12 В обычно обнаружится по нера ботоспособности дисков. Отсутствие напряжения -12 В "за метят" только устройства, подключенные к СОМ-портам. Блок питания теоретически контролирует наличие этих на пряжений на своем выходе (сообщая о неполадках сигна лом Power Good, вызывающим аппаратный сброс). Встреча ются упрощенные схемы блоков питания, у которых контролируются не все напряжения. Кроме того, возможны плохие контакты в разъеме подключения питания к систем ной плате. 2.5.5. Функции BIOS для СОМ-портов В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса пор тов с логическими именами СОМ 1-COM4. Нулевое значе ние адреса является признаком отсутствия порта с данным номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся кон станты, задающие тайм-аут для портов. Обнаруженные порты инициализируются на скорость обме на 2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интерфейса DTR и RTS переводятся в исходное состояние ("выключено" положительное напряжение). Порты поддерживаются сервисом BIOS INT 14h, который обес печивает следующие функции: ^ ООЬ - инициализация (установка скорости обмена и фор мата посылок, заданных регистром AL; запрет источни ков прерываний). На сигналы DTR и RTS влияния не ока зывает (после аппаратного сброса они пассивны). ^ Olh - вывод символа из регистра AL (без аппаратных пре рываний). Активируются сигналы DTR и RTS, и после освобождения регистра THR в него помещается выводи мый символ. Если за заданное время регистр не освобож дается, фиксируется ошибка тайм-аута и функция завер шается. ^ 02h - ввод символа (без аппаратных прерываний). Акти вируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных, принятый символ помещается в регистр AL. Если за за данное время данные не получены, функция завершает ся с ошибкой тайм-аута. ^ 03h - опрос состояния модема и линии (чтение регист ров MSR и LSR). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода/вывода во из бежание риска ожидания тайм-аута. При вызове INT 14h номер функции задается в регистре АН, номер порта (0-3) - в регистре DX(0 - СОМ 1, 1 - COM2...). При возврате из функций 0,1 и 3 регистр АН содержит байт состояния линии (регистр LSR), AL - байт состояния моде ма (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН указывает на наличие принятого симво ла в регистре AL', ненулевое значение бита 7 - на ошибку приема, которую можно уточнить функцией 3. Формат байта состояния линии (регистр АН): ^ Бит 7 - ошибка тайм-аута (после вызова функции 2 признак любой ошибки). ^ Бит 6 - регистр сдвига передатчика пуст (пауза передачи). ^ Бит 5 - промежуточный регистр передатчика пуст (го тов принять символ для передачи). SB Бит 4 - обнаружен обрыв линии. вя Бит 3 - ошибка кадра (отсутствие стоп-бита). а? Бит 2 - ошибка паритета принятого символа. ш Бит 1 - переполнение (потеря символа). ^ Бит 0 - регистр данных содержит принятый символ. Формат байта состояния модема (регистр AL): ^ Бит 7 - состояние линии DCD. ^ Бит 6 - состояние линии RI. ?й Бит 5 - состояние линии DSR. si Бит 4 - состояние линии CTS. т Бит 3 - изменение состояния DCD. ^ Бит 2 - изменение огибающей RI. as Бит 1 - изменение состояния DSR. ss Бит 0 - изменение состояния CTS. Формат регистра AL при инициализации: ^ Биты [7:5] - скорость обмена: 000-110; 010-300; 100-1200; 110-4800, 001-150; 011-600; 101-2400; 111-9600 бит/с. ^ Биты [4:3] - контроль паритета: 01 - число единиц нечетное, 11 -четное, 00 и 10 - без контроля. ^ Бит 2 - количество стоп-бит: 0-1 бит, 1-2 бита (на скорости 110 бит/с - 1,5 стоп-бита). т Биты [1:0] - длина посылки: 00-5 бит, 01-6 бит, 10-7 бит, 11-8 бит. 2.5.6. СОМ-порт и РпР Современные ПУ, подключаемые к СОМ-порту, могут под держивать спецификацию РпР. Основная задача ОС заклю чается в идентификации подключенного устройства, для чего разработан несложный протокол, реализуемый на любых СОМ-портах чисто программным способом (рис. 2.18): Рис. 2.18. Запрос идентификатора устройства РпР 1. Порт инициализируется с состоянием линий DTR=OA/, RTS=OFF, TXD=Mark - состояние покоя (Idle). 2. Некоторое время (0,2 с) ожидается появление сигнала DSR, которое указало бы на наличие устройства, подклю ченного к порту. В простейшем случае устройство имеет на разъеме перемычку DTR-DSR, обеспечивающую ука занный ответ. Если устройство обнаружено, выполняют ся манипуляции управляющими сигналами DTR и RTS для получения информации от устройства. Если ответ не получен, ОС, поддерживающая динамическое реконфи гурирование, периодически опрашивает состояние порта для обнаружения новых устройств. 3. Порт программируется на режим 1200 бит/с, 7 бит дан ных, без паритета, 1 стоп-бит, и на 0,2 с снимается сиг нал DTR. После этого устанавливается DTR=1, а еще через 0,2 с устанавливается и RTS=1. 4. В течение 0,2 с ожидается приход первого символа от ус тройства. По приходе символа начинается прием иден тификатора (см. ниже). Если за это время символ не пришел (рис. 2.18), выполняется вторая попытка опроса (см. п. 5), несколько отличающаяся от первой. 5. На 0,2 с снимаются оба сигнала (DTR=0 и RTS=0), после чего они оба устанавливаются (DTR=1 и RTS==1). 6. В течение 0,2 с ожидается приход первого символа от ус тройства, по приходе символа начинается прием иденти фикатора (см. ниже). Если за это время символ не пришел, то в зависимости от состояния сигнала DSR переходят к проверке отключения Verify Disconnect (при DSR^O) или в дежурное состояние Connect Idle (при DSR=1). 7. В дежурном состоянии Connect Idle устанавливается DTR=1, RTS=0, порт программируется на режим 300 бит/с, 7 бит данных, без паритета, 1 стоп-бит. Если в этом со стоянии обнаружится DSR=0, ОС следует уведомить об отключении устройства. Посимвольный прием идентификатора устройства имеет ограничения по тайм-ауту в 0,2 с на символ, а также общее ограничение в 2,2 с, позволяющее принять строку длиной до 256 символов. Строка идентификатора РпР должна иметь мар керы начала (28h или 08h) и конца (29h или 09h), между ко торыми располагается тело идентификатора в стандарти зованном формате. Перед маркером начала может находиться до 16 символов, не относящихся к идентификатору РпР. Если за первые 0,2 с ожидания символа (шаг 4 или 6) маркер на чала не пришел, или же сработал тайм-аут, а маркер конца не получен, или же какой-либо символ принят с ошибкой, про исходит переход в состояние Connect Idle. Если получена кор ректная строка идентификатора, она передается ОС. Для проверки отключения (Verify Disconnect) устанавливает ся DTR=1, RTS=0 и через 5 с проверяется состояние сигнала DSR. При DSR=1 происходит переход в состояние Connect Idle (см. п. 7), при DSR^O происходит переход в состояние Disconnect Idle, в котором система может периодически опрашивать сигнал DSR для обнаружения подключения уст ройства. Описанный механизм разрабатывался фирмой Microsoft с учетом совместимости с не-РпР-устройствами - невозмож ность их вывода из строя и устойчивость системы к сообще ниям, не являющимся РпР-идентификаторами. Например, обычная Microsoft Mouse при включении питания от интер фейса ответит ASCII-символом "М" (трехкнопочная - стро кой "МЗ"). |
Последовательные интерфейсы
Doc
Просмотров: 11304