Перейти к содержанию

DE и /RE — управление направлением RS-485

В двухпроводной сети RS-485 все узлы передают по одной паре, и говорить в каждый момент может только один. Поэтому у трансивера есть выводы, которыми микроконтроллер включает и выключает передатчик и приёмник.

Обновлено Редакция GAW

DE (driver enable) и /RE (receiver enable) — выводы полудуплексного трансивера RS-485, которыми включают его передатчик и приёмник. В полудуплексной сети все узлы передают по одной паре проводов, и TI в руководстве SLLA272 подчёркивает: узлы должны управляться сигналами направления так, чтобы в каждый момент на шине работал только один передатчик.

Как работают выводы

По даташиту SN65HVD72:

ВыводАктивный уровеньЧто делает
DEвысокийпри 1 выходы A и B повторяют вход D, при 0 — высокоимпедансное состояние
/REнизкийпри 0 выход R показывает состояние линии, при 1 — высокоимпедансное состояние

DE подтянут к земле внутри микросхемы, поэтому без сигнала передатчик выключен. Разводка выводов у большинства 8-выводных трансиверов совпадает с классическим SN75176 — см. страницу SN75176 и SN65HVD3082E.

Часто DE и /RE соединяют и управляют одним выводом микроконтроллера: 1 — передача, 0 — приём. Если нужно слышать собственную передачу, например чтобы проверять коллизии, /RE держат активным постоянно.

Время включения и выключения

  1. Перед передачей DE поднимают до первого старт-бита.
  2. После передачи DE снимают только после стоп-бита последнего байта — по флагу окончания передачи TC у STM32 или TXC у AVR. Флаг «регистр данных пуст» поднимается раньше, когда последний байт только начинает уходить.
  3. Долго держать DE нельзя: ведомый может ответить сразу, и два передатчика столкнутся.

Пока все передатчики выключены, уровень на линии задают не трансиверы, а резисторы — см. смещение шины (failsafe).

Не путать с автоматическим переключением направления: некоторые трансиверы обходятся без вывода DE и включают передатчик сами по сигналу на входе данных.

Частые вопросы

Можно ли соединить DE и /RE вместе?

Да, это обычная схема: один вывод микроконтроллера управляет обоими. Единица включает передатчик (DE активен высоким уровнем) и выключает приёмник (/RE активен низким), ноль — наоборот. Минус в том, что узел не слышит собственную передачу и не может проверить, что ушло в линию.

Когда снимать DE после передачи?

После того как последний стоп-бит ушёл в линию. Флаг «регистр данных пуст» (TXE у STM32, UDRE у AVR) для этого рано: последний байт в этот момент только начинает выдвигаться. Нужен флаг окончания передачи — TC у STM32 (RM0008), TXC у AVR. Если снять DE раньше, хвост последнего байта обрежется.

Что будет, если DE не подключить?

У SN65HVD72 и похожих трансиверов DE подтянут к земле внутри, поэтому передатчик будет выключен и узел сможет только слушать. Если DE соединён с выводом микроконтроллера, который при сбросе становится входом, внешний резистор к земле (наша рекомендация) гарантирует, что передатчик не займёт шину, пока программа не запустилась.

Источники

  1. Texas Instruments. SN65HVD7x 3.3-V Supply RS-485 With IEC ESD protection (SLLSE11H, March 2019) — назначение выводов: DE — разрешение передатчика, активный высокий; /RE — разрешение приёмника, активный низкий; разд. 9.4: при DE = 1 выходы A и B следуют входу D, при DE = 0 — высокоимпедансное состояние; внутренний резистор тянет DE к земле, поэтому неподключённый DE выключает передатчик; при /RE = 1 или неподключённом выход R в высокоимпедансном состоянии; разд. 10.1: выводы разрешения задают режимы работы полудуплексного трансивера
  2. Texas Instruments. The RS-485 Design Guide (SLLA272C), T. Kugelstadt — разд. 3: при полудуплексе передача и приём идут по одной паре в разное время; узлами управляют сигналами направления (Driver/Receiver Enable), чтобы в каждый момент на шине работал только один передатчик
  3. STMicroelectronics. RM0008 Reference manual: STM32F101xx–STM32F107xx (Rev 21, February 2021) — USART_SR, бит 6 TC: передача кадра с данными завершена и TXE установлен; прерывание при TCIE
  4. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B, 2020) — разд. 20.6.3: флаг TXCn ставится, когда весь кадр выдвинут из сдвигового регистра и новых данных в буфере нет; Microchip прямо указывает, что флаг полезен в полудуплексных интерфейсах вроде RS-485, где передатчик после передачи освобождает шину; UDREn — буфер передатчика пуст

Нашли ошибку?