Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Процессорные модули » SK-iMX6ULL-MOD
управление переключнием прием/передача RS485
rain62ster
Добавлено 22.08.2019 09:19
0
Сообщение: 1
rain62ster
0

Пункты: 3830
Регистрация: 02.10.2009
Требуется до трех гальванически развязанных RS485. В макете использую ISO7231 + MAX13488 и вопрос управления переключением прием/передача не стоит. В окончательном варианте предполагаю использовать более дешевые трансиверы 485 без автоматического переключения направления.Модуль используется в комплекте с соответствующим LCD-MB где UART3 уже занят под неразвязанный RS485(хотя вполне возможно его и выпаять). Верно ли, что для тех UART, у которых выведен сигнал RTS управление направленbем передачи можно оганизовать испльзуя этот сигнал? Как корректно организовать переключение направления для других UART?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.08.2019 12:31 Редактировалось 22.08.2019 12:33 Сообщение: 2
sasamy
4.77

Пункты: 57420
Регистрация: 14.08.2009
Цитата
Модуль используется в комплекте с соответствующим LCD-MB где UART3 уже занят под неразвязанный RS485(хотя вполне возможно его и выпаять). Верно ли, что для тех UART, у которых выведен сигнал RTS управление направленbем передачи можно оганизовать испльзуя этот сигнал? Как корректно организовать переключение направления для других UART?


Для переключения прием/передача rs485 трансивера подключенного к UART можно использовать любой свободный GPIO, в том числе и RTS этого уарта. В DTS есть пример - UART3, остальные аналогично Нужно оставить от порта только RX и TX, сделать переключение любого свободного пина на GPIO и указать этот GPIO драйверу через rts-gpios

pinctrl_uart3txrx: uart3txrxgrp {
fsl,pins = <
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1
>;
};

pinctrl_uart3rtsgpio: uart3rtsgpiogrp {
fsl,pins = <
MX6UL_PAD_NAND_CE0_B__GPIO4_IO13 0x1b0b1
>;
};


&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3txrx &pinctrl_uart3rtsgpio>;
rts-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
status = "okay";
};
Спуститься к концу Подняться к началу
Персональная информация
DSU
Добавлено 22.01.2021 09:13 Редактировалось 22.01.2021 09:15 Сообщение: 3
DSU
1

Пункты: 1163
Регистрация: 23.05.2014
Пол: Мужчина
Сделал, как описано выше. Но при настройке GPIO_ACTIVE_HIGH и при открытии порта в python или просто через 'cat /dev/ttymxc2', пин который отвечает за направление передачи просто постоянно в высоком уровне и не изменяет своего состояния при передаче. Соответственно, я могу только передать, а принять не могу. Когда порт закрываю пин переходит в состояние низкого уровня.
И еще вопрос. Нужно ли в make menuconfig устанавливать параметр rs485conf в разделе hardware handling?
Спуститься к концу Подняться к началу
Персональная информация
DSU
Добавлено 22.01.2021 10:51 Сообщение: 4
DSU
1

Пункты: 1163
Регистрация: 23.05.2014
Пол: Мужчина
Кстати, если я запускаю скрипт rs485_test.sh, в котором есть строчка stty -F /dev/ttymxc2 rs485, то все потом работает нормально.
Спуститься к концу Подняться к началу
Персональная информация
DSU
Добавлено 22.01.2021 14:07 Сообщение: 5
DSU
1

Пункты: 1163
Регистрация: 23.05.2014
Пол: Мужчина
Еще более подробно опишу ситуацию. Есть два 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.
Может есть у кого-нибудь мысли по этому поводу?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.01.2021 14:14 Редактировалось 22.01.2021 14:17 Сообщение: 6
sasamy
4.77

Пункты: 57420
Регистрация: 14.08.2009
По умолчанию порт UART работает в обычном режиме rs232, для rs485 его нужно переключать програмно

https://www.kernel.org/doc/html/latest/driver-api/serial/serial-rs485.html

Цитата
Кстати, если я запускаю скрипт rs485_test.sh, в котором есть строчка stty -F /dev/ttymxc2 rs485, то все потом работает нормально.


в местном буилдрут патченый busybox (stty) и в нем добавлено переключение в режим rs485 через ключ rs485

Цитата

Нужно ли в make menuconfig устанавливать параметр rs485conf в разделе hardware handling?


в общем нет - можно и через stty переключать режим из командной строки. Если вам надо по умолчанию rs485

1) можно указать в dts

&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3txrx &pinctrl_uart3rtsgpio>;
rts-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
linux,rs485-enabled-at-boot-time;
status = "okay";
};

2) использовать rs485conf в загрузочном скрипте


3) или прописать в каком-нибуть загрузочном скрипте

stty -F /dev/ttymxc2 rs485

этот вариант только для местного патченого buildroot
Спуститься к концу Подняться к началу
Персональная информация
DSU
Добавлено 22.01.2021 14:47 Сообщение: 7
DSU
1

Пункты: 1163
Регистрация: 23.05.2014
Пол: Мужчина
Спасибо большое. Сейчас проверил 1 и 2 варианты - все работает. Ну 3 вариант уже проверял на местном buildroot-е 2017 до этого. Надеюсь, что эта тема поможет остальным разобраться с rs485 во всех тонкостях.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6ULL-MOD