Смекни!
smekni.com

При дуплексных соединениях сигналы RTS/CTS имеют значения противоположные тем, которые они имели для полудуплексных сое­динений.

Когда DTE может принять данные, он подает сигнал по линии RTS. Если при этом DCE готово для принятия данных, оно возвра­щает сигнал CTS. Если напряжение на линиях RTS и CTS падает, то это сообщает передающей системе, что получающая система не го­това для приема данных.

Однако на практике не все так просто. Соединить компьютер и модем не составляет труда, т.к. интерфейс RS-232-C как раз для этого и предназначен. Но если вы захотите связать вместе два компьютера при помощи такого же кабеля, который вы исполь­зовали для связи модема и компьютера, то у вас возникнут проб­лемы. Для соединения двух терминальных устройств - двух компь­ютеров - как минимум необходимо перекрестное соединение линий TR и RD. Однако часто этого недостаточно, т.к. для устройств DTE и DCE функции, выполняемые линиями DSR, DTR, DCD, CTS, RTS асимметричны.

Устройство DTE подает сигнал DTR и ожидает получения сиг­налов DSR и DCD. В свою очередь, устройство DCE подает сигналы DSR, DCD и ожидает получения сигнала DTR. Таким образом, если соединить вместе два устройства DTE кабелем, который вы исполь­зовали для соединения устройств DTE и DCE, то они не смогут до­говориться друг с другом.

Теперь перейдем к сигналам RTS и CTS, управления потоком данных. иногда для соединения двух устройств DTE эти линии сое­диняют вместе на каждом конце кабеля. В результате получаем то, что другое устройство всегда готово для получения данных. Поэ­тому, если при большой скорости передачи принимающее устройство не успевает принимать и обрабатывать данные, возможна потеря данных.

Чтобы решить все эти проблемы для соединения двух уст­ройств типа DTE используется специальный кабель, в обиходе на­зываемый нуль-модемом.

Технические параметры интерфейса RS-232-C

При передаче данных на большие расстояния без использова­ния специальной аппаратуры из-за помех, наводимых электромаг­нитными полями, возможно возникновение ошибок. Вследствие этого накладываются ограничения на длину соединительного кабеля между устройствами DTR-DTR и DTR-DCE.

Официальное ограничение по длине для соединительного кабе­ля по стандарту RS-232-C составляет 15,24 метра. Однако на практике это расстояние может быть значительно больше. Оно не­посредственно зависит от скорости передачи данных.

110бод - 1524м / 914,4м

300бод - 1524м / 914,4м 1200бод - 914,4м / 914,4м 2400бод - 304,8м / 152,4м 4800бод - 304,8м / 76,2м 9600бод - 76,2м / 76,2м

Первое значение - скорость передачи в бодах, второе - максимальная длина для экранированного кабеля, третье - макси­мальная длина для неэкранированного кабеля.

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

2.2. Программирование адаптера

Порты асинхронного адаптера

На этапе инициализации системы, модуль POST BIOS тестиру­ет имеющиеся асинхронные порты RS-232-C и инициализирует их. В зависимости от версии BIOS инициализируются первые два или че­тыре порта. Их базовые адреса располагаются в области данных BIOS начиная с адреса 0000:0400h.

Первый адаптер COM1 имеет базовый адрес 3F8h и занимает диапазон адресов от 3F8h до 3FFh. Второй адаптер COM2 имеет ба­зовый адрес 2F8h и занимает адреса 2F8h..2FFh.

Асинхронные адаптеры могут вырабатывать прерывания:

COM1,COM3 - IRQ4

COM2,COM4 - IRQ3

Имеется 7 основных регистров для управления портами:

а) Регистр данных

Регистр данных расположен непосредственно по базовому ад­ресу порта RS-232-C и используется для обмена данными и для за­дания скорости обмена.

Для передачи данных в этот регистр необходимо записать пе­редаваемый байт данных. После приема данных от внешнего уст­ройства принятый байт можно прочитать из этого же регистра.

В зависимости от состояния старшего бита управляющего ре­гистра ( расположенного по адресу base_adr+3, где base_adr соответствует базовому адресу порта RS-232-C) назначение этого регистра может изменяться. Если старший бит равен нулю, регистр используется для записи передаваемых данных. Если же старший бит равен единице, регистр используется для ввода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делителя, можно изменять скорость передачи данных. Старший байт делителя записывается в регистр управления преры­ваниями по адресу base_adr+1.

Максимальная скорость обмена информацией, которую можно достичь при использовании асинхронного адаптера, достигает 115200 бод, что примерно соответствует 14 Кбайт в секунду.

б) Регистр управления прерываниями

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

в) Регистр идентификации прерывания

Считывая его содержимое, программа может определить причи­ну прерывания

г) Управляющий регистр

Управляющий регистр доступен по записи и чтению. Этот ре­гистр управляет различными характеристиками UART : скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов(символов).

д) Регистр управления модемом

Регистр управления модемом управляет состоянием выходных линий DTR, RTS и линий, специфических для модемов - OUT1 и OUT2, а также запуском диагностики при соединенных вместе входе и выходе асинхронного адаптера.

е) Регистр состояния линии

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

ж) Регистр состояния модема

Регистр состояния модема определяет состояние управляющих сигналов, передаваемых модемом асинхронному порту компьютера.

Инициализация асинхронного адаптера

Первое, что должна сделать программа, работающая с асинх­ронным адаптером - установить формат и скорость передачи дан­ных. После загрузки операционной системы для асинхронных адап­теров устанавливается скорость 2400 бод, не выполняется провер­ка на четность, используются один стоповый и восьмибитовая дли­на передаваемого символа. Можно изменить этот режим командой MS-DOS MODE.

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

Если вам надо задать новое значение скорости обмена данны­ми, перед записью байта режима установите старший бит этого байта в 1, при этом регистр данных и управляющий регистр используются для задания скорости обмена. Затем последовательно двумя командами ввода загрузите делитель частоты тактового ге­нератора. Младший байт запишите в регистр данных, а старший - в регистр управления прерываниями.

Перед началом работы необходимо также проинициализировать регистр управления прерываниями, даже если в вашей программе не используются прерывания от асинхронного адаптера. Для этого сначала надо перевести регистр данных и регистр управления пре­рываниями в обычный режим, записав ноль в старший бит управляю­щего регистра. Затем можно устанавливать регистр управления прерываниями. Если прерывания вам не нужны, запишите в этот порт нулевое значение.

Современные микросхемы UART

Фактически микросхема UART 8250 в ее исходном виде исполь­зовалась только в старых моделях компьютеров IBM PC. Современ­ные микросхемы - UART 16450, 16550, 16550A изготовленные по но­вой технологии, позволяют достичь более высокой скорости обмена данными, а также обладают новыми аппаратными возможностями.

Основные возможности различных микросхем UART:

- 8250 (8250-B) : Использовался на первых моделях IBM PC

- 16450 (8250-A) : Эта микросхема имеет большую производи­тельность по сравнению с 8250. Фактически это 8250, но изготов­ленный с использованием новой технологии. Микросхема дополнена регистром расширения (scratch register). Устранены ошибки в ре­гистре разрешения прерываний и добавлена возможность перевода линии OUT2 в высокоимпедансное состояние во время проведения тестов, когда выход данных замкнут на вход.

- 16550 : Фактически соответствует 16450. Добавлена воз­можность внутренней буферизации передаваемых и принимаемых дан­ных. Буфера выполнены по схеме FIFO (First In First OUT - пер­вый вошел, первым вышел) или, другими словами в виде очере­ди.При использовании буферизации возможно заметно уменьшить число прерываний, вырабатываемых асинхронным портом. Однако из-за ошибки в микросхеме эту возможность лучше не использовать

- можно потерять отдельные символы. В общем случае микросхема 16550 более быстрая, чем 16450. Дополнительно 16550 дает воз­можность использовать несколько каналов прямого доступа ( DMA channels).

- 16550A (16550AN) Соответствует 16550, исправлены ошибки реализации FIFO. Эта микросхема дает возможность использования программисту нескольких каналов прямого доступа. 16550А, как правило, используется в компьютерах с процессорами 80386/486 и в компьютерах с RISC-архитектурой. Если вы хотите работать на скоростях больших, чем 9600 бод, желательно использовать именно эту микросхему.

3.Типы модемов

В настоящее время выпускается огромное количество всевоз­можных модемов, начиная от простейших, обеспечивающих скорость передачи около 300 бит/сек, до сложных факс-модемных плат, поз­воляющих вам послать с вашего компьютера факс или звуковое письмо в любую точку мира.

В реферате будет рассказано только о так называемых hayes-совместимых модемов. Эти модемы поддерживают разработан­ный фирмой Hayes набор АТ-команд управления модемами. В настоя­щее время такие модемы широко используются во всем мире для связи персональных компьютеров IBM PC/XT/AT, PS/2 через теле­фонные линии.

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