AnsweredAssumed Answered

UART's with CTS ONLY to drive RS485 driver

Question asked by Ramgopal Kota on Jun 15, 2017
Latest reply on Jun 16, 2017 by Ramgopal Kota

Hi 

I have a question on Hardware and Linux driver usage.

We are using iMX6UL CPU ( ) and want to use all the 8 CPU's.

 

We are reserving UART1 as debug console.

For rest of the UARTs (7 numbers) we want to drive a RS485 driver (ADM2687EBRIZ) direction control via CTS/RTS ?

As per the documentation I am not clear if I need to reserve RTS and CTS lines ? or just CTS lines is good enough ?

If CTS line is good enough then how to configure in the dts file ? All the DTS examples are using both the lines.

 

e.g. used is UART2 

Configure in the DTS to have 3 Lines Tx,Rx,CTS  (DCE Mode)

 

&uart2 {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_uart2>;

uart-has-rtscts;

status = "okay";

};

 

In the imx.c driver , I see that if "have_rtsgpio" is not set then the toggling will not happen and the comment says RTS is required.The comment is based on UART mode in DTE as RTS is output in DTE only and input in DCE mode.

 

 

/* RTS is required to control the transmitter */

if (!sport->have_rtscts && !sport->have_rtsgpio)

     rs485conf->flags &= ~SER_RS485_ENABLED;

 

In the above structure , do I need to enable have_rtsgpio ? 

pinctrl_uart2: uart2grp {

fsl,pins =

< MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1

MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1

MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS 0x1b0b1 >;

};

In the above structure do I have to have RTS line also ?

 

Please correct me and help me with correct pins and dts structures.

Outcomes