NRF54L15: Can't use any UART other than UART20???

Dear Nordic Team,

I am using NRF54L15 on NRF54 DK board and when trying to use/activate any other UART other than UART20  (e.g. UART21, UART22, UART00) on my project, every time I get the following build error:

"Only one of the following peripherals can be enabled: SPI00, SPIM00, SPIS00, TWI00, TWIM00, TWIS00, UARTE00" (same for UART21/UART22).

The bottom line is that none of this peripherals is actually used/defined in the project, so this error is really frustrating and doesn't make any sense.

The only UART I could enable is UART20, but when I try to use, RX never works. I suspect this is due to the chosen settings, which map UART20 to pretty much everything and I can't change/map those to any other UART as the build system immediately starts complaining.

This is really far from the best development experience I am having on just trying to simply hook up UART. 

Please help.

WBR,

Alex

Parents
  • Hello Alex,

    If you are using the nRF54l15DK as your build target there are some default assignments. For instance, SPIM00 (shared instance with UARTE00) is assigned to the onboard SPI flash:

     

    To use this serial interface for UARTE instead you would need to disable the SPI00 node in the devictree and use the board configurator app to re-route the IO pins from the SPI flash to the pin headers. Here is an example of a devictree overlay that enables UART00 and UART30:

    nrf54l15dk_nrf54l15_cpuapp.overlay

    &spi00 {
        status = "disabled";
    };
    
    // High speed UART intstance
    &uart00 {
        status = "okay";
        current-speed = <115200>;
    	pinctrl-0 = <&uart00_default>;
    	pinctrl-1 = <&uart00_sleep>;
        pinctrl-names = "default", "sleep";
    };
    
    
    &uart30 {
        status = "okay";
    };
    
    
    &pinctrl {
        	uart00_default: uart00_default {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 1)>;
    		};
            group2 { 
    			psels = <NRF_PSEL(UART_RX, 2, 2)>;
                bias-pull-up;
    		};
                
    	};
    
    	uart00_sleep: uart00_sleep {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 1)>,
    				<NRF_PSEL(UART_RX, 2, 2)>;
    				low-power-enable;
    		};
    	};
    };
    

    Best regards,

    Vidar

Reply
  • Hello Alex,

    If you are using the nRF54l15DK as your build target there are some default assignments. For instance, SPIM00 (shared instance with UARTE00) is assigned to the onboard SPI flash:

     

    To use this serial interface for UARTE instead you would need to disable the SPI00 node in the devictree and use the board configurator app to re-route the IO pins from the SPI flash to the pin headers. Here is an example of a devictree overlay that enables UART00 and UART30:

    nrf54l15dk_nrf54l15_cpuapp.overlay

    &spi00 {
        status = "disabled";
    };
    
    // High speed UART intstance
    &uart00 {
        status = "okay";
        current-speed = <115200>;
    	pinctrl-0 = <&uart00_default>;
    	pinctrl-1 = <&uart00_sleep>;
        pinctrl-names = "default", "sleep";
    };
    
    
    &uart30 {
        status = "okay";
    };
    
    
    &pinctrl {
        	uart00_default: uart00_default {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 1)>;
    		};
            group2 { 
    			psels = <NRF_PSEL(UART_RX, 2, 2)>;
                bias-pull-up;
    		};
                
    	};
    
    	uart00_sleep: uart00_sleep {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 2, 1)>,
    				<NRF_PSEL(UART_RX, 2, 2)>;
    				low-power-enable;
    		};
    	};
    };
    

    Best regards,

    Vidar

Children
No Data
Related