Выбрать главу

Стандарт RS-232 – один из самых древних протоколов передачи данных между устройствами, он был утвержден еще в 1969 году, и к компьютерам (тем более ПК) тогда еще не имел никакого отношения. Это очень простой в реализации, дешевый, неприхотливый и достаточно надежный способ соединения двух устройств. Существует несколько стандартов RS-232, различающихся добавленной буквой: RS-232C, RS-232D, RS-232E и пр. Вдаваться в различия между ними нет никакого смысла – они являются лишь последовательным усовершенствованием и детализацией технических особенностей одного и того же устройства. Заметим лишь для справки, что все современные порты поддерживают спецификации RS-232С или RS-232E.

Давайте немного подробнее остановимся на том, как работает RS-232 – это хорошо иллюстрируют не совсем очевидные принципы передачи целого набора битов всего по одному проводу. Идея заключается в посылке последовательных импульсов, каждый из которых может означать 0 или 1. Если в определенные (заранее известные) моменты времени считывать состояние линии, то можно восстановить то, что было послано. Однако эта очевидная мысль наталкивается на определенные трудности.

Для приемника и передатчика, связанных между собой тремя проводами («земля» и два сигнальных провода: «туда» и «обратно»), приходится задавать скорость передачи и приема, которая должна быть одинакова для устройств на обеих концах линии. Эти скорости стандартизированы и выбираются из ряда от 110 до 115200 битов в секунду. Проблема состоит в том, что приемник и передатчик – это физически совершенно разные системы, и скорости эти для них не могут быть строго одинаковыми (из-за разброса параметров тактовых генераторов), и даже если их каким-то образом синхронизировать в начале, то они в любом случае быстро «разъедутся». Поэтому в RS-232 придумали передачу каждого байта сопровождать начальным (стартовым) битом, который служит для синхронизации. После него идут от пяти до восьми информационных битов (девять – если используется проверка на четность), а затем стоповые биты, которых может быть один, два и более, – предполагается, что за время прохождения всей этой посылки приемник и передатчик по частоте «разойтись» не успеют.

Рисунок 3.1 иллюстрирует работу приемопередатчика RS-232. Стартовый бит передается положительным уровнем напряжения (в данном случае это считается логическим нулем), а стоповый – отрицательным уровнем (логической единицей). Обнаружив изменение уровней с отрицательного на положительный, приемник считает это стартовым битом и с заданными, согласно оговоренной заранее скорости передачи, промежутками времени отсчитывает от него все остальные.

Рис. 3.1. Передача байта по стандарту RS-232

Одно из самых удобных с технической точки зрения качеств RS-232 – то, что стандарт предусматривает весьма широкий разброс напряжений сигнала – официально в пределах от ±5 до ±15 В (для RS-232C), а на самом деле он может быть еще расширен, потому что приемник принимает сигналы ±3 до ±25 В. Длина линии связи не должна превышать 15 м (RS-232C), но на практике это могут быть много большие величины. Если скорость передачи не выбирать слишком высокой, то такая линия может надежно работать на десятки и сотни метров (автору этих строк удавалось без дополнительных ухищрений наладить обмен с компьютером на скорости 4800 бод по кабелю, правда, довольно толстому, длиной около полукилометра). Никаких специальных витых пар не предполагается – линия может состоять из обычных проводов.

Из всего этого вытекает, что RS-232 – идеальный способ для передачи данных с небольшими скоростями по минимальному количеству проводов[6]. Когда-то его всерьез намеревались развивать, отчего и стандартизировали разъем с 25 контактами (DB25) – «на вырост». В этом разъеме имеются дополнительные линии, смысл которых в том, что они могут применяться для организации различных синхронных протоколов обмена (протоколов с handshakes, «рукопожатием»). Все старые ПК имели по два COM-порта: и с 9-ю, и с 25-ю контактами. Быстро выяснилось, что 25 контактов – чистое излишество, вполне достаточно и 9-ти, и DB25 как-то незаметно исчез из обихода. Остался только DB9, да и в нем имеющиеся дополнительные линии мало какое устройство использует. Так как RS-232 – медленный способ передачи, то никаких особых требований к соединителям он не предъявляет, и нередко можно встретить устройства и с нестандартным разъемом – например, в некоторых старых цифровых фотокамерах под последовательный порт были приспособлены стереоаудиоразъемы. С 1991 года развитие RS-232 затормозилось – ему на смену пришли намного более сложные, зато удобные для пользователя и скоростные USB и FireWare.

вернуться

6

Есть, впрочем, и еще более экономичные способы – интерфейс I2C предполагает всего два провода для двустороннего обмена, причем для некоторых устройств не требуется даже отдельная линия питания. Для подключения к компьютерам такой способ не используется, зато для связи разных чипов между собой – очень часто. – Авт.