Unable to use RS485 in UARTB

Hello Team,
I want to enable RS485 in UARTB & C with gpio pin as enable pin for that i made changes in imx6ull-colibri.dtsi

`
/* Colibri UART_B */
&uart2 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_uart2>;
rts-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
rs485-rts-delay = <0 0>;
// uart-has-rtscts;
fsl,dte-mode;
};

imx6ull-colibri.dtsi ‘’’ pinctrl_uart2: uart2grp { fsl,pins = < MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX 0x1b0b1 /* SODIMM 36 / MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX 0x1b0b1 / SODIMM 38 */ MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x3000 /SODIMM 63/
`
and in imx6ull-colibri-aster.dtsi

&uart2 {
rs485-rts-active-high;
linux,rs485-enabled-at-boot-time;
status = “okay”;
};

after that i compile and deploy kernel and rebuild image but i am not getting effect in UARTB, help me with steps how to do and and how to test it

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

To enable RS-485 on UARTB and C on the i.MX6ULL Colibri module with a GPIO pin as the enable pin, your device tree modifications seem mostly correct. However, there are a few points and steps we should review to ensure proper functionality:

  1. Device Tree Configuration: Ensure that your device tree changes for enabling RS-485 mode are correctly applied. Your configuration for &uart2 with rts-gpios, rs485-rts-delay, and fsl,dte-mode is a good start. The rs485-rts-active-high and linux,rs485-enabled-at-boot-time properties in imx6ull-colibri-aster.dtsi are also correctly set for enabling RS-485 at boot time and defining the RTS line’s active level.

  2. Testing RS-485 Functionality: After deploying your kernel with the modified device tree, you can test RS-485 functionality in several ways:

    • Using the Serial Port: You can use a terminal program like minicom or picocom to open the serial port and try communicating with an RS-485 device. Ensure you configure the serial port settings (baud rate, parity, stop bits) to match those of your RS-485 device.
    • Using ioctl Calls in a Custom Program: As mentioned in the context, you can control RS-485 settings (like enabling RS-485 mode, setting RTS pin logic levels, and enabling receiver during transmission) by making ioctl calls in a C program. This method gives you fine-grained control over the RS-485 settings and is useful for debugging or when you need to dynamically change RS-485 parameters.
  3. Troubleshooting:

    • Verify GPIO Configuration: Ensure that the GPIO pin used for RTS (&gpio1 1 GPIO_ACTIVE_HIGH) is not being used by another peripheral or system function. Conflicts can prevent proper operation.
    • Kernel Support: Confirm that your kernel version supports the RS-485 features you are trying to use. While the device tree properties you’ve set should not harm older kernels, functionality like rs485-rts-delay might not work as expected if the kernel doesn’t fully support it.
    • Hardware Setup: Double-check your hardware connections, including the RS-485 transceiver and any termination resistors required for your RS-485 network. Improper hardware setup can lead to communication issues.

If after following these steps

Please, also check if these links can help you solve your problem:

UART (Linux) | Toradex Developer Center.

Hi @Prial ,

What is the part number of the external IC you used along with your aster board for RS484 communication?

Hello @sahil.tx,
I am using MAX485

@sahil.tx please reply.

Hi @Prial ,
I am checking on your query

What effect are your talking about, how your are testing it?

@sahil.tx,
Thank you for your time. This issue is resolved now.

Hi @Prial ,
Nice to hear that it has been solved.
Could you please let us know where you faced the issue and how you solved it?

Sure, all rs-485 configurations will be done on colibri-imxull dtsi only, no need to add anything in colibri-aster-aster dtsi file.

Thank You

Hi @Prial,
Please always check the boot logs to check what device tree and overlays are being used.
It will show you something like this
Loading DeviceTree: iimx6ull-colibri-eval-v3.dtb.
So, you need to make changes in this device tree or the device tree which is included in this dtb.
Of course, you can change it to use aster specific device tree as well which will reflect you changes done in aster specific device tree

Thank you for the suggestion i really appreciate it. and one more thing i already provided you the info how many files i am using check my question.