RS232 является одним из наиболее часто используемых методов соединения внешних устройств с компьютерами. Он представляет собой стандарт последовательной связи, созданный Ассоциацией Электронной Промышленности (EIA) и Ассоциацией Телекоммуникационной Промышленности (TIA).
RS232 устанавливает сигналы, связывающие DTE и DCE, где DTE (Data Terminal Equipment) обозначает терминальное оборудование данных, например, компьютер, а DCE (Data Communication Equipment) обозначает оборудование для передачи данных или оборудование для завершения информационного канала, например, модем.
RS232 возник в 1960-е годы и изначально был известен как «EIA Recommended Standard 232». Это один из самых старых стандартов для последовательной передачи информации, который обеспечивает простоту подключения и универсальность между различными производителями оборудования.
В первоначальной версии RS232 электромеханические печатные машинки использовались в качестве DTE, а модемы — в качестве DCE.
RS232 использует последовательный метод передачи данных, при котором за один раз по одной линии передается один бит информации. Это отличается от параллельного метода, когда несколько битов передаются одновременно по нескольким линиям.
Главное преимущество последовательного метода заключается в меньшем количестве проводов, необходимых для полнодуплексной связи (всего два провода, без учета электрических линий). С момента стандартизации RS232 организацией EIA в 1962 году, он де-факто стал стандартом для компьютерных и измерительных устройств и, таким образом, самым распространенным протоколом связи.
Тем не менее, основной недостаток RS232 заключается в скорости передачи данных и максимальной длине кабеля. Максимальная скорость передачи составляет 19 200 битов в секунду, а максимальная длина кабеля — 20 метров.
Что такое RS232?
Официально RS-232 имеет название EIA/TIA-232. Это интерфейс, соединяющий устройства DTE и DCE. Он используется для последовательной передачи двоичных данных.
RS-232 является подходящим стандартом, поскольку он обеспечивает отсутствие конфликтов между DTE и DCE устройствами, определяя:
- Электрические характеристики
- Механические характеристики
- Функциональные спецификации
- Процедурные спецификаций
Все эти спецификации включают различные параметры, такие как стандартные уровни напряжения, сигнальные уровни, спецификации для подключения выводов, управляющие данные между основным устройством и его периферией и т. д. Рассмотрим различные спецификации подробнее.
Электрические характеристики
Электрические характеристики RS232 описывают характеристики, связанные с уровнем напряжения, сопротивлением линии и скоростью перехода сигналов между различными состояниями.
Уровни напряжения
RS232 был разработан задолго до появления ТТЛ-логики, поэтому нет ничего удивительного в том, что RS232 не использует специфические для ТТЛ логические уровни 5 В и GND.
В RS-232 логическая «1» представлена напряжением в интервале от -15В до -3В, а логический «0» – напряжением в интервале от +3В до +15В, то есть низкий уровень напряжения – это логическая «1», а высокий уровень напряжения – логический «0».
Как правило, в RS-232 за логическую «1» принимается значение в -12В, а за логический «0» — значение в +12В. Указанные напряжения измеряются относительно «GND». Напряжение в промежутке между -3В и +3В обычно считается неопределенным или неизвестным логическим состоянием.
Исторически сложилось, что логическая «1» (-15В — -3В) обозначается как «Marking«, а логический «0» (+3В — +15В) — как «Spacing«.
Скорость нарастания
Другой важной электрической характеристикой является скорость изменения уровня сигнала, т.е. скорость спада. Максимальная скорость нарастания сигнала в RS232 ограничена 30 В/мкс. Кроме того, определена максимальная скорость передачи данных — 20 Кбит/с.
Эти ограничения стандарта помогают уменьшить перекрестный диалог с соседними сигналами.
Импеданс линии
Импеданс линии, т.е. сопротивление провода между устройствами DTE и DCE, должен составлять от 3 Ом до 7 Ом.
Важно отметить, что в изначальном стандарте RS-232 длина кабеля не могла превышать 15 метров. Однако, в обновленных версиях стандарта предельная длина кабеля определяется с учетом его емкости на единицу длины.
Механические спецификации
Механическая часть стандарта RS-232 включает в себя характеристики интерфейса и используемые разъемы. Для совместимости с RS-232 рекомендуется использовать 25-контактный разъем типа «D».
На следующем рисунке показан разъем DB25:
В RS232 существует три типа сигналов. Это данные, управление и земля. В следующей таблице приведен список выводов, их направление обмена данными и тип сигнала:
В настоящее время из-за уменьшения размеров электронных устройств не хватает места для больших разъемов DB25. При этом большинству устройств не требуется все 25 контактов этого разъема.
В связи с этим, как правило, используется 9-контактный разъем, обладающий уменьшенной функциональностью. 9-контактный разъем носит название DE-9 (которое часто ошибочно принимают за DB-9). Он представляет собой субминиатюрный D-Sub разъем. На следующем рисунке представлен DE-9 разъем:
Контакты разъема DE-9, их названия и описание приведены в следующей таблице.
Функциональные характеристики
Поскольку RS232 считается полным стандартом, он определяет не только электрические и механические характеристики. Стандарт RS232 также определяет функции различных сигналов, используемых в интерфейсе.
Сигналы классифицируются как:
- общие сигналы (Common)
- сигналы данных (Data)
- сигналы синхронизации (Timing )
- сигналы управления (Control Signals)
Процедурные спецификации
Процедурные спецификации RS232 определяют последовательность операций, которые должны выполняться при соединении DTE и DCE.
Предположим, что компьютер (DTE) подключен к модему (DCE) через интерфейс RS232. Для передачи данных от компьютера к модему необходимо выполнить следующую процедуру:
- Когда модем (DCE) готов к приему, он посылает сигнал готовности DCE.
- Когда компьютер (DTE) готов к отправке данных, он посылает сигнал Ready to Send (RTS).
- Затем модем (DCE) посылает сигнал Clear to Send (CTS), указывающий на то, что данные могут быть отправлены компьютером (DTE).
- Наконец, компьютер (DTE) посылает данные по линии Transmit Data (TD) модему (DCE).
ПРИМЕЧАНИЕ: Данная процедура не является точной, но похожа на реальную.
Практическая реализация RS232
Уровни напряжения стандарта RS-232 отличаются от большинства тех, что используются в современных системах. Для обеспечения совместимости с RS-232 необходимо использовать преобразователь уровня того или иного вида. С этой задачей справляются специализированные интегральные схемы (ИС) преобразователей уровня, например MAX232 производства компании Maxim Integrated.
Эти микросхемы получают сигналы RS-232 и преобразуют их в уровень ТТЛ. Они также инвертируют сигнал, потому что в RS-232 низким уровням напряжения соответствует логическая «1», а высоким уровням напряжения — логический «0». На рисунке ниже показана реализация драйвера RS-223 в приложении реального времени:
Здесь UART (Universal Asynchronous Receiver Transmitter) формирует и принимает необходимые сигналы для последовательного обмена данными, а RS232 Driver отвечает за преобразование сигналов между TTL и RS232 интерфейсом.
Система связи, о которой идет речь в данном примере, относится к асинхронному типу и требует наличия битов синхронизации — Start и Stop, а также бита проверки ошибок — Parity. UART в приведенном примере отвечает за генерацию стартового, стопового битов и бита четности при передаче данных, а также за обнаружение ошибок при приеме данных.
На следующем рисунке показано типичное применение интерфейса RS232 между компьютером и модемом. Здесь ПК или компьютер является DTE, а модем — DCE:
Компьютер и модем взаимодействуют друг с другом по интерфейсу RS232, а связь между модемами устанавливается по телекоммуникационным каналам.
Как работает RS232?
В RS232 данные передаются последовательно в одном направлении по одной линии данных. Для организации двусторонней связи необходимо наличие как минимум трех проводов (RX, TX и GND), не считая управляющих сигналов. Байт данных может быть передан в любой момент, если предыдущий байт уже был передан.
RS232 использует асинхронный протокол связи, т.е. отсутствует тактовый сигнал для синхронизации передатчика и приемника. Поэтому для информирования приемника о необходимости проверки данных используются стартовый и стоповый биты.
Между передачей каждого бита существует определенная задержка. Эта задержка — не что иное, как неактивное состояние, т.е. сигнал установлен в логическую «1», т.е. -12 В (если вы помните, логическая «1» в RS232 — это -12 В, а логический «0» — +12 В).
Сначала передатчик, т.е. DTE, посылает стартовый бит приемнику, т.е. DCE, чтобы сообщить ему, что передача данных начинается со следующего бита. Стартовый бит всегда равен ‘0’, т.е. +12 В. Следующие 5-9 символов являются битами данных.
Если используется бит четности, то может быть передано не более 8 бит. Если четность не используется, то может быть передано 9 бит данных. После передачи данных передатчик посылает стоповые биты. Его длина может быть либо 1 бит, либо 1,5 бита, либо 2 бита. На следующем рисунке показан формат кадра протокола RS232:
Хотя стандарт RS232 считается полным, многие производители могут не соблюдать его. Некоторые производители могут реализовывать полную спецификацию, а некоторые — только частичную.
Причина такого различия в реализации стандарта RS232 заключается в том, что не все устройства и приложения требуют полной спецификации и функциональности протокола RS232. Например, для последовательного модема, использующего RS232, может потребоваться больше линий управления, чем для мыши, использующей последовательный порт.
Как же тогда передатчик и приемник, которые могут использовать разные спецификации, успешно передают или принимают данные? Для этого используется процесс, называемый Handshaking (рукопожатие).
Рукопожатие
Handshaking (рукопожатие) — это процесс динамической установки параметров связи между передатчиком и приемником до ее начала.
Необходимость «рукопожатия» диктуется скоростью передачи данных передатчиком (DTE), скоростью приема данных приемником (DCE) и скоростью передачи данных.
В асинхронной системе передачи данных может отсутствовать «рукопожатие», аппаратное «рукопожатие» и программное «рукопожатие».
Без рукопожатия
Если рукопожатие не используется, то приемник (DCE) должен прочитать уже принятые им данные, прежде чем передатчик (DTE) отправит следующие данные. Для этого приемник использует специальную ячейку памяти, называемую буфером, а поскольку она используется на стороне приемника, то называется буфером приемника.
Принятые данные сохраняются в буфере до того, как они будут считаны приемником. Буфер приемника обычно может хранить один бит данных, и эти данные должны быть очищены (считаны) перед поступлением следующих данных, а если они не будут очищены, то существующие данные будут перезаписаны новыми данными.
На следующем рисунке показана типичная передача и прием данных с использованием буферов передатчика и приемника. В этой схеме приемник успешно прочитал первые три бита данных, но не прочитал четвертый бит. Следовательно, следующий, пятый, бит перезапишет четвертый, и четвертый бит будет потерян.
Чтобы избежать подобных ситуаций, необходим некий механизм рукопожатия (программное или аппаратное рукопожатие).
Аппаратное квитирование
При аппаратном рукопожатии передатчик сначала спрашивает приемник, готов ли он к приему данных. Затем приемник проверяет свой буфер и, если буфер пуст, сообщает передатчику, что готов к приему.
Передатчик передает данные, и они загружаются в буфер приемника. В это время приемник сообщает передатчику, что не следует посылать дальнейшие данные до тех пор, пока данные в буфере не будут прочитаны приемником.
Протокол RS232 определяет четыре сигнала, предназначенных для рукопожатия:
- Готовность к передаче (RTS)
- Очистка для отправки (CTS)
- Готовность терминала данных (DTR)
- Data Set Ready (DSR)
На следующем рисунке показано соединение между 9-контактным передатчиком (DTE) и 25-контактным приемником (DCE), а также 9-контактным передатчиком и 9-контактным приемником в режиме аппаратного рукопожатия.
С помощью аппаратного рукопожатия данные от передатчика никогда не теряются и не перезаписываются в буфере приемника. Когда передатчик (DTE) хочет отправить данные, он подтягивает линию RTS (Ready to Send) к высокому уровню.
Затем передатчик ждет, когда линия CTS (Clear to Send) станет высокой, и, следовательно, продолжает ее контролировать. Если линия CTS имеет низкий уровень, это означает, что приемник (DCE) занят и еще не готов к приему данных.
Когда приемник готов, он переводит линию CTS в высокий уровень. После этого передатчик передает данные. Этот метод также называется RTS/CTS Handshaking.
Кроме того, в режиме Handshaking используются еще два провода. Это DTR (Data Terminal Ready) и DSR (Data Set Ready). Эти два сигнала используются DTE и DCE для индикации их индивидуального состояния. Часто эти два сигнала используются в модемной связи.
Более новые стандарты RS232 определяют 8-сигнальный Hardware Handshaking.
Программное рукопожатие
Программное рукопожатие RS232 включает в себя два специальных символа для запуска и остановки связи. Этими символами являются X-ON и X-OFF (Transmitter On и Transmitter OFF).
Когда приемник посылает сигнал X-OFF, передатчик прекращает отправку данных. Передатчик начинает передавать данные только после получения сигнала X-ON.
Ограничения RS232
- Протокол RS232 требует наличия общей земли между передатчиком (DTE) и приемником (DCE). Отсюда следует, что в протоколе RS232 между DTE и DCE прокладываются более короткие кабели.
- Сигнал в линии сильно подвержен воздействию шумов. Шум может быть как внутренним, так и внешним.
- При увеличении скорости передачи данных и длины кабеля возникает вероятность перекрестных помех, обусловленных емкостью между кабелями.
- Уровни напряжения в RS232 несовместимы с современной ТТЛ- или КМОП-логикой. Необходим внешний преобразователь уровней.