AnsweredAssumed Answered

RS232 Communication fails with Hardware Flow control option

Question asked by Koil Arul Raj on Jun 22, 2018
Latest reply on Jul 2, 2018 by Koil Arul Raj

Hi,

 

In my custom iMX7 board, I am using UART5 module (ttymxc4) for RS232 communication.

 

Below is my device tree configurations corresponding to uart5.

 

&uart5 {
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&pinctrl_uart5 &pinctrl_uart5_rts_cts>;
    pinctrl-1 = <&pinctrl_uart5 &pinctrl_uart5_rts_cts>;
    assigned-clocks = <&clks IMX7D_UART5_ROOT_SRC>;
    assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
    status = "okay";
};

 

pinctrl_uart5: uart5grp {
    fsl,pins = <
        MX7D_PAD_I2C4_SDA__UART5_DCE_TX        0x79 /* TX */
        MX7D_PAD_I2C4_SCL__UART5_DCE_RX        0x79 /* RX */
    >;
};

 

pinctrl_uart5_rts_cts: uart5_rts_cts_grp {
    fsl,pins = <
        MX7D_PAD_SAI1_TX_SYNC__UART5_DCE_CTS    0x79 /* CTS */
        MX7D_PAD_SAI1_TX_DATA__UART5_DCE_RTS    0x79 /* RTS */
    >;
};

 

Without Hardware Flow control, the data transmission occurs correctly on both sides. [Board to PC and PC to board]

 

But When I enabled Hardware Flow Control option on both host PC and my imx7 board,

1. The data can be transmitted from board to PC without any issue.

2. From PC to board we cannot do any data transfer.

 

After few days of debug, we found that the RTS line from board is always maintained at 3.3v from boot.

 

We can able to transfer data from both sides with hardware flow control, if we configure RTS line as GPIO and manually drive it to zero.

 

But I think it is not a proper solution. Kindly help me to find that, whether the serial driver forces the RTS line to be in HIGH state. Because we checked our hardware design and it seems everything is fine.

 

Tried all the PAD settings given in the Reference manual.

 

Kindly help me to solve this issue.

 

Thanks

Koil Arul Raj S

Outcomes