Top.Mail.Ru

Интерфейс RS485. Микросхема-конвертер RS485-UART.

Довольно-таки часто при разработке электронных устройств, а особенно в тех случаях, когда необходима реализация длинной линии связи между несколькими устройствами, встает задача включения микроконтроллера в эту самую линию связи. В большинстве таких случаев я выбираю интерфейс RS485. Собственно поэтому пара слов об RS485.

Физически сеть RS485 представляет из себя две линии. Особенность заключается в том, что один и тот же сигнал передается сразу по этим двум упомянутым линиям за тем лишь исключением, что сигналы инвертированы друг относительно друга. Вот как это выглядит:

Интерфейс RS485.

Казалось бы - зачем это нужно? А идея тут следующая - полезный сигнал в RS485 определяется разностью(!) потенциалов этих линий. В этом и кроется основной смысл. Смотрите сами - пусть у нас есть помеха, которая оказывает влияние на передачу данных. При использовании RS485 эта помеха окажет одинаковое влияние на обе линии (особенно, если они "скручены" в витую пару). А поскольку полезный сигнал передается через разность потенциалов, то при вычитании потенциала одной линии из потенциала другой влияние помехи самоустранится 👍

Но, поскольку используются всего две линии, то, естественно, прием и передача должны быть разделены во времени. Возможное количество приемников/передатчиков в одной сети для RS485 составляет 32 устройства. Возможная длина линии - примерно километр, даже чуть больше.

Итак, сигнал передается разностью потенциалов. Соответственно, существуют определенные диапазоны значений, в пределах которых передаваемый цифровой сигнал считается либо равным нулю, либо единице. Для RS485 диапазон напряжений для единицы - (U > 0.2В), для нуля - (U < -0.2 В). При значениях разности потенциалов, лежащих в пределах от (-200) мВ до 200 мВ сигнал считается неопределенным.

С основной теорией разобрались, теперь обсудим как все это реализовать на практике. А вопрос тут заключается скорее в том, что необходимо каким-то образом включить микроконтроллер в сеть RS485. То есть необходим некий переходник с UART'a на RS485. Возможны разные реализации, но я сегодня остановлюсь на одной, а именно на использовании микросхемы SP3485, которая представляет из себя практически законченное устройство - трансивер RS485. Причем она может легко питаться всего от +3.3 В.

Микросхема имеет 8 ножек:

Микросхема конвертер UART в RS485.
  • Vcc
  • GND
  • A и B - те самые два сигнальных провода для RS485
  • DI - подключаем к Tx контроллера
  • RO - подключаем к Rx UART'а
  • RE и DE - подаем сигнал разрешения передачи - на практике подключаем к любому незанятому выводу микроконтроллера, а затем в программе во время передачи выставляем на выводе 1, во время приема 0

Как видите, все несложно, практически никакой внешней обвязки эта микросхема не требует, а поставленную задачу решает на ура. И на этом на сегодня заканчиваем краткий обзор, до скорого 🤝

Подписаться
Уведомить о
guest

10 комментариев
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии
LEV
LEV
9 лет назад

А про RF-модули можете что нибудь опубликовать по возможности? 🙂

Nemo
8 лет назад

а можно RS-485 использовать для соединения "Звездой", - один мастер, и от него "лучи" к слейвам.?

Инженер
Инженер
Ответ на комментарий  Aveal
6 лет назад

Для RS-485 нельзя соединять устройства "звездой"! В этом случае в сети будет много паразитных отражений сигнала, и с большой вероятностью, сеть работать не будет, либо будут частые ошибки связи (ошибки контрольной суммы, например).

Устройства в RS-485 надо соединять "гирляндой"! И во многих случаях, на концах этой линии надо ставить резисторы для согласования с волновым сопротивлением линии.

Инженер
Инженер
Ответ на комментарий  Aveal
6 лет назад

Это хорошо, но, видимо, тут просто удачное стечение обстоятельств, длины линий и их сопротивления оказались такими, что паразитные отражения несильно искажают сигнал. Но вообще, топология "звезда" - неправильна для RS-485.

Инженер
Инженер
Ответ на комментарий  Инженер
6 лет назад

Да, забыл - в этой "гирлянде" мастер сети рекомендуется ставить с краю.

Михаил
Михаил
7 лет назад

Комплект: SP3485 Transceiver+ STM32VLDiscovery
Я правильно понимаю: формируем отправку через UART_1; Transceiver_1 делает свое дело, на другом конце принимаем сигнал через Transceiver_2, UART_2? И никаких библиотек не нужно на SP3485 Transceiver ?

10
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x