Последовательная передача данных
Микропроцессорная система без средств ввода и вывода оказывается бесполезной. Характеристики и объемы ввода и вывода в системе определяются, в первую очередь, спецификой ее применения — например, в микропроцессорной системе управления некоторым промышленным процессом не требуется клавиатура и дисплей, так как почти наверняка ее дистанционно программирует и контролирует главный микрокомпьютер (с использованием последовательной линии RS–232C).
Поскольку данные обычно представлены на шине микропроцессора в параллельной форме (байтами, словами), их последовательный ввод–вывод оказывается несколько сложным. Для последовательного ввода потребуется средства преобразования последовательных входных данных в параллельные данные, которые можно поместить на шину. С другой стороны, для последовательного вывода необходимы средства преобразования параллельных данных, представленных на шине, в последовательные выходные данные. В первом случае преобразование осуществляется регистром сдвига с последовательным входом и параллельным выходом (SIPO), а во втором — регистром сдвига с параллельным входом и последовательным выходом (PISO).
Последовательные данные передаются в синхронном или асинхронном режимах. В синхронном режиме все передачи осуществляются под управлением общего сигнала синхронизации, который должен присутствовать на обоих концах линии связи. Асинхронная передача подразумевает передачу данных пакетами; каждый пакет содержит необходимую информацию, требующуюся для декодирования содержащихся в нем данных. Конечно, второй режим сложнее, но у него есть серьезное преимущество: не нужен отдельный сигнал синхронизации.
Существуют специальные микросхемы ввода и вывода, решающие проблемы преобразования, описанные выше. Вот список наиболее типичных сигналов таких микросхем:
D0–D7 — входные–выходные линии данных, подключаемые непосредственно к шине процессора;
RXD — принимаемые данные (входные последовательные данные);
TXD — передаваемые данные (выходные последовательные данные);
CTS — сброс передачи. На этой линии периферийное устройство формирует сигнал низкого уровня, когда оно готово воспринимать информацию от процессора;
RTS — запрос передачи. На эту линию микропроцессорная система выдает сигнал низкого уровня, когда она намерена передавать данные в периферийное устройство.
Все сигналы программируемых микросхем последовательного ввода–вывода ТТЛ–совместимы. Эти сигналы рассчитаны только на очень короткие линии связи. Для последовательной передачи данных на значительные расстояния требуются дополнительные буферы и преобразователи уровней, включаемые между микросхемами последовательного ввода–вывода и линией связи.
Общие сведения о интерфейсе RS–232C
Интерфейс RS–232C является наиболее широко распространенной стандартной последовательной связью между микрокомпьютерами и периферийными устройствами. Интерфейс, определенный стандартом Ассоциации электронной промышленности (EIA), подразумевает наличие оборудования двух видов: терминального DTE и связного DCE.
Чтобы не составить неправильного представления об интерфейсе RS–232C, необходимо отчетливо понимать различие между этими видами оборудования. Терминальное оборудование, например микрокомпьютер, может посылать и (или) принимать данные по последовательному интерфейсу. Оно как бы оканчивает (terminate) последовательную линию. Связное оборудование — устройства, которые могут упростить передачу данных совместно с терминальным оборудованием. Наглядным пример связного оборудования служит модем (модулятор–демодулятор). Он оказывается соединительным звеном в последовательной цепочке между компьютером и телефонной линией.
Различие между терминальными и связными устройствами довольно расплывчато, поэтому возникают некоторые сложности в понимании того, к какому типу оборудования относится то или иное устройство. Рассмотрим ситуацию с принтером. К какому оборудованию его отнести? Как связать два компьютера, когда они оба действуют как терминальное оборудование. Для ответа на эти вопросы следует рассмотреть физическое соединение устройств. Произведя незначительные изменения в линиях интерфейса RS–232C, можно заставить связное оборудование функционировать как терминальное. Чтобы разобраться в том, как это сделать, нужно проанализировать функции сигналов интерфейса RS–232C (таблица 1).
Таблица 1. Функции сигнальных линий интерфейса RS–232C.
Номер контакта | Сокращение | Направление | Полное название |
1 | FG | — | Основная или защитная земля |
2 | TD (TXD) | К DCE | Передаваемые данные |
3 | RD (RXD) | К DTE | Принимаемые данные |
4 | RTS | К DCE | Запрос передачи |
5 | CTS | К DTE | Сброс передачи |
6 | DSR | К DTE | Готовность модема |
7 | SG | — | Сигнальная земля |
8 | DCD | К DTE | Обнаружение несущей данных |
9 | — | К DTE | (Положительное контрольное напряжение) |
10 | — | К DTE | (Отрицательное контрольное напряжение) |
11 | QM | К DTE | Режим выравнивания |
12 | SDCD | К DTE | Обнаружение несущей вторичных данных |
13 | SCTS | К DTE | Вторичный сброс передачи |
14 | STD | К DCE | Вторичные передаваемые данные |
15 | TC | К DTE | Синхронизация передатчика |
16 | SRD | К DTE | Вторичные принимаемые данные |
17 | RC | К DTE | Синхронизация приемника |
18 | DCR | К DCE | Разделенная синхронизация приемника |
19 | SRTS | К DCE | Вторичный запрос передачи |
20 | DTR | К DCE | Готовность терминала |
21 | SQ | К DTE | Качество сигнала |
22 | RI | К DTE | Индикатор звонка |
23 | — | К DCE | (Селектор скорости данных) |
24 | TC | К DCE | Внешняя синхронизация передатчика |
25 | — | К DCE | (Занятость) |
Примечания:
1. Линии 11, 18, 25 обычно считают незаземленными. Приведенная в таблице спецификация относится к спецификациям Bell 113B и 208A.
2. Линии 9 и 10 используются для контроля отрицательного (MARK) и положительного (SPACE) уровней напряжения.
3. Во избежание путаницы между RD (Read — считывать) и RD (ReceivedData — принимаемые данные) будут использоваться обозначения RXD и TXD, а не RD и TD.
Стандартный последовательный порт RS–232C имеет форму 25–контактного разъема типа D (рис 1).
Рис. 1. Назначение линий 25–контактного разъема типа D для интерфейса RS–232C
Терминальное оборудование обычно оснащено разъемом со штырьками, а связное — разъемом с отверстиями (но могут быть и исключения).
Сигналы интерфейса RS–232C подразделяются на следующие классы.
Последовательные данные (например, TXD, RXD). Интерфейс RS–232C обеспечивает два независимых последовательных канала данных: первичный (главный) и вторичный (вспомогательный). Оба канала могут работать в дуплексном режиме, т.е. одновременно осуществляют передачу и прием информации.
Управляющие сигналы квитирования (например, RTS, CTS). Сигналы квитирования — средство, с помощью которого обмен сигналами позволяет DTE начать диалог с DCE до фактической передачи или приема данных по последовательной линии связи.
Сигналы синхронизации (например, TC, RC). В синхронном режиме (в отличие от более распространенного асинхронного) между устройствами необходимо передавать сигналы синхронизации, которые упрощают синхронизм принимаемого сигнала в целях его декодирования.
На практике вспомогательный канал RS–232C применяется редко, и в асинхронном режиме вместо 25 линий используются 9 линий (таблица 2).
Таблица 2. Основные линии интерфейса RS–232C.
Номер контакта | Сигнал | Выполняемая функция |
1 | FG | Подключение земли к стойке или шасси оборудования |
2 | TXD | Последовательные данные, передаваемые от DTE к DCE |
3 | RXD | Последовательные данные, принимаемые DTE от DCE |
4 | RTS | Требование DTE послать данные к DCE |
5 | CTS | Готовность DCE принимать данные от DTE |
6 | DSR | Сообщение DCE о том, что связь установлена |
7 | SG | Возвратный тракт общего сигнала (земли) |
8 | DCD | DTE работает и DCE может подключится к каналу связи |
В большинстве схем, содержащих интерфейс RS–232C, данные передаются асинхронно, т.е. в виде последовательности пакета данных. Каждый пакет содержит один символ кода ASCII, причем информация в пакете достаточна для его декодирования без отдельного сигнала синхронизации.
Символы кода ASCII представляются семью битами, например буква А имеет код 1000001. Чтобы передать букву А по интерфейсу RS–232C, необходимо ввести дополнительные биты, обозначающие начало и конец пакета. Кроме того, желательно добавить лишний бит для простого контроля ошибок по паритету (четности).
Наиболее широко распространен формат, включающий в себя один стартовый бит, один бит паритета и два стоповых бита. Начало пакета данных всегда отмечает низкий уровень стартового бита. После него следует 7 бит данных символа кода ASCII. Бит четности содержит 1 или 0 так, чтобы общее число единиц в 8–битной группе было нечетным. Последним передаются два стоповых бита, представленных высоким уровнем напряжения. Эквивалентный ТТЛ–сигнал при передаче буквы А показан на рис. 2.