1. Сопряжение ЭВМ с каналами связи

Аппаратная реализация интерфейса RS-232 включает в себя последовательный адаптер и собственно механический интерфейс (разъемное соединение).

Когда фирма IBM стала выпускать свои первые персональные компьютеры, на их материнской плате не предусматривалось никаких схем для поддержки последовательной связи. Однако дополнительно мог поставляться асинхронный коммуникационный адаптер. Этот адаптер устанавливался в соответствующий слот материнской платы и обеспечивал связь между микропроцессором и программируемым интерфейсом, подобным RS-232. С тех пор много воды утекло, было продано и установлено буквально несчетное число адаптеров, выпускаемых большим числом фирм. Не смотря на это у всех последовательных адаптеров гораздо больше общего, нежели различий. Причина этого — не отсутствие творческого подхода у разработчиков, а необходимость согласования характеристик адаптера с требованиями простого и жестко определенного стандарта

Рис. 1. Структурная схема адаптера RS-232

Структурная схема типичного варианта адаптера последовательного порта RS-232 представлена на рис. 1.

Преобразование ТТЛ-уровней в уровни интерфейса RS-232 и наоборот производится передатчиками и приемниками EIA, входящими в состав микросхем типа il488 и il489 или их аналогов.

Обычно передача данных осуществляется на одной из нескольких дискретных скоростей: 50, 75, 110, 150 , 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 или 115200 Бод. Средства BIOS (такие как прерывание Intl4h) поддерживают скорости только до 9600 Бод включительно. Тактовая частота составляет 1,8432 МГц и стабилизирована благодаря использованию кварцевого i снератора. Из этой частоты формируются все остальные необходимые частоты.

В основе контроллера последовательного порта передачи данных лежит микросхема INS8250 (i8250) или ее современные аналоги — 16450, 16550, 16550А. Эта микросхема является асинхронным приемопередатчиком UART (Universal Asinchronouse Receiver Transmitter).

Микросхема 8250 содержит регистры передатчика и приемника данных, а также ряд служебных регистров. Точная последовательность операций, выполняемых UART в каждой конкретной ситуации, контролируется внешними параметрами. В общих чертах работу UART в режимах приема/передачи можно описать следующим образом. При передаче символа UART должен выполнить следующие операции:

> принять символ в параллельной форме через системную шину PC;

> преобразовать символ в последовательность отдельных битов (параллельно-последовательное преобразование);

> сформировать старт-стопный символ путем добавления к информационным разрядам стартового, стопового и, возможно, бита паритета (четности или нечетности);

> передать старт-стопный символ на интерфейс с требуемой скоростью;

> сообщить о готовности к передаче следующего символа.

При приеме символа UART должен выполнить обратную последовательность действий:

> принять данные в последовательной форме;

> проверить правильность структуры старт-стопного символа: стартовый бит, информационные разряды, бит паритета; если выявлена ошибка — выдать сигнал ошибки;

> осуществить проверку паритета; если выявлена ошибка — выдать сигнал ошибки паритета;

> преобразовать старт-стопный символ в информационный и передать его в параллельной форме в PC;

> сообщить, что символ принят.

Первые адаптеры последовательной связи фирмы IBM были построены на микросхеме INS8250 фирмы National Semiconductor. За прошедшее время эта микросхема несколько раз модернизировалась. Выпускались и многочисленные функциональные аналоги другими производителями микросхем. Тем не менее, все модификации микросхемы 8250 идентичны между собой по большинству своих функциональных характеристик. Микросхемы 8250 рассчитаны на максимальную скорость 38400 бит/с. В настоящее время UART такого типа практически не используются.

Появившиеся позже микросхемы UART серии 16450 рассчитаны на максимальную скорость 115200 бит/с. При их разработке были исправлены некоторые ошибки микросхем серии 8250.

Работая со скоростями порядка 9600 бит/с микросхемы 8250 и 16450 превосходно выполняли свои функции, полностью соответствуя по своим характеристикам невысокому (в прошлом) быстродействию PC и однозадачным операционным системам. Однако на сегодняшнем уровне техники связи с ее высокими скоростями передачи информации и многозадачными операционными системами (ОС) микросхемы такого типа стали "узким местом" коммуникационной аппаратуры. Чтобы исправить ситуацию были разработаны и выпущены микросхемы типа 16550 (PC16550C/NS16550AF и ряд их функциональных аналогов).

По умолчанию микросхема 16550 работает в режиме микросхемы 8250 и может быть установлена вместо микросхемы 8250. В совместимом режиме, она является полным функциональным аналогом UART 8250 и 16450 и в отличие от микросхем UART более ранних выпусков микросхема 16550 имеет второй режим работы, предусматривающий сокращение вмешательства центрального процессора в процедуру последовательной передачи данных. В этом режиме внутренние буферные регистры приемника и передатчика расширяются от 1 до 16 байтов и управляются с использованием логики FIFO (First In — First Out

НЕ нашли? Не то? Что вы ищете?

— первым пришел — первым вышел). Буфер FIFO приемника используется также для хранения трех битов информации об ошибках для каждого символа. Ошибки паритета, форматирования и сигналы прерывания (BREAK-сигналы) буферируются вместе с символом, к которому они относятся. Микросхема 16550 выполняет следующие функции:

> обеспечивает простой интерфейс между шиной PC и модемом или другими внешними устройствами;

> автоматически добавляет, удаляет и проверяет форматирующие биты;

> генерирует и проверяет биты паритета под управлением специальной программы;

> выделяет указатели состояния операций передачи и приема, а также состояния линии передачи данных и устройства сопряжения;

> содержит встроенные сдвиговые регистры и регистры хранения для операций передачи и приема данных, что исключает необходимость точной синхронизации работы процессора с потоком последовательных данных;

> содержит программируемый генератор-контроллер скорости передачи, работающий с внешним опорным сигналом частотой до 24 МГц;

> содержит встроенные средства самотестирования;

> может работать под управлением программного обеспечения, разработанного для микросхем 8250 и 16450;

> внутренние буферы позволяют хранить до 16 символов и связанную с ними служебную информацию при операциях передачи и приема данных.

Назначение и использование S-регистров модема.

Hayes-совместимые модемы имеют набор регистров, определяющих различные характеристики модема. Содержимое большинства этих регистров можно считывать и изменять программным способом. Для чтения и записи регистров модема можно использовать AT-команды ATSr? и ATSr=n, где r - номер регистра, а n - число, которое в него записывается.

Регистр S0 - Количество звонков до ответа

Определяет, после какого числа вызывных звонков модем отвечает на входящий вызов, т. е. подключается к телефонной линии. Введение значения от 1 до 255 переводит модем в режим автоответа. Например, если S0=3, модем ожидает 3 звонка и затем начинает передачу последовательности ответа (снимает трубку, подключается к линии и отвечает на вызов удаленного модема). Если S0=0, автоматический ответ запрещен. Возможно считывание и изменение значений в регистре.

Регистр S1 - Подсчет звонков

Значение в данном регистре увеличивается на 1 при каждом обнаружении модемом сигнала звонка из телефонного канала. Значение сбрасывается в 0, если сигнал звонка не обнаруживается в течение 8-секундного интервала. Когда значение в регистре S1 становится равным значению в регистре S0. модем начинает передачу последовательности ответа.

Возможно только считывание значения в регистре.

Регистр S2 - Знак кода перехода

В данном регистре хранится значение ASCII кода перехода (ESCAPE-символ). Этот код перехода позволяет пользователю переключить модем из режима передачи данных в командный режим без разрыва связи с удаленным модемом. Значение по умолчанию равно 43, что соответствует знаку "+" кода ASCII. При значениях, больших 127, обнаружение кода перехода запрещается.

Возможны считывание и изменение знака кода перехода. Для изменения его, например, на "-", необходимо ввести команду ATS2=45 (45 является десятичным значением кода ASCII для "-"). После этого переход в командный режим будет производиться с помощью "---" вместо "+++", как это было ранее.

Регистр S3 - Знак возврата каретки

В регистре S3 хранится десятичное значение кода ASCII знака "возврат каретки" <CR>. Этот знак служит завершающим знаком командной строки и кода ответа. По умолчанию используется значение 13, но если применяется нестандартное оконечное оборудование данных, можно переопределить этот знак, дописав в регистр новое значение.

Примечание: Обычно значение S3 не сохраняется в энергонезависимой памяти. Оно инициализируется значением 13 при включении модема, или после приема команды ATZ.

Регистр S4 - Знак перевода строки

В регистре S4 хранится десятичное значение кода ASCII знака "перевод строки" <LF>. По умолчанию используется значение 10. Этот знак является выходным после знака "возврат каретки", если разрешены коды ответа в развернутой форме (команда ATV1).

Возможны считывание и изменение значений в регистре.

Примечание: Обычно значение S4 не сохраняется в энергонезависимой памяти. Оно инициализируется значением 10 при включении модема, или после приема команды ATZ.

Регистр S5 - Знак возврата на одну позицию

В регистре S5 хранится десятичное значение кода ASCII знака "возврат на одну позицию" <Backspace>. По умолчанию используется значение 8. Этому знаку не должно присваиваться значение, соответствующее печатаемому знаку кода ASCII (т. е., от 31 до 126). В случае присвоения указанных значений, модем их не распознает.

Когда принят знак "возврат на одну позицию" во время ввода команды, производятся следующие операции:

1. Модем возвращает эхо знака на терминал.

2. На терминал выводится знак пробела в коде ASCII (20).

3. На терминал выводится еще один знак "возврат на одну позицию".

Так как выводится эхо трех знаков, то время, требующееся модему для обработки знака "возврат на одну позицию", примерно равняется времени, которое нужно для передачи 3-х знаков на выбранной скорости передачи. Не рекомендуется передавать многократно эти знаки между оконечными станциями, так как модем не сможет достаточно быстро обработать их.

Возможны считывание и изменение значений в регистре.

Примечание: Обычно значение S5 не сохраняется в энергонезависимой памяти. Оно инициализируется значением 8 при включении модема, или после приема команды ATZ.

Регистр S6 - Ожидание тона станции

Этот регистр определяет время ожидания модема после подключения к линии до момента набора им первой цифры номера. Эта задержка обеспечивает телефонной станции время для обнаружения подключения к линии и посылки в линию ответного тона станции ("приглашения к набору"). Если введены команды АТХ3 или АТХ4, значение в S6 игнорируется. Минимальный период ожидания равен 2 секундам - модем игнорирует любое меньшее значение в регистре S6.

Возможны считывание и изменение значений в регистре.

Единица измерения - секунда.

Значение по умолчанию обычно равно 002.

Регистр S7 - Ожидание несущей после набора номера

Этот регистр определяет время после набора номера, в течение которого модем должен выполнить соединение (обнаружить несущую частоту от удаленного модема). Если в течение этого времени модем установит связь, то он выдаст сообщение CONNECT согласно команде ATXn. Если связь не будет установлена, модем отвечает NO CARRIER.

Возможны считывание и изменение значений в регистре.

Единица измерения - секунда.

Значение по умолчанию обычно равно 030.

Регистр S8 - Время паузы в наборе по модификатору "запятая"

Данный регистр задает длительность паузы в наборе номера, при введении в команду ATD модификатора ","("запятая"). В общем случае, эта пауза используется для ожидания второго тона станции при вызове с АТС, или когда используются специальные телефонные службы.

Возможны считывание и изменение значений в регистре.

Единица измерения - секунда.

Значение по умолчанию обычно равно 002.

Регистр S9 - Время ответа схемы обнаружения несущей

Определяет время, в течение которого модем должен принимать несущую от удаленного модема. Если несущая частота принималась в течение этого времени, модем передает в компьютер сигнал DCD.

С увеличением этого времени уменьшается вероятность ложного обнаружения несущей при наличии шумов, таких, как сигнал "занято", речь и т. п.

Возможны считывание и изменение значений в регистре.

Единица измерения - 0,1 секунды.

Значение по умолчанию обычно равно 006 (0,6 сек.).

Регистр S10 - Задержка между пропаданием несущей и отключением от линии

Задает задержку между обнаружением пропадания несущей частоты от удаленного модема и моментом разъединения связи. Эта задержка позволяет приемнику переносить кратковременные пропадания несущей без отключения от линии местного модема. Если S10=255, то модем игнорирует состояние несущей и функционирует, как будто несущая все время присутствует. Значение регистра S10 должно быть больше значения регистра S9, иначе связь установить нельзя.

Возможны считывание и изменение значений в регистре.

Единица измерения - 0,1 секунды.

Значение по умолчанию обычно равно 014 (1,4 сек.).