nRF9160 does not boot if UART hw-flow-control is enabled

Hello

On my application I have noticed that when I use hardware flow control of the uart1 (not the console uart) the processor will get stuck just before the application boots when the CTS line is not driven LOW.

Bellow is a screenshot of the LOGS during power on. If the CTS line is not connected to GND or driven LOW the LOGS will stuck in that screen.

My understanding is that if the uart receiver would not drive LOW the CTS of the uart1 of the nRF9160, that means that the receiver is not ready to receive data. In my case as a result my application would not start and that means that the start of the processor depends of the CTS line, that must be driven LOW from the UART receiver.

Because I do not want the application execution to depend on the CTS line and the receiver chip, is there a way to continue the execution of the application regardless the state of the CTS line?

.dts file

&uart1 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart1_default>;
	pinctrl-1 = <&uart1_sleep>;
	pinctrl-names = "default", "sleep";
	hw-flow-control;
};

pinctrl.dtsi

	uart1_default: uart1_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 17)>,
			<NRF_PSEL(UART_RTS, 0, 7)>;
		};
		group2 {
			psels = <NRF_PSEL(UART_RX, 0, 18)>,
			<NRF_PSEL(UART_CTS, 0, 6)>;
			bias-pull-up;
		};
	};
	uart1_sleep: uart1_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 0, 17)>,
			<NRF_PSEL(UART_RX, 0, 18)>,
			<NRF_PSEL(UART_RTS, 0, 7)>,
			<NRF_PSEL(UART_CTS, 0, 6)>;
			low-power-enable;
		};
	};

CONFIG_UART_1_INTERRUPT_DRIVEN=n
CONFIG_UART_1_ASYNC=y

SDK: nRFConnect v3.0.1

Thank you

Parents
  • Hello,

    Because I do not want the application execution to depend on the CTS line and the receiver chip, is there a way to continue the execution of the application regardless the state of the CTS line?

    Perhaps you can try to explain why your application depends on the CTS line to continue execution. And also show where in the code that dependency happens.

  • The execution is getting stuck just before my application code starts execution, As you can see i the logs screenshot above.

    There is no dependency within the application code. 

    I just say that it looks like there is a dependency just before the application boot.

    Is this a normal operation when hardware control is enabled?

Reply Children
Related