1001 совет по обустройству компьютера. Юрий Ревич
дешевый, неприхотливый и достаточно надежный способ соединения двух устройств. Существует несколько стандартов 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 бод по кабелю,