Требуется до трех гальванически развязанных RS485. В макете использую ISO7231 + MAX13488 и вопрос управления переключением прием/передача не стоит. В окончательном варианте предполагаю использовать более дешевые трансиверы 485 без автоматического переключения направления.Модуль используется в комплекте с соответствующим LCD-MB где UART3 уже занят под неразвязанный RS485(хотя вполне возможно его и выпаять). Верно ли, что для тех UART, у которых выведен сигнал RTS управление направленbем передачи можно оганизовать испльзуя этот сигнал? Как корректно организовать переключение направления для других UART?
Для переключения прием/передача rs485 трансивера подключенного к UART можно использовать любой свободный GPIO, в том числе и RTS этого уарта. В DTS есть пример - UART3, остальные аналогично Нужно оставить от порта только RX и TX, сделать переключение любого свободного пина на GPIO и указать этот GPIO драйверу через rts-gpios
Сделал, как описано выше. Но при настройке GPIO_ACTIVE_HIGH и при открытии порта в python или просто через 'cat /dev/ttymxc2', пин который отвечает за направление передачи просто постоянно в высоком уровне и не изменяет своего состояния при передаче. Соответственно, я могу только передать, а принять не могу. Когда порт закрываю пин переходит в состояние низкого уровня.
И еще вопрос. Нужно ли в make menuconfig устанавливать параметр rs485conf в разделе hardware handling?
Еще более подробно опишу ситуацию. Есть два buildroot - один от starterkit-а 2017 года, другой наш 2020 года. В buildroot-е 2017 года отсутствовали некоторые нужные нам опции, поэтому мы взяли более новый. Все отлично собирается и работает с buildroot 2020. Плюс мы берем uboot от starterkita, в котором есть нужные нам .dts файлы (imx6ull-sk-mb.dts).
В итоге получается так, что если я пользуюсь buildroot 2017 от starterkita RS 485 работает, т.к. работает пин управления направлением передачи. Правда, как я писал выше, только после исполнения скрипта rs485_tets.sh. А если я пользуюсь своим buildroot 2020, то все работает кроме RS 485. Исполнение скрипта в данном случае не помогает, т.к. происходит ошибка <stty: invalid number 'rs485'> при запуске rs485_test.sh.
Может есть у кого-нибудь мысли по этому поводу?
Спасибо большое. Сейчас проверил 1 и 2 варианты - все работает. Ну 3 вариант уже проверял на местном buildroot-е 2017 до этого. Надеюсь, что эта тема поможет остальным разобраться с rs485 во всех тонкостях.
У меня тоже возникла проблема с задействованием автоматического управления входом направления передачи трансивера RS-485 на SK-iMX6S. В частности, пробовал настраивать, как здесь описано, но безуспешно.
Заработало всё только после того, как заменил "rts-gpios" на "rs485-gpio". Последний я подсмотрел в файле драйвера последовательного порта (output/build/linux-custom/drivers/tty/serial/imx.c).
Может быть, кто-нибудь подскажет, это годное решение, или так делать нельзя?