Интерфейс RS-485
Интерфейс RS-485, новое обозначение – EIA/TIA-485, один из наиболее распространенных стандартов физического уровня связи. Физический уровень – это первый уровень модели взаимосвязи открытых систем. Характеристики интерфейса приведены в табл.2.4.
Таблица 2.4. Стандартные параметры интерфейса RS-485
Допустимое число передатчиков / приемников | 32 / 32 |
Максимальная длина кабеля | 1200 м |
Максимальная скорость связи | 10 Мбит/с |
Диапазон напряжений "1" передатчика | +1,5...+6 В |
Диапазон напряжений "0" передатчика | -1,5...-6 В |
Диапазон синфазного напряжения передатчика | -1...+3 В |
Допустимый диапазон напряжений приемника | -7...+12 В |
Пороговый диапазон чувствительности приемника | ±200 мВ |
Максимальный ток короткого замыкания драйвера | 250 мА |
Допустимое сопротивление нагрузки передатчика | 54 Ом |
Входное сопротивление приемника | 12 кОм |
Максимальное время нарастания сигнала передатчика | 30% бита |
Если необходимо организовать связь на расстоянии большем 1200 м или подключить больше устройств, чем допускает нагрузочная способность передатчика, применяют специальные повторители (репитеры).
Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары. В основе интерфейса RS-485 лежит принцип дифференциальной или балансной передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) – его инверсная копия. Другими словами, если на одном проводе «1», то на другом «0» и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при «1» она положительна, при «0» – отрицательна (рис. 2.12).
Рис. 2.12. Электрический сигнал интерфейса RS-485
Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего («земли»). Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений. А при дифференциальной передаче искажения не происходит. В самом деле, если два провода пролегают близко друг к другу, да еще перевиты, то наводка на оба провода одинакова. Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.
Основой интерфейса является универсальный асинхронный приемопередатчик (UART), который состоит из приемника (Receiver) и передатчика (Transmitter). Кроме того, в состав UART входят: тактовый генератор связи или бодрейт-генератор, управляющие регистры, статусные регистры, буферы и сдвиговые регистры приемника и передатчика. Генератор задает тактовую частоту приемо-передатчика для данной скорости связи. Управляющие регистры задают режим работы последовательного порта и его прерываний. В статусном регистре устанавливаются флаги по различным событиям. В буфер приемника попадает принятый символ, в буфер передатчика помещается передаваемый. Для передачи в последовательный порт битов посылаемого кадра используется сдвиговый регистр передатчика. Сдвиговый регистр приемника по биту накапливает принимаемые из порта данные. По различным событиям устанавливаются флаги и генерируются прерывания, например, завершение приема или отправки кадра, освобождение буфера, наличие различных ошибок.
UART является полнодуплексным интерфейсом, поэтому приемник и передатчик могут работать одновременно и независимо друг от друга. Порт приемника обозначают Rx, передатчика – Tx. Последовательной установкой уровней на этих портах относительно общего провода («земли») и передается информация. По умолчанию передатчик устанавливает на линии единичный уровень. Передача начинается посылкой бита с нулевым уровнем (старт-бита), затем идут биты данных младшим битом вперед (низкий уровень – «0», высокий уровень – «1»), завершается посылка передачей одного или двух битов с единичным уровнем (стоп-битов). Пример электрического сигнала кадра посылки приведен на рис. 2.13.
Рис. 2.13. Формат кадра посылки
Формат кадра определяет число стоп-битов (1 или 2), число бит данных (8 или 9), а также назначение девятого бита данных. Все это зависит от типа контроллера.
Перед началом связи между двумя устройствами необходимо настроить их приемопередатчики на одинаковую скорость связи и формат кадра.
Скорость связи или бодрейт (baud rate) измеряется в числе передаваемых бит в секунду, включая старт и стоп-биты. Задается эта скорость в бодрейт-генераторе делением системной частоты на задаваемый коэффициент. Типичный диапазон скоростей: 2400÷115200 бод.
Приемник и передатчик тактируются, как правило, с 16-кратной частотой относительно бодрейта. Это нужно для сэмплирования сигнала. Приемник, поймав падающий фронт старт-бита, отсчитывает несколько тактов и следующие три такта считывает (семплирует) порт Rx. Это как раз середина старт-бита. Если большинство значений семплов – «0», старт-бит считается состоявшимся, иначе приемник принимает его за шум и ждет следующего падающего фронта. После удачного определения старт-бита, приемник точно также семплирует серединки битов данных и по большинству семплов считает бит «0» или «1», записывая их в сдвиговый регистр. Стоп-биты тоже семплируются, и если уровень стоп-бита не «1» – UART определяет ошибку кадра и устанавливает соответствующий флаг в управляющем регистре (рис. 2.14).
Рис. 2.14. Пример чтения бита
Аппаратная реализация выходного устройства интерфейса – микросхемы приемопередатчиков с дифференциальными входами и выходами к линии связи и цифровыми портами к портам UART контроллера.
RS-485 – полудуплексный интерфейс. Прием и передача идут по одной паре проводов с разделением по времени (рис. 2.15). В сети может быть много передатчиков, так как они могут отключаться в режиме приема.
Рис. 2.15. Приемопередатчик RS-485
Обозначения на рис. 2.15: D (driver) – передатчик; R (receiver) – приемник; DI (driver input) – цифровой вход передатчика; RO (receiver output) – цифровой выход приемника; DE (driver enable) – разрешение работы передатчика; RE (receiver enable) – разрешение работы приемника; A – прямой дифференциальный вход/выход; B – инверсный дифференциальный вход/выход.
Цифровой выход приемника (RO) подключается к порту приемника UART (Rx). Цифровой вход передатчика (DI) к порту передатчика UART (Tx). Поскольку на дифференциальной стороне приемник и передатчик соединены, то во время приема нужно отключать передатчик, а во время передачи - приемник. Для этого служат управляющие входы – разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне «0» – работа на прием, при «1» – на передачу (рис. 2.15).
Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) переводит их в цифровой сигнал на выходе RO. Обычно порог чувствительности приемника составляет ± 200 мВ. То есть, когда UAB > +200 мВ – приемник определяет «1», когда UAB < –200 мВ – приемник определяет «0». Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.
Все устройства подключаются к одной витой паре одинаково: прямые выходы (A) к одному проводу, инверсные (B) – к другому.
Пример подключения приемопередатчика RS-485 к микроконтроллеру показан на рис. 2.16.
Рис. 2.16. Подключение приемопередатчика к микроконтроллеру
Входное сопротивление приемника со стороны линии (RAB) обычно составляет 12 кОм. Так как мощность передатчика имеет определенное значение, это создает ограничение на количество приемников, подключенных к линии. Согласно спецификации RS-485 с учетом согласующих резисторов передатчик может вести до 32 приемников. Однако есть ряд микросхем с повышенным входным сопротивлением, что позволяет подключить к линии значительно больше 32 устройств.
При больших расстояниях между устройствами, связанными по витой паре и высоких скоростях передачи начинают проявляться так называемые эффекты длинных линий. Причина этому - конечность скорости распространения электромагнитных волн в проводниках. Скорость эта существенно меньше скорости света в вакууме и составляет немногим больше 200 мм/нс. Электрический сигнал имеет также свойство отражаться от открытых концов линии передачи и ее ответвлений. Грубая аналогия - желоб, наполненный водой. Волна, созданная в одном конце, идет по желобу и, отразившись от стенки в конце, идет обратно, отражается опять и так далее, пока не затухнет. Для коротких линий и малых скоростей передачи этот процесс происходит так быстро, что остается незамеченным. Однако, время реакции приемников – десятки или сотни наносекунд. В таком масштабе времени несколько десятков метров электрический сигнал проходит отнюдь не мгновенно. И если расстояние достаточно большое, фронт сигнала, отразившийся в конце линии и вернувшийся обратно, может исказить текущий или следующий сигнал. В таких случаях нужно каким-то образом подавлять эффект отражения.
У любой линии связи есть такой параметр, как волновое сопротивление Zв. Оно зависит от характеристик используемого кабеля, но не от длины. Для обычно применяемых в линиях связи витых пар Zв = 120 Ом. Оказывается, что если на удаленном конце линии, между проводниками витой пары включить резистор с номиналом равным волновому сопротивлению линии, то электромагнитная волна, дошедшая до «тупика» поглощается на таком резисторе. Отсюда его названия - согласующий резистор или «терминатор».
Большой минус согласования на резисторах - повышенное потребление тока от передатчика, ведь в линию включается низкоомная нагрузка. Поэтому рекомендуется включать передатчик только на время отправки посылки. Есть способы уменьшить потребление тока, включая последовательно с согласующим резистором конденсатор для развязки по постоянному току. Однако, такой способ имеет свои недостатки. Для коротких линий (несколько десятков метров) и низких скоростей (меньше 38400 бод) согласование можно вообще не делать.
Эффект отражения и необходимость правильного согласования накладывают ограничения на конфигурацию линии связи.
Линия связи должна представлять собой один кабель витой пары. К этому кабелю присоединяются все приемники и передатчики. Расстояние от линии до микросхем интерфейса RS-485 должно быть как можно короче, так как длинные ответвления вносят рассогласование и вызывают отражения.
В оба наиболее удаленных конца кабеля (Zв = 120 Ом) включают согласующие резисторы Rt по 120 Ом (0,25 Вт). Если в системе только один передатчик и он находится в конце линии, то достаточно одного согласующего резистора на противоположном конце линии. Пример линии связи интерфейса RS-485 приведен на рис. 2.17.
Рис. 2.17. Линия связи интерфейса RS-485