Add UART1 in Devicetree address range collides with others peripherals

Hi Supporter

                     I use nRF7002-DK, toolchains and SDK version use v2.5.2, I try to modify Devicetree for  nrf5340_app_common.dts file for add UART1 node, when I view visual editor as below, found UART1 and i2c register address was collidesed as below red color highlight, how can I escape or improve like that issue, Thanks.

my nrf5340_cpuapp_common.dts as below

/*
 * Copyright (c) 2022 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */
#include "nrf5340_cpuapp_common-pinctrl.dtsi"

/ {

    chosen {
        zephyr,console = &uart0;
        zephyr,shell-uart = &uart0;
        zephyr,uart-mcumgr = &uart0;
        zephyr,bt-mon-uart = &uart0;
        zephyr,bt-c2h-uart = &uart0;
        zephyr,bt-hci-rpmsg-ipc = &ipc0;
        nordic,802154-spinel-ipc = &ipc0;
        zephyr,ieee802154 = &ieee802154;
    };

    leds {
        compatible = "gpio-leds";
        led0: led_0 {
            gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
            label = "Green LED 0";
        };
        led1: led_1 {
            gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
            label = "Green LED 1";
        };
    };

    pwmleds {
        compatible = "pwm-leds";
        pwm_led0: pwm_led_0 {
            pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
        };
    };

    buttons {
        compatible = "gpio-keys";
        button0: button_0 {
            gpios = <&gpio1 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
            label = "Push button 1";
        };
        button1: button_1 {
            gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
            label = "Push button 2";
        };
    };

    arduino_header: connector {
        compatible = "arduino-header-r3";
        #gpio-cells = <2>;
        gpio-map-mask = <0xffffffff 0xffffffc0>;
        gpio-map-pass-thru = <0 0x3f>;
        gpio-map = <0 0 &gpio0 4 0>,    /* A0 */
               <1 0 &gpio0 5 0>,    /* A1 */
               <2 0 &gpio0 6 0>,    /* A2 */
               <3 0 &gpio0 7 0>,    /* A3 */
               <4 0 &gpio0 25 0>,   /* A4 */
               <5 0 &gpio0 26 0>,   /* A5 */
               <6 0 &gpio1 0 0>,    /* D0 */
               <7 0 &gpio1 1 0>,    /* D1 */
               <8 0 &gpio1 4 0>,    /* D2 */
               <9 0 &gpio1 5 0>,    /* D3 */
               <10 0 &gpio1 6 0>,   /* D4 */
               <11 0 &gpio1 7 0>,   /* D5 */
               <12 0 &gpio1 8 0>,   /* D6 */
               <13 0 &gpio1 9 0>,   /* D7 */
               <14 0 &gpio1 10 0>,  /* D8 */
               <15 0 &gpio1 11 0>,  /* D9 */
               <16 0 &gpio1 12 0>,  /* D10 */
               <17 0 &gpio1 13 0>,  /* D11 */
               <18 0 &gpio1 14 0>,  /* D12 */
               <19 0 &gpio1 15 0>,  /* D13 */
               <20 0 &gpio1 2 0>,   /* D14 */
               <21 0 &gpio1 3 0>;   /* D15 */
    };

    arduino_adc: analog-connector {
        compatible = "arduino,uno-adc";
        #io-channel-cells = <1>;
        io-channel-map = <0 &adc 0>,    /* A0 = P0.4 = AIN0 */
                 <1 &adc 1>,    /* A1 = P0.5 = AIN1 */
                 <2 &adc 2>,    /* A2 = P0.6 = AIN2 */
                 <3 &adc 3>,    /* A3 = P0.7 = AIN3 */
                 <4 &adc 4>,    /* A4 = P0.25 = AIN4 */
                 <5 &adc 5>;    /* A5 = P0.26 = AIN5 */
    };

    gpio_fwd: nrf-gpio-forwarder {
        compatible = "nordic,nrf-gpio-forwarder";
        status = "okay";
        uart {
            gpios = <&gpio1 1 0>, <&gpio1 0 0>, <&gpio1 5 0>, <&gpio1 4 0>;
        };
    };

    nrf_radio_coex: nrf7002-coex {
        status = "okay";
        compatible = "nordic,nrf700x-coex";
        req-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
        status0-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
        grant-gpios = <&gpio0 24 (GPIO_PULL_DOWN | GPIO_ACTIVE_LOW)>;
        swctrl1-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
        btrf-switch-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
    };

    /* These aliases are provided for compatibility with samples */
    aliases {
        led0 = &led0;
        led1 = &led1;
        pwm-led0 = &pwm_led0;
        sw0 = &button0;
        sw1 = &button1;
        bootloader-led0 = &led0;
        mcuboot-button0 = &button0;
        mcuboot-led0 = &led0;
    };
};

&adc {
    status = "okay";
};

&gpiote {
    status = "okay";
};

&gpio0 {
    status = "okay";
};

&gpio1 {
    status = "okay";
};

arduino_i2c: &i2c1 {
    compatible = "nordic,nrf-twim";
    status = "okay";
    pinctrl-0 = <&i2c1_default>;
    pinctrl-1 = <&i2c1_sleep>;
    pinctrl-names = "default", "sleep";
};

&uart0 {
    status = "okay";
    current-speed = <921600>;
    pinctrl-0 = <&uart0_default>;
    pinctrl-1 = <&uart0_sleep>;
    pinctrl-names = "default", "sleep";
};
&uart1 {
    status = "okay";
    current-speed = <921600>;
    pinctrl-0 = <&uart1_default>;
    pinctrl-1 = <&uart1_sleep>;
    pinctrl-names = "default", "sleep";
};

&pwm0 {
    status = "okay";
    pinctrl-0 = <&pwm0_default>;
    pinctrl-1 = <&pwm0_sleep>;
    pinctrl-names = "default", "sleep";
};

&spi4 {
    compatible = "nordic,nrf-spim";
    status = "okay";
    pinctrl-0 = <&spi4_default>;
    pinctrl-1 = <&spi4_sleep>;
    pinctrl-names = "default", "sleep";
    cs-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
    mx25r64: mx25r6435f@0 {
        compatible = "jedec,spi-nor";
        reg = <0>;
        spi-max-frequency = <33000000>;
        jedec-id = [c2 28 17];
        sfdp-bfp = [
            e5 20 f1 ff ff ff ff 03 44 eb 08 6b 08 3b 04 bb
            ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52
            10 d8 00 ff 23 72 f5 00 82 ed 04 cc 44 83 68 44
            30 b0 30 b0 f7 c4 d5 5c 00 be 29 ff f0 d0 ff ff
        ];
        size = <67108864>;
        has-dpd;
        t-enter-dpd = <10000>;
        t-exit-dpd = <5000>;
    };
};

&qspi {
    status = "okay";

    pinctrl-0 = <&qspi_default>;
    pinctrl-1 = <&qspi_sleep>;
    pinctrl-names = "default", "sleep";
    nrf700x: nrf7002@1 {
        status = "okay";
        compatible = "nordic,nrf700x-qspi";
        reg = <1>;
        sck-frequency = <24000000>;
        quad-mode;
        /* Wi-Fi Pins used */
        iovdd-ctrl-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
        bucken-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
        host-irq-gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
    };
};

arduino_serial: &uart1 {
    compatible = "nordic,nrf-uarte";
    current-speed = <921600>;
    pinctrl-0 = <&uart1_default>;
    pinctrl-1 = <&uart1_sleep>;
    pinctrl-names = "default", "sleep";
};

arduino_spi: &spi3 {
    compatible = "nordic,nrf-spim";
    cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */
    pinctrl-0 = <&spi3_default>;
    pinctrl-1 = <&spi3_sleep>;
    pinctrl-names = "default", "sleep";
};

&flash0 {

    partitions {
        compatible = "fixed-partitions";
        #address-cells = <1>;
        #size-cells = <1>;

        boot_partition: partition@0 {
            label = "mcuboot";
            reg = <0x00000000 0x00010000>;
        };
        slot0_partition: partition@10000 {
            label = "image-0";
        };
        slot0_ns_partition: partition@50000 {
            label = "image-0-nonsecure";
        };
        slot1_partition: partition@80000 {
            label = "image-1";
        };
        slot1_ns_partition: partition@c0000 {
            label = "image-1-nonsecure";
        };
        scratch_partition: partition@f0000 {
            label = "image-scratch";
            reg = <0x000f0000 0xa000>;
        };
        storage_partition: partition@fa000 {
            label = "storage";
            reg = <0x000fa000 0x00006000>;
        };
    };
};

&ieee802154 {
    status = "okay";
};

zephyr_udc0: &usbd {
    compatible = "nordic,nrf-usbd";
    status = "okay";
};

/ {

    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        sram0_image: image@20000000 {
            /* Zephyr image(s) memory */
        };

        sram0_s: image_s@20000000 {
            /* Secure image memory */
        };

        sram0_ns: image_ns@20040000 {
            /* Non-Secure image memory */
        };
    };
};

/* Include partition configuration file */
#include "nrf5340_cpuapp_partition_conf.dts"

Best Regards

      Tina

Parents Reply Children
  • Hi Einar Thorsrud

                                Another question is how to set the uart as slave type?which and where I need to config for uart slave status?and how to active UART0 and UART1 at the same time?it's need to modify nrf5340_cpuapp_common.dts file?

    below is I mark for i2c and release the resource for UART1, I saw the UART1 is not address range collides, but UART1 is not activate as below picture.I also add the chosen as below picture, can't active UART0 & UART1 at the same time.

    I use Uart/echo sample for this setting.

    Best Regards

          Tina

  • Hi Tina,

    yithwe said:
    Another question is how to set the uart as slave type?

    There is no master/slave concept in UART. Both devices are equal.

    yithwe said:
    but UART1 is not activate as below picture.

    Did you re-build the project? If not, the highlighting in the IDE might be incorrect (and in some other cases as well). The best way to see what you ended up with is to look at the generated zephyr.dts file in your build folder.

  • Hi Einar Thorsrud

                               I rebuild the project, but UART0 isn't activate, it seen "overridden by later entry", zephyr.dts also no uart0 inforation, attached file is zephyr.dts in build floder.

    8103.zephyr.dts

    Best Regards

         Tina8103.zephyr.dts

  • Hi,

    UART0 is enabled in the generated DTS you uploaded:

    			uart0: uart@8000 {
    				compatible = "nordic,nrf-uarte";
    				reg = < 0x8000 0x1000 >;
    				interrupts = < 0x8 0x1 >;
    				status = "okay";
    				current-speed = < 0xe1000 >;
    				pinctrl-0 = < &uart0_default >;
    				pinctrl-1 = < &uart0_sleep >;
    				pinctrl-names = "default", "sleep";
    			};

    However, it is not used for anything directly, unlike uart1:

    	chosen {
    		zephyr,entropy = &cryptocell;
    		zephyr,flash-controller = &flash_controller;
    		zephyr,console = &uart1;
    		zephyr,shell-uart = &uart1;
    		zephyr,uart-mcumgr = &uart1;
    		zephyr,bt-mon-uart = &uart1;
    		zephyr,bt-c2h-uart = &uart1;
    ...

    How do you intend to use UART0 and in what way does it not work?

  • Hi Einar Thrsrud

                              I use v2.5.2\zephyr\samples\drivers\uart\echo_bot sample code, I need to open two serial terminal window and connect two uart for view the result and feedback speed.

    Best Regards

         Tina 

Related