Аппаратные интерфейсы ПК

         

СОМ-порт и РnР


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

1. Порт инициализируется с состоянием линий DTR=ON, 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.

Рис.2.15. Запрос идентификатора устройства PnP

4.   В течение 0,2 с ожидается приход первого символа от устройства. По приходу символа начинается прием идентификатора (см. ниже). Если за это время сим­вол не пришел, выполняется вторая попытка опроса (см. п. 5), несколько отли­чающаяся от первой.

5.   На 0,2 с снимаются оба сигнала (DTR-0 и RTS=0), после чего они оба устанав­ливаются (DTR=1 и RTS=1).

6.   В течение 0,2 с ожидается приход первого символа от устройства, по приходу символа начинается прием идентификатора (см. ниже). Если за это время сим­вол не пришел, то в зависимости от состояния сигнала DSR переходят к про­верке отключения Verify Disconnect (при DSR=0) или в дежурное состояние Connect Idle (при DSR=1).

7.   В дежурном состоянии Connect Idle устанавливается DTR=1, RTS=0, порт про­граммируется на режим 300 бит/с, 7 бит данных, без паритета, 1 стоп-бит.
Если в этом состоянии обнаружится DSR=0, ОС следует уведомить об отключении устройства.

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

2.10. Неисправности и тестирование СОМ-портов__________________________ 73

строку длиной до 256 символов. Строка идентификатора PnP должна иметь мар­керы начала (28h или 08h) и конца (29h или 09h), между которыми располагается тело идентификатора в стандартизованном формате. Перед маркером начала мо­жет находиться до 16 символов, не относящихся к идентификатору PnP. Если за первые 0,2 с ожидания символа (шаг 4 или 6) маркер начала не пришел, или же сработал тайм-аут, а маркер конца не получен, или же какой-либо символ принят с ошибкой, происходит переход в состояние Connect Idle. Если получена коррект­ная строка идентификатора, она передается ОС.

Для проверки отключения ( Verify Disconnect) устанавливается DTR=1, RTS=0 и че­рез 5 с проверяется состояние сигнала DSR. При DSR=1 происходит переход в со­стояние Connect Idle (см. п. 7), при DSR=0 происходит переход в состояние Dis­connect Idle, в котором система может периодически опрашивать сигнал DSR для обнаружения подключения устройства.

Описанный механизм разрабатывался компанией Microsoft с учетом совмес­тимости с устройствами, не относящимися к устройствам PnP, — он обеспечивает невозможность их вывода из строя и устойчивость системы к сообщениям, не являющимся PnP-идентификаторами. Например, обычная мышь Microsoft Mouse (не PnP) по включении питания от интерфейса ответит ASCII-символом «М» (трехкнопочная — строкой «МЗ»).


Содержание раздела