This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF9160 DK GPIO-UART

Dear, 

I am using nRF9160 DK, I want to use nRF9160 SIP to connect with another sensor ( UART /SPI) 

Do you have any suggestions or examples?

Thanks,

Rgards

hng

  • Hi,

     

    There's some generic UART and SPI samples available in my branch here:

    https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160

    Note that they only show how to setup the two peripherals, no handling of any external sensors.

     

    Kind regards,

    Håkon

  • Ja. Tusen takk Håkon, jeg vil prøve det Slight smile

    mvh

    hng

  • Hi Håkon, 

    I am trying to use UART_1

    on the dts:

    &uart1 {
          status = "ok";
          current-speed = <115200>;
          tx-pin = <1>;
          rx-pin = <0>;
          rts-pin = <14>;
           cts-pin = <15>;
    };

    and changed litt on the main.c

    #include <zephyr.h>
    #include <misc/printk.h>
    #include <uart.h>

    static u8_t uart_buf[1024];void uart_cb(struct device *x)
    {
            uart_irq_update(x);
            int data_length = 0;

    if (uart_irq_rx_ready(x)) {
    data_length = uart_fifo_read(x, uart_buf, sizeof(uart_buf));
    uart_buf[data_length] = 0;
    }
    printk("%s", uart_buf);

    }

    void main(void)
    {
            struct device *uart = device_get_binding("UART_1");

            uart_irq_callback_set(uart, uart_cb);
            uart_irq_rx_enable(uart);
            printk("UART loopback start!\n");
            while (1) {
                          k_cpu_idle();
                           printk("UART 1 loopback start!\n");
                             }
    }

    __________________________________

    Buld and Run:

    I got the report:

    Secure Boot: SPU: set SRAM region 27 as Non-Secure
    
    
    
    
    Secure Boot: SPU: set SRAM region 28 as Non-Secure
    
    
    
    
    Secure Boot: SPU: set SRAM region 29 as Non-Secure
    
    
    
    
    Secure Boot: SPU: set SRAM region 30 as Non-Secure
    
    
    
    
    Secure Boot: SPU: set SRAM region 31 as Non-Secure
    
    
    
    
    Secure Boot: configure peripherals
    
    
    
    
    Secure Boot: MSP_NS 20020970
    
    
    
    
    Secure Boot: prepare to jump to Non-Secure image
    
    
    
    
    ***** Booting Zephyr OS v1.13.99-ncs2 *****
    
    
    
    
    ***** HARD FAULT *****
    
    
    
    
      Fault escalation (see below)
    
    
    
    
    ***** BUS FAULT *****
    
    
    
    
      Precise data bus error
    
    
    
    
      BFAR Address: 0x50008120
    
    
    
    
    ***** Hardware exception *****
    
    
    
    
    Current thread ID = 0x200204bc
    
    
    
    
    Faulting instruction address = 0x20020430
    
    
    
    
    Fatal fault in ISR! Spinning...

    and NO output on the UART_1 (P0.00, P0.01)

    Can you plz tell me where are the problems on my code?

    Thanks,

    Rgards

    hng

  • Hi,

     

    Try adding "CONFIG_UART_1_NRF_UARTE=y" to prj.conf, then reconfigure and flash the project. Note that if you are using master, the .overlay file should be named to "nrf9160_pca10090ns.overlay" to ensure that you're not overwriting the secure_boot. Same goes for the cmake .. -DBOARD=nrf9160_pca10090ns when configuring.

    Hoang said:
    and NO output on the UART_1 (P0.00, P0.01)

    Are you using the nRF9160DK? If yes, try to use GPIOs between P0.10 and P0.20, as they are default routed to the arduino pin lists.

    Do note that UART0 will still print messages on its respective pins, while the uart handler in the example is setup specifically to receive data on the txd/rxd pins set in the overlay file.

    If you choose P0.11 as the UARTE1 RXD on the nRF9160-DK, you can connect a wire from this GPIO to "TP10" (VCOM RXD) if writing from the same console as the printouts are showing. This should create a loopback between UARTE0 and UARTE1.

     

    *Edit*: You are connecting UARTE1 to the second VCOM on the segger on the DK, so if you choose TXD on P0.01 and RXD on P0.00, you should be able to send on COMx and see the printout on COMy. Sorry for being a bit slow today Slight smile

     

    Kind regards,

    Håkon

  • Hi Håkon,

    Thanks so much

    I added "CONFIG_UART_1_NRF_UARTE=y" to prj.conf, and NO errors after boot

    But I still confuse about PINs for UART1. 

    I am using nRF9160 DK, and in the nrf9160_pca10090.dts declares the pins for UART0 and UART1

    /*
     * Copyright (c) 2017 Linaro Limited
     * Copyright (c) 2018 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    /dts-v1/;
    #include <nordic/nrf9160_xxaa.dtsi>
    
    / {
    	model = "Nordic PCA10090 Dev Kit";
    	compatible = "nordic,pca10090-dk", "nordic,nrf9160-xxaa";
    
    	chosen {
    		zephyr,console = &uart0;
    		zephyr,sram = &sram0;
    		zephyr,flash = &flash0;
    	};
    
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		led3 = &led3;
    		sw0 = &button2;
    		sw1 = &button3;
    		sw2 = &button0;
    		sw3 = &button1;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = <&gpio0 2 GPIO_INT_ACTIVE_LOW>;
    			label = "Green LED 0";
    		};
    		led1: led_1 {
    			gpios = <&gpio0 3 GPIO_INT_ACTIVE_LOW>;
    			label = "Green LED 1";
    		};
    		led2: led_2 {
    			gpios = <&gpio0 4 GPIO_INT_ACTIVE_LOW>;
    			label = "Green LED 2";
    		};
    		led3: led_3 {
    			gpios = <&gpio0 5 GPIO_INT_ACTIVE_LOW>;
    			label = "Green LED 3";
    		};
    	};
    
    	buttons {
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = <&gpio0 8 GPIO_PUD_PULL_UP>;
    			label = "Switch 1";
    		};
    		button1: button_1 {
    			gpios = <&gpio0 9 GPIO_PUD_PULL_UP>;
    			label = "Switch 2";
    		};
    		button2: button_2 {
    			gpios = <&gpio0 6 GPIO_PUD_PULL_UP>;
    			label = "Push button 1";
    		};
    		button3: button_3 {
    			gpios = <&gpio0 7 GPIO_PUD_PULL_UP>;
    			label = "Push button 2";
    		};
    	};
    
    	sram0_bsd: memory@20010000 {
    		device_type = "memory";
    		compatible = "mmio-sram";
    	};
    };
    
    &uart0 {
    	status = "ok";
    	current-speed = <115200>;
    	tx-pin = <29>;
    	rx-pin = <28>;
    	rts-pin = <27>;
    	cts-pin = <26>;
    };
    
    &uart1 {
    	status = "ok";
    	current-speed = <115200>;
    	tx-pin = <1>;
    	rx-pin = <0>;
    	rts-pin = <14>;
    	cts-pin = <15>;
    };
    
    &gpiote {
    	status = "ok";
    };
    
    &gpio0 {
    	status = "ok";
    };
    
    &timer0 {
    	status = "ok";
    };
    
    &flash0 {
    	/*
    	 * For more information, see:
    	 * http://docs.zephyrproject.org/devices/dts/flash_partitions.html
    	 */
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x00000000 0x10000>;
    		};
    		slot0_partition: partition@10000 {
    			label = "image-0";
    		};
    #if defined(CONFIG_ARM_TRUSTZONE_M)
    		slot0_ns_partition: partition@40000 {
    			label = "image-0-nonsecure";
    		};
    #endif
    		slot1_partition: partition@80000 {
    			label = "image-1";
    		};
    #if defined(CONFIG_ARM_TRUSTZONE_M)
    		slot1_ns_partition: partition@b0000 {
    			label = "image-1-nonsecure";
    		};
    #endif
    		scratch_partition: partition@f0000 {
    			label = "image-scratch";
    			reg = <0x000f0000 0xa000>;
    		};
    
    		storage_partition: partition@fa000 {
    			label = "storage";
    			reg = <0x000fa000 0x00006000>;
    		};
    	};
    };
    
    #if defined(CONFIG_ARM_TRUSTZONE_M)
    / {
    	sram0_ns: memory@20020000 {
    		device_type = "memory";
    		compatible = "mmio-sram";
    	};
    };
    #endif
    
    /* Include partition configuration file */
    #include "nrf9160_pca10090_partition_conf.dts"

    &uart1 pins are defined 

    and nRF9160 DK are designed compatible for Arduino UNO, so P0.00-RX and P0.01-TX

    But, I still got NO output for uart1??

    I need to read more about VCOM to understand clearly about this one

    Thanks

    Regards

    hng 

Related