RS-485

Возникла необходимость изготовить устройство с интерфейсом RS-485, часто применяющимся в промышленности. В принципе всё просто - подключаешь трансивер к UART'у контроллера и всё. Однако, надо учесть, что RS-485 - полудуплексный интерфейс. А это значит, что трансивер надо переключать между режимами приёма и передачи. Реализация проста (см. рис):


Ногу RO (Receiver Output) трансивера подключаем к RX контроллера, а ногу DI (Driver Input) - к TX. Ноги RE и DE соединяются вместе и подключаются к третьей ноге контроллера, выбранной произвольно. Необходимость управлять RE и DE отдельно возникает только если вам нужно получить минимальное энергопотребеление - притянув оба вывода к земле можно перевести трансивер в спящий режим. В нашем же случае, низкий уровень на входах RE и DE соответствует режиму приёма, а высокий - режиму передачи.

Отличия в коде программы по сравнению с интерфейсом RS-232 невелики - нужно лишь устанавливать высокий уровень на выводе, управляющем режимом трансивера, перед началом передачи и низкий уровень по её окончании (например, по прерыванию USART_TXC).

Комментариев нет: