nRF54L15: UART pinout not working unless connecting the RTT viewer

Hi everyone,

I am working with the new nRF54L15 and have connected UART21 to pins 2.07-2.08, which are capable of handling both Trace data and UARTE. However, I am encountering an unusual behavior with the UART RXD pin.

When I attempt to use the UART RXD pin, it only works fine when either:

  • The JLINK is connected via SWD
  • The RTT Viewer is connected

If neither of the above tools are connected, I am unable to use the UART RXD at all.

Has anyone else experienced a similar issue with the nRF54L15? Any ideas on what might be causing this behavior or suggestions on how to resolve it would be greatly appreciated.

Thank you in advance for your help!


Parents
  • Hi,

      

    I can confirm that I see this issue with a minimalistic hello_world on a nRF54L15-DK, by adding this overlay:

    &pinctrl {
    	/omit-if-no-ref/ uart21_default: uart21_default {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 8)>,
    				<NRF_PSEL(UART_RTS, 1, 6)>;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_RX, 2, 7)>,
    				<NRF_PSEL(UART_CTS, 1, 7)>;
    			bias-pull-up;
    		};
    	};
    
    	/omit-if-no-ref/ uart21_sleep: uart21_sleep {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 1, 4)>,
    				<NRF_PSEL(UART_RX, 1, 5)>,
    				<NRF_PSEL(UART_RTS, 1, 6)>,
    				<NRF_PSEL(UART_CTS, 1, 7)>;
    			low-power-enable;
    		};
    	};
    };
    
    / {
    	chosen {
    		zephyr,console = &uart21;
    		zephyr,shell-uart = &uart21;
    	};
    };
    
    &uart21 {
        status = "okay";
    	current-speed = <115200>;
    	pinctrl-0 = <&uart21_default>;
    	pinctrl-1 = <&uart21_sleep>;
    	pinctrl-names = "default", "sleep";
    };

    And setting prj.conf::CONFIG_SHELL=y

    Connected wires from P1.04/05 -> P2.07/08 on the DK for easier access to the uart console.

     

    Could you try to set NRF_POWER->TASKS_CONSTLAT=1 and see if this fixes the problem?

    Ie.

    #include "nrf.h"
    
    ...
    
    int main(void) {
      NRF_POWER->TASKS_CONSTLAT=1;
      ...
    }

    By entering debug mode, you are effectively turning on several internal nets to ensure that the debug access port is not powered off when going into sleep. This is the reason why it works while debugging, or while enabling a certain subset/mode.

     

    My deepest apologies for this inconvenience. I will ensure that this information will be presented in the upcoming version of the datasheet.

     

    Kind regards,

    Håkon 

Reply
  • Hi,

      

    I can confirm that I see this issue with a minimalistic hello_world on a nRF54L15-DK, by adding this overlay:

    &pinctrl {
    	/omit-if-no-ref/ uart21_default: uart21_default {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 8)>,
    				<NRF_PSEL(UART_RTS, 1, 6)>;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_RX, 2, 7)>,
    				<NRF_PSEL(UART_CTS, 1, 7)>;
    			bias-pull-up;
    		};
    	};
    
    	/omit-if-no-ref/ uart21_sleep: uart21_sleep {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 1, 4)>,
    				<NRF_PSEL(UART_RX, 1, 5)>,
    				<NRF_PSEL(UART_RTS, 1, 6)>,
    				<NRF_PSEL(UART_CTS, 1, 7)>;
    			low-power-enable;
    		};
    	};
    };
    
    / {
    	chosen {
    		zephyr,console = &uart21;
    		zephyr,shell-uart = &uart21;
    	};
    };
    
    &uart21 {
        status = "okay";
    	current-speed = <115200>;
    	pinctrl-0 = <&uart21_default>;
    	pinctrl-1 = <&uart21_sleep>;
    	pinctrl-names = "default", "sleep";
    };

    And setting prj.conf::CONFIG_SHELL=y

    Connected wires from P1.04/05 -> P2.07/08 on the DK for easier access to the uart console.

     

    Could you try to set NRF_POWER->TASKS_CONSTLAT=1 and see if this fixes the problem?

    Ie.

    #include "nrf.h"
    
    ...
    
    int main(void) {
      NRF_POWER->TASKS_CONSTLAT=1;
      ...
    }

    By entering debug mode, you are effectively turning on several internal nets to ensure that the debug access port is not powered off when going into sleep. This is the reason why it works while debugging, or while enabling a certain subset/mode.

     

    My deepest apologies for this inconvenience. I will ensure that this information will be presented in the upcoming version of the datasheet.

     

    Kind regards,

    Håkon 

Children
No Data
Related