Последовательный порт RS-232 V5.0
ВНИМАНИЕ!
Здесь приводится очень сокращённый текст статьи. Если данная информация вас заинтересовала, то
вы можете скачать полную версию статьи по указанной ниже ссылке.
Введение
Последовательный порт использовать сложнее, чем параллельный порт. В большинстве случаев
любое устройство, подсоединенное к последовательному порту, будет требовать преобразования
последовательной передачи в параллельный код, чтобы оно могло быть использовано. Это может
быть сделано с использованием UART. Со стороны программного обеспечения для последовательного
порта выделено значительно больше регистров, чем для стандартного параллельного порта -
Standard Parallel Port (SPP). Каковы же преимущества последовательного порта перед параллельным?
- Последовательный кабель может быть длиннее, чем параллельный кабель. Последовательный порт передает «1» как –3 .. –25 В и «0» как +2 .. +25 В. Параллельный порт передает «1» как 5 В и «0» как 0 В. Поэтому последовательный порт имеет максимальную амплитуду 50 В, а параллельный – всего 5 В. Поэтому потери в кабеле последовательного порта не создают больших проблем, в отличие от потерь в параллельном кабеле.
- Вам не нужно так много проводов, как при параллельной передаче. Если ваше устройство должно находиться на значительном расстоянии от компьютера, то 3-жильный кабель (нуль-модемная конфигурация) является более дешевым, чем кабели с 19 и 25 жилами. Однако вы должны включить в стоимость разъемы для каждого конца кабеля.
- Сегодня весьма популярны инфракрасные устройства. Вы знаете множество электронных записных книжек, карманных компьютеров, которые имеют встроенные совместимые инфракрасные порты. Однако можете ли вы представить одновременную передачу 8-ми бит данных через комнату (из точки установки устройства)? И как при этом расшифровать, где какой бит? Поэтому последовательная передача используется там, где необходимо передавать один бит за один период времени. IrDA-1 (Первая инфракрасная спецификация) имела скорость передачи 115,2 Кбод и подключалась в UART. Длина импульса, однако, была уменьшена до 3/16 длины бита RS232 для сохранения мощности рассматриваемых устройств – записных книжек, ноутбуков и карманных компьютеров.
- Микроконтроллеры (МК) тоже стали весьма популярны. Многие из них имеют встроенный SCI (Serial Communications Interfaces последовательный коммуникационный интерфейс), который может быть использован для связи с внешним миром. Последовательное подключение уменьшает количество выводов этих МК. Только два вывода обычно используются, Передача Данных - Transmit Data (TXD) и Прием Данных - Receive Data (RXD), в сравнение с не менее чем 8-ю выводами, если вы используете 8-битный параллельный метод (Вам может понадобиться также вывод для стробирующего импульса).
Часть 1: Аппаратная часть компьютера
Свойства аппаратной части
Устройства, которые используют последовательные кабели для соединения с компьютером,
разделяются на две категории: DCE (Коммуникационное оборудование - Data Communications Equipment) и
DTE (Терминальное оборудование - Data Terminal Equipment.) Коммуникационное оборудование –
это такие устройства как модем, телефонный адаптер, плоттер и т.п. терминальное оборудование –
это компьютер или терминал.
Электрические характеристики последовательного порта содержатся в стандарте RS232C EIA
(Ассоциация Промышленности и Электроники - Electronics Industry Association).
Это множество параметров, таких как:
- "Space" (логический 0) лежит в диапазоне +3 .. +25 Вольт.
- "Mark" (логическая 1) лежит в диапазоне -3 .. -25 Вольт.
- Область между +3 и -3 Вольт не определена.
- Напряжение без нагрузки никогда не должно превышать 25 Вольт. (Относительно GND (корпуса)).
- Ток нагрузки не должен превышать 500mA. Устройство должно выдерживать такой ток без повреждения (Имейте это ввиду!)
Вышеуказанные характеристики – это не полный список стандарта EIA. Емкость линии,
максимальная скорость (бод) и др. также должны учитываться. Подробную информацию ищите в
стандарте EIA RS232-E. Интересно, что стандарт RS232C определяет максимальную скорость
передачи 20000 BPS!, что является довольно медленным на сегодняшний день. Пересмотренные
стандарты EIA-232D и EIA-232E были приняты, соответственно в 1987 и 1991гг.
Последовательные порты имеют два «размера» - это 25-выводный разъем D-типа и 9-выводный разъем
D-типа. Оба этих разъема - «папа» на компьютере, и «мама» на кабеле или устройстве.
Ниже приведена таблица соединительных выводов для 9-ти и 25-ти выводных разъемов D-типа
(таблицу см. в
полной версии статьи).
Управление потоком
Если скорость от DTE к DCE в несколько раз больше, чем от DCE к DCE, то
ПК может отправить данные на ваш модем в 115200 BPS. Рано или поздно данные будут потеряны,
т.к. буферы переполнятся, поэтому требуется управление потоком. Управление потоком выполняется
двумя основными средствами – Аппаратной частью и Программным обеспечением.
Программное управление потоком. Иногда называемое Xon/Xoff, использует два символа Xon и Xoff.
Xon обычно содержит 17 ASCII-символов, в то время как 19 ASCII-символов используются для Xoff.
Модем будет иметь только маленький буфер, так что когда компьютер заполнит его, модем отправит
символ Xoff, чтобы сообщить компьютеру о прекращении отправки данных. Как только у модема
появится место для новых данных, он отправляет символ Xon и компьютер отправляет следующие
данные. Этот способ управления потоком имеет то преимущество, что он не требует дополнительных
проводов, т.к. символы передаются через линии TD/RD. Однако на медленных линиях каждый символ
требует 10 бит, которые могут замедлить связь.
Аппаратное управление потоком также известно как управление потоком RTS/CTS.
Оно использует два провода вашего последовательного порта, поэтому обмен данными происходит
быстрее, чем при использовании лини1 передачи данных. Таким образом, аппаратное управление
потоком не замедляет время передачи, как использование Xon-Xoff. Когда компьютер хочет
отправить данные, он устанавливает активной линию Запроса для Передачи (RTS). Если модем
имеет место для этих данных, он отвечает, устанавливая активной линию Сброс для Отправки
(CTS) и компьютер начинает отправлять данные. Если модем не имеет свободного места, то
он не отправит Сброс для Отправки.
UART (8250 и совместимые)
UART установлен для Универсального Асинхронного Приемника-Передатчика -
Universal Asynchronous Receiver/Transmitter. Это небольшая микросхема на вашей последовательной
плате, которая выполняет различные действия с вашим модемом или другими присоединенными
устройствами. Большинство плат имеют UART, встроенный в другие микросхемы, которые могут
управлять также параллельным портом, игровым портом, дисководом. Винчестером и другими
внешними устройствами. Серия 8250 series, которая включает 16450, 16550, 16650 и 16750
UARTы, является наиболее часто используемой в компьютерах. Позже мы рассмотрим другие
типы, которые могут быть использованы в ваших устройствах и проектах.
16550 – это чип, совместимый с 8250 и 16450, и имеет только два отличия - выводы 24 и
29. На 8250 вывод 24 был выбором чипа, который функционировал только как индикатор
активности или не активности чипа. Вывод 29 был не подсоединен на 8250/16450 UART.
16550 представил два новых вывода на их место. Это Готовность Передачи - Transmit
Ready и Готовность Приема - Receive Ready, которые могут работать непосредственно с
DMA (Direct Memory Access – прямой доступ к памяти). Эти выводы имеют два различных
режима работы. Режим 0 поддерживает одиночную передачу ПДП, режим 1 поддерживает
множественную передачу ПДП.
Режим 0 также называется режимом 16450. Этот режим выбирается, когда буферы
FIFO отключены через Бит 0 Регистра Управления FIFO (FIFO Control Register) или
когда буферы FIFO включены, но режим выбора ПДП (DMA Mode Select) = 0 (бит 3 в FCR).
В этом режиме RXRDY является активным низким, когда хотя бы один символ (байт)
присутствует в приемнике обмена (Receiver Buffer). RXRDY будет неактивным высоким,
когда в буфере приемника нет никаких символов.
TXRDY будет активным низким, когда нет никаких символов в буфере передатчика
(Transmit Buffer). Он будет неактивным высоким после загрузки первого
символа/байта в буфер передатчика.
Режим 1 – это когда буферы FIFO активны и DMA Mode Select = 1. В режиме
1 RXRDY будет активным низким, когда достигнут уровень триггера или когда
случился тайм-аут 16550 и вернется в неактивное состояние, когда в FIFO не
осталось символов. TXRDY будет активным, когда в буфере передатчика нет
символов, и будет неактивным, когда буфер передатчика FIFO заполнен.