Обзор RS-485
Как и RS-232, RS-485 является стандартом последовательной связи. Его текущее официальное обозначение — TIA-485/EIA-485-A, но обычно его называют стандартом RS-485. RS-485 широко используется в таких отраслях, как промышленная автоматизация, автомобилестроение и управление зданиями.
Шина RS-485 лишена недостатков RS-232, таких как короткие расстояния связи и низкие скорости передачи данных. RS-485 поддерживает скорость передачи данных до 10 Мбит/с и имеет теоретическое расстояние связи до 1200 метров. В отличие от несимметричной передачи RS-232, RS-485 использует дифференциальную передачу по паре витых пар, один из которых обозначен как A, а другой как B.
Физический уровень RS-485
Физический уровень RS-485 отвечает за передачу необработанных данных между устройствами и физической средой передачи. Он осуществляет преобразование электрических сигналов в цифровые данные, а также определяет уровни напряжения, время, скорость передачи данных и другие параметры.
① Дифференциальные сигналы
Прокладка кабелей на больших-расстояниях приводит к затуханию сигнала и увеличению вероятности появления шума и помех. Это проявляется в изменении амплитуды напряжения на кабелях A и B. Однако преимущество использования дифференциальных линий заключается в том, что вычитание разницы между двумя сигналами компенсирует помехи, позволяя выводить нормальный сигнал. Способность дифференциального приемника игнорировать одинаковые напряжения на обеих сигнальных линиях называется подавлением синфазного режима.


Стандарт определяет, что логика 1 равна от +2В до +6В, а логика 0 — от -6В до -2В.
RS-485 не требует определенного напряжения шины; он учитывает только минимальное дифференциальное напряжение. При большей длине кабеля напряжение, принимаемое приемником, может упасть до +/- 200 мВ, что вполне приемлемо для RS-485 — это одно из преимуществ RS-485.
Многие трансиверы соответствуют стандарту TIA/EIA-485A или даже превосходят его; однако в практических приложениях приоритет имеют указанные параметры устройства. Например, минимальный отрицательный входной порог для определенного трансивера составляет -200 мВ.


② Определения сигналов
Многие сегодняшние преобразователи RS-485 совместимы с RS-422, поэтому на этих преобразователях часто можно увидеть сигналы с маркировкой T/R+ и T/R-, которые соответствуют A+ и B- RS-485.
Для гнездовых разъемов DB9 определение проводки RS-485 следующее: Контакты с 6 по 9 не используются и не должны подключаться.
| ДБ9 | Выходной сигнал | Полнодуплексное подключение RS-422 | Полудуплексное подключение RS-485 |
| 1 | T/R+ | Отправить(А+) | RS-485(А+) |
| 2 | T/R- | Отправить(Б-) | RS-485(Б-) |
| 3 | прием+ | Получить(А+) | Пустой |
| 4 | ПРИЕМ- | Получить(Б-) | Пустой |
| 5 | Земля | Заземляющий провод | Заземляющий провод |
③ Топология
RS-485 поддерживает как двух-, так и четырех-проводные конфигурации. Четырехпроводная-конфигурация ограничена связью «точка-точка»-—-и сегодня используется редко; чаще используется двухпроводная конфигурация. В этой конфигурации используется шинная топология, позволяющая подключить до 32 узлов к одной шине.
Как и I²C, шина RS-485 работает в режиме ведущего-подчиненного. Он поддерживает как режим "точка----одиночный-подчиненный режим, так и режим нескольких-подчиненных устройств, но не поддерживает режим с несколькими главными устройствами.


RS-485 трансивер
RS-485 использует дифференциальную передачу. Если вы хотите управлять устройством RS-485 с помощью микроконтроллера, вам понадобится трансивер, аналогичный шине CAN. На следующей схеме показан MCU, управляющий устройством RS-485.
Внутри трансивера находятся приемник (верхняя половина) и передатчик (нижняя половина). Ниже приводится краткое объяснение того, как работает трансивер, чтобы помочь вам понять, как MCU взаимодействует с устройством 485.

Внутренняя структура трансивера RS-485
Где:
А и В — автобус;
R – вход приемника;
RE – сигнал включения приемника;
DE – сигнал включения передатчика;
D – выход передатчика;
Что касается сигналов включения, сигналы с линией над буквой имеют активный -низкий уровень (например, RE на рисунке выше), а сигналы без линии — активный-высокий уровень (например, DE).
Таблица истинности получателя
Для передатчика таблица истинности выглядит следующим образом:
1. Когда на выводе DE разрешения драйвера высокий логический уровень, дифференциальные выходы A и B следуют логическому состоянию на входе данных D. Высокий логический уровень на D приводит к тому, что A переходит в высокий уровень, а B - в низкий. В этом случае дифференциальное выходное напряжение, определяемое как VOD=VA – VB, является положительным. Когда D низкий, выходные состояния инвертируются: B становится высоким, A становится низким, а VOD отрицательным.
2. Когда DE низкий, оба выхода приобретают высокий-импеданс. В этом случае логическое состояние D не имеет значения.
Следующая таблица истинности применима к получателю:
1. Когда на выводе включения приемника (RE) находится низкий логический уровень, приемник активируется. Когда дифференциальное входное напряжение, определенное как VID=VA – VB, является положительным и превышает положительный входной порог VIT+, на выходе R приемника устанавливается высокий уровень. Когда VID отрицателен и ниже отрицательного входного порога VIT-, выход R приемника переходит в низкий уровень. Если VID находится между VIT+ и VIT-, вывод не определен.
2. Когда RE имеет высокий логический уровень или плавающий, выход приемника имеет высокий импеданс, независимо от величины или полярности VID.


Канал передачи данных RS-485
Обсудив выше принципы работы приемопередатчика RS-485, мы теперь кратко опишем канал передачи данных RS-485. Сначала вы можете взглянуть на простой для понимания формат кадра протокола UART.
Независимо от того, отправляет ли ведущий данные ведомому или ведомое устройство отправляет данные ведущему, используются обе линии A и B; поэтому RS-485 обычно используется в полудуплексном режиме.
GPIO хоста управляет выводом DE трансивера RS-485, чтобы установить режим передачи. Один байт передается с линии UART TXD на линию данных (D или DI) приемопередатчика RS-485. Трансивер преобразует несимметричный поток битов UART в дифференциальный поток битов по линиям A и B. Как только данные покидают трансивер, хост немедленно переключает трансивер в режим приема.
Подчиненный действует аналогично ведущему. Подчиненное устройство управляет выводом /RE трансивера RS-485, переводя его в режим приема, принимает поток битов, отправленный ведущим, преобразует его в несимметричный сигнал и принимает его через линию UART RXD подчиненного устройства. Когда ведомое устройство готово ответить, оно передает данные таким же образом, как и ведущее устройство, а ведущее устройство переключается в режим приема.
Преобразование RS-232 в RS-485
Возможно преобразование между RS-232 и RS-485. Один из методов — преобразовать RS-232 в TTL, а затем преобразовать TTL в RS-485. Конечно, существуют также чипы, поддерживающие прямое преобразование RS-232 в RS-485, и множество таких модулей доступно в Интернете.
Модули преобразования RS-232 в RS-485
Различия между RS-485 и CAN
Хотя RS-485 не имеет стандартизированного формата протокола данных, он имеет много общего с шиной CAN. Например, и A&B, и CANH&CANL являются дифференциальными сигналами; обоим для связи требуются приемопередатчики; и в обоих, помимо прочего, используются согласующие резисторы сопротивлением 120 Ом.
| Характеристики автобуса | CAN-шина | Автобус RS-485 |
| Стоимость оборудования | Немного выше | Недорогой |
| Использование автобусов | Автоматический приоритетный арбитраж, высокая загрузка | Использует опрос; низкий уровень использования |
| Скорость передачи данных | Высокий | Низкий |
| Механизмы обнаружения ошибок | Контроллер включает в себя механизм контрольной суммы, обеспечивающий точность передачи данных низкого-уровня. | Только спецификации физического уровня; нет спецификаций канального уровня |
| Влияние отказа одного-узла | Никакого воздействия на автобус. | Автобусный паралич |
| Затраты на разработку | Гибкая разработка программного обеспечения, низкие временные затраты | Трудно развивать |
| Системные затраты | Относительно низкий | Высокий |
Общие схемы RS-485
Вот распространенная схема RS-485, которую я нашел в Интернете. Следует отметить два момента:
1. Сигналы включения RE и DE могут управляться одним GPIO для экономии ресурсов. Когда GPIO25 выдает высокий уровень, RE и DE равны 0 В, и устройство переходит в режим приема; когда GPIO25 выдает низкий уровень, RE и DE составляют 3,3 В, и устройство переходит в режим передачи.
2. В некоторых схемах к контакту A добавляется подтягивающий-резистор, а к контакту B добавляется подтягивающий-резистор. Основная причина этого заключается в том, что, когда шина RS-485 находится в состоянии ожидания, уровень напряжения не фиксирован,-т. е. он колеблется между -200 мВ и +200 мВ, и трансивер может выдавать либо высокий, либо низкий уровень. UART должен поддерживать высокий уровень в режиме ожидания; если трансивер в это время выдает низкий уровень, UART интерпретирует его как стартовый бит, что может вызвать ошибки связи. Конкретные значения R_u и R_d здесь подробно не обсуждаются; В будущем планирую написать подробную статью на эту тему.

По второму пункту обратите внимание на следующее:
① Если вы подключите подтягивающий-резистор к контакту A и подтягивающий-резистор к контакту B, передача данных может прерваться из-за неправильного подключения.
② Если трансивер имеет встроенные-подтягивающие-повышающие и понижающие- резисторы, нет необходимости добавлять внешние резисторы.




