Я же дал вам пример как должно работать. Отложите пока свою программу и проверьте в консоли - не надо никаких дополнительных настроек кроме того что в примерах написано. Если не работает в консоли - значит в DT у вас что-то неправильно прописано или трансивер неправильно распаян или неисправен. Я проверял на Hola PC с плагом RSEB - соединил два rs-485, открыл две консоли через SSH
сообщение 'hello" 'появляется, если используется файл imx6qdl-sodimm.dtsi изначальный. Если я изменяю этот файл в 2 местах:
1.
uart2 {
pinctrl_uart2_sodimm: uart2-sodimm {
fsl,pins = <
MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1
MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1
MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x80000000
>;
};
};
2.
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2_sodimm>;
rs485-gpio = <&gpio1 14 0>;
status = "okay";
};
а затем пересобираю ядро командой kernel_rebuild.sh и заливаю все в контроллер - перестает работать передатчик. Вот где я мог накосячить?! Невезучий я, как Пьер Ришар.
возможно вам нужно инвертировать управление - низкий уровень включает передачу, высокий отключает. Я это не предусматривал но поменять програмно - не проблема. Какой вы трансивер используете ?
Трансивер у меня MAX13442E, сигнал управления на него приходит правильно полярности, у меня висит в логической единице выход передатчика ДО трансивера, я смотрю выход передатчика осциллографом на контакте 7 разъема X4 схемы SK-iMX6-MB-SODIMM_V1C.pdf
А на контакте 6 того же разъема наблюдаю сигнал управления направлением передачи GPIO1_IO14.
в данном случае это не нужно - этот пин уже переключен на GPIO в группе hog (если вы там ничего не меняли) и тут конфликт возникает и уартовские пины не переключаются на уарт из-за этого
Да, именно конфликт по GPIO1_IO14 стал причиной проблемы, в настоящий момент все превосходнейшим образом работает - USB COM порт и каналы RS-232 и RS-485. Я очень Вам благодарен!