VIM3L : Enable HW flow control for uart_c

Hi,

I wanted to use uart_c with hardware flow control. I see that GPIO header (J4) pin 15 and 16 is directly exposed as uart_c RX and TX respectively.

I dont see uart_c CTS and RTS are exposed directly on GPIO header. But looks like pin 35 and 37 are multifunction pins and can be programmed to use as uart_c CTS and RTS respectively.

If this understanding is correct, Can you please help me on how to program GPIO header pin 35 and 37 as uart_c CTS and RTS?

gpio_header

Thanks,
Mandip

Hello and welcome, please join the existing topic to discuss, instead of having redundant topics thank you

I have gone through suggested topic and feels that concerns are different. And hence created new topic.

I am able to activate uart_c and could able to use pin 15 (Rx) and pin 16 (Tx) for uart_c. But because of lack of flow control pins, observing data lose on higher baudrate.

I am looking for the ways to program pin 35 and 37 on GPIO Header for CTS and RTS. Can you please help in this regards?

In that case I shall not interfere,
but regarding your problem, I am sorry as my knowledge does not extend there yet, but I am sure that, contacting khadas staff might help you,

Good day

Hello @Mandip

You can follow this documentation to add your own device tree overlay to enable UARC_C hardware flow control.

For example:

  • Create your own device tree overlay file:
root@Khadas:~# cat uart3-hw.dts 
/dts-v1/;                                 
/plugin/;

/ {
    fragment@0 {
        target = <&pinctrl_periphs>;

        __overlay__ {
            status = "okay";

            c_uart_pins:c_uart {
                mux {
                    groups = "uart_tx_c",
                            "uart_rx_c",
                            "uart_rts_c",
                            "uart_cts_c";
                    function = "uart_c";
                };
            };
        };
    };

    fragment@1 {
        target = <&uart_C>;

        __overlay__ {
            status = "okay";
            pinctrl-0 = <&c_uart_pins>;
        };
    };
};
  • Compile to dtbo
root@Khadas:~# dtc -I dts -O dtb -o uart3-hw.dtbo uart3-hw.dts 
  • Copy dtbo to /boot/dtb/overlays/kvim3l
root@Khadas:~# cp uart3-hw.dtbo /boot/dtb/overlays/kvim3l
  • Edit /boot/env.txt file to setup overlays
overlays=uart3-hw i2c3 os08a10

Note: You need to remove uart3 & pwm_f node.

  • Save the file and reboot the board.

I haven’t tested uart hardware flow control, please let me know whether it works for you.

4 Likes

Thanks @numbqq.
I was trying with android image and building from source. So I have tried updating dts file to configure uart_c with CTS/RTS as you suggested.

I could enable flow control for uart_c and dont see data lose with higher baudrate.

Thanks for your help and suggestion.

2 Likes