Hi Chavira,
your solution worked!
After some elaborations, i optimized it like this:
pinctrl_uart2: uart2grp { // RS485_1 pin: p1-72[TX] p1-19[RX] p1-53[DE]
fsl,pins = <
MX93_PAD_UART2_RXD__LPUART2_RX 0x31e
MX93_PAD_UART2_TXD__LPUART2_TX 0x31e
MX93_PAD_SAI1_TXD0__LPUART2_RTS_B 0x31e
>;
};
pinctrl_uart7: uart7grp { // RS485_2 pin: p1-39[TX] p1-41[RX] p1-37[DE]
fsl,pins = <
MX93_PAD_GPIO_IO08__LPUART7_TX 0x31e // TX
MX93_PAD_GPIO_IO09__LPUART7_RX 0x31e // RX
MX93_PAD_GPIO_IO11__LPUART7_RTS_B 0x31e // DE
>;
};
It is useless all this part that i had in my dtb (now erased):
&lpuart2 { // RS485_1 pin: p1-72[TX] p1-19[RX] p1-53[DE]
fsl,uart-has-rtscts;
rts-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
linux,rs485-enabled-at-boot-time; // rs485 abilitata fin da subito al boot
rs485-rts-active-high;
rs485-rts-delay = <1 1>;
};
&lpuart7 { // RS485_2 pin: p1-39[TX] p1-41[RX] p1-37[DE]
uart-has-rtscts;
rts-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
linux,rs485-enabled-at-boot-time; // rs485 abilitata fin da subito al boot
rs485-rts-active-high;
rs485-rts-delay = <1 1>;
};
This is because the compatible for the LPUART is different than the previous processors (imx6 and imx8), and none of these tags of the dtb are not used anymore.
Another important thing, in python3.10 is necesaary to initialize the peripheral like this:
port = serial.Serial(port="/dev/ttyLP6", baudrate=19200, timeout=2, write_timeout=2)
port.rs485_mode = serial.rs485.RS485Settings()
So it is necessary to add the second line.
In this way the data enable is correctly used by the peripheral, like you see in this oscilloscope pic with tx[y], de[v] and rx[b]:
DS1Z_QuickPrint2.png