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

Витая пара

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

По большому счету, интерфейс RS485 является одним из наиболее распространенных стандартов физического уровня связи.

Интерфейс RS485.

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

Казалось бы – зачем это нужно? А вот зачем… Сигнал в стандарте RS485 передается разностью потенциалов(!) в этих проводах. И в этом то и состоит его фишка 🙂 Смотрите сами – пусть у нас есть помеха, которая оказывает влияние на передачу данных. При использовании RS485 эта помеха окажет одинаковое влияние на оба провода (особенно, если они “скручены” в витую пару). А поскольку полезный сигнал передается через разность потенциалов, то при вычитании потенциала одного провода из потенциала другого влияние помехи устранится.

Поскольку для приема и передачи используются всего два провода, то, естественно, прием и передача должны быть разделены во времени.

Возможное количество приемников/передатчиков в одной сети для RS485 составляет 32 устройства. Возможная длина линии составляет примерно километр, даже чуть больше. Это одна из причин, по которой меня особенно привлекает этот интерфейс 🙂

Итак, сигнал передается разностью потенциалов. Соответственно, существуют определенные диапазоны значений, в пределах которых передаваемый цифровой сигнал считается равным нулю, либо единице. Для RS485 диапазон напряжений для 1 – (U > 0.2В), для 0 – (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 – туда подаем сигнал разрешения передачи, то есть RTS – Ready To Send – на практике подключается к любому незанятому выводу микроконтроллера, а затем в программе во время передачи выставляем на выводе 1, во время приема 0

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

Поделиться!

Подписаться
Уведомление о
guest
10 Комментарий
старее
новее большинство голосов
Inline Feedbacks
View all comments
LEV
LEV
6 лет назад

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

Nemo
6 лет назад

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

Инженер
Инженер
Reply to  Aveal
4 лет назад

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

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

Инженер
Инженер
Reply to  Aveal
4 лет назад

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

Инженер
Инженер
Reply to  Инженер
4 лет назад

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

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

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

Присоединяйтесь!

Profile Profile Profile Profile Profile
Vkontakte
Twitter

Язык сайта

Август 2020
Пн Вт Ср Чт Пт Сб Вс
 12
3456789
10111213141516
17181920212223
24252627282930
31  

© 2013-2020 MicroTechnics.ru