Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системное программирование.doc
Скачиваний:
178
Добавлен:
19.03.2015
Размер:
1.96 Mб
Скачать

13.2. Последовательный интерфейс rs-232c

Асинхронный режим передачи данных в IBM PC совместимых устройствах реализуется с помощью COM порта с использованием протокола RS-232C. Интерфейс RS-232C не обеспечивает гальванической развязки устройств, и сигнал передается относительно общего провода (схемной земли). Внешние устройства подключаются к порту через разъем DB25P (25 выводов) или DB9P (9 выводов) (табл. 103).

Табл. 103. Линии интерфейса RS-232C.

Сигнал

DB25P

DB9P

Напр.

Назначение

PG

1

-

-

Защитное заземление. Соединяется с

корпусом устройства и экраном кабеля.

SG

7

5

-

Сигнальное заземление (относительно

нее действуют линии сигналов).

TD

2

3

OUT

Выход передатчика; передаваемые

данные (Transmitted Data).

RD

3

2

IN

Вход приемника; принимаемые данные

(Received Data).

RTS

4

7

OUT

Запрос для передачи (Request to send, RTS).

Состояние "включено" уведомляет модем о

том, что у терминала есть данные для передачи.

CTS

5

8

IN

Сброс для передачи (Clear to Send, CTS).

Вход разрешения передачи данных терминалу.

Состояние «выключено» аппаратно запрещает

передачу данных.

DTR

20

4

OUT

Готовность выходных данных

(Data Terminal Ready, DTR).

DSR

6

6

IN

Вход сигнала готовности от аппаратуры

передачи данных (Data Set Ready, DSR).

DCD

8

1

IN

Детектор принимаемого с линии сигнала

(Data Carrier Detect, DCD). Вход сигнала

обнаружения несущей удаленного модема.

RI

22

9

IN

Индикатор вызова (Ring Indicator, RI).

Уровни напряжения на линиях разъема составляют для логического нуля -15 вольт, для логической единицы +15В. Логической единице на входе приемника соответствует уровень напряжения -3..-12В. Для линий управляющих сигналов такое состояние называют «ON», для линий последовательных данных – «MARK». Логическому «0» соответствует напряжение +3..+12В («OFF» или «SPACE»).

Состояние на выходе приемника изменяется только при пересечении напряжением порога +3 или -3В. Уровни сигналов на выходах передатчика должны лежать в диапазоне +5..+12В или -5..-12В. Присоединение и отключение устройств с автономным питанием должно производиться при отключенном питании, иначе разность невыровненных потенциалов устройств в момент коммутации может превысить допустимые пределы и вывести из строя микросхемы порта.

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

Аппаратный протокол управления RTS/CTS использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к работе. Байт, передаваемый на момент прихода CTS, будет передан, однако с момента окончания его передачи передатчик переходит к ожиданию готовности приемника (снятие CTS). Протокол обеспечивает быструю реакцию передатчика на состояние приемника и позволяет организовать обмен, не прибегая к буферизации.

Протокол применяется в принтерах и для соединения компьютеров. В случае с принтером линия CTS ПК должна соединяться с линией RTS принтера. При соединении двух ПК необходимо перекрестное соединение CTS-RTS. Если аппаратный протокол обмена не используется, то на линию CTS ПК необходимо подать сигнал «включено», что обычно достигается соединением CTS ПК с его же RTS перемычкой на разъеме.

Аппаратный протокол DTR/DSR подобен RTS/CTS, но использует другую пару сигналов.

Программный протокол XON/XOFF реализует двунаправленный канал обмена. Протокол предполагает наличие у приемника буфера, т.к. время реакции передатчика может оказаться достаточно большим. Когда буфер заполняется до определенного уровня (80-90%), он передает на приемник команду XOFF (байт с кодом 13h). Приняв команду, передатчик прекращает передачу и переходит в состояние ожидания до прихода команды XON (байт с кодом 11h), по которому передатчик возобновит передачу.

Программный протокол ACK. При обмене по данному протоколу для получения байта данных приемник посылает передатчику команду ACK (байт с кодом 6h). В ответ передатчик посылает приемнику один байт (или пакет байт определенного размера).