This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nRF9160DK and WINC1500 WiFi Module

Hi,

I am trying to get the Atmel WINC1500 module to work with the nRF9160DK.

I have read a similar post,

https://devzone.nordicsemi.com/f/nordic-q-a/76640/spi-issue-using-the-adafruit-winc1500-wifi-on-the-nrf9160dk/317289#317289

and have taken the advice to ensure I use pins that are not assigned to functions on the DK. My overlay file is this

&spi3 {
  compatible = "nordic,nrf-spim";
  status = "okay";
  cs-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
  sck-pin = <0>;
  mosi-pin = <19>;
  miso-pin = <1>;

	winc1500@0 {
		status = "okay";
		compatible = "atmel,winc1500";
		reg = <0x0>;
		label = "winc1500";
		spi-max-frequency = <4000000>;
		irq-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
		reset-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
		enable-gpios = <&gpio0 12 0>;
	};
};

and my conf file is as follows.

CONFIG_GPIO=y

CONFIG_SPI=y

CONFIG_WIFI_WINC1500=y
CONFIG_WIFI_WINC1500_REGION_EUROPE=y

CONFIG_EARLY_CONSOLE=y

CONFIG_NETWORKING=y
#CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_NET_TX_STACK_SIZE=2048
CONFIG_NET_RX_STACK_SIZE=2048

CONFIG_NET_PKT_RX_COUNT=10
CONFIG_NET_PKT_TX_COUNT=10
CONFIG_NET_BUF_RX_COUNT=20
CONFIG_NET_BUF_TX_COUNT=20
CONFIG_NET_MAX_CONTEXTS=10

CONFIG_NET_IPV4=y
CONFIG_NET_IPV6=n

CONFIG_NET_TCP=y

CONFIG_NET_LOG=y
CONFIG_INIT_STACKS=y

CONFIG_NET_SHELL=y

CONFIG_NET_STATISTICS=y
CONFIG_NET_STATISTICS_PERIODIC_OUTPUT=n

CONFIG_WIFI=y

CONFIG_WIFI_LOG_LEVEL_ERR=y
CONFIG_NET_L2_WIFI_SHELL=y

 when I try to build the code, the is the code I'm using

https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/net/wifi

I get an error

Watt@Watt-Macbook-Pro WINC1500 % sh build_app.sh
[1/1] cd /Users/Watt/Documents/ZEPHYR_...ncs/v1.6.1/zephyr/cmake/pristine.cmake
-- Application: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500
-- Using NCS Toolchain 1.6.0 for building. (/opt/nordic/ncs/v1.6.0-rc2/toolchain/cmake)
-- Zephyr version: 2.6.0-rc1 (/opt/nordic/ncs/v1.6.1/zephyr), build: v2.6.0-rc1-ncs1
-- Found Python3: /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/python3 (found suitable exact version "3.8.2") found components: Interpreter 
-- Found west (found suitable version "0.11.0", minimum required is "0.7.1")
-- Board: nrf9160dk_nrf9160, Revision: 0.7.0
-- Cache files will be written to: /Users/Watt/Library/Caches/zephyr
-- Found dtc: /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/dtc (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found toolchain: gnuarmemb (/opt/nordic/ncs/v1.6.0-rc2/toolchain)
-- Found BOARD.dts: /opt/nordic/ncs/v1.6.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160.dts
-- Found devicetree overlay: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/nrf9160dk_nrf9160.overlay
-- Generated zephyr.dts: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/device_extern.h
Parsing /opt/nordic/ncs/v1.6.1/zephyr/Kconfig
Loaded configuration '/opt/nordic/ncs/v1.6.1/zephyr/boards/arm/nrf9160dk_nrf9160/nrf9160dk_nrf9160_defconfig'
Merged configuration 'prj.conf'
Configuration saved to '/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/.config'
Kconfig header saved to '/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 9.2.1
-- The CXX compiler identification is GNU 9.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build
Make Complete

/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build
[1/294] Preparing syscall dependency handling

[87/294] Building C object zephyr/CMak...fi/winc1500/wifi_winc1500_nm_bsp.c.obj
FAILED: zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c.obj 
ccache /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/arm-none-eabi-gcc -DBUILD_VERSION=v2.6.0-rc1-ncs1 -DKERNEL -DNRF9160_XXAA -DUSE_PARTITION_MANAGER=0 -D_FORTIFY_SOURCE=2 -D__PROGRAM_START -D__ZEPHYR__=1 -I/opt/nordic/ncs/v1.6.1/zephyr/kernel/include -I/opt/nordic/ncs/v1.6.1/zephyr/arch/arm/include -I/opt/nordic/ncs/v1.6.1/zephyr/include -Izephyr/include/generated -I/opt/nordic/ncs/v1.6.1/zephyr/soc/arm/nordic_nrf/nrf91 -I/opt/nordic/ncs/v1.6.1/zephyr/lib/util/fnmatch/. -I/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/. -I/opt/nordic/ncs/v1.6.1/nrf/include -I/opt/nordic/ncs/v1.6.1/modules/hal/cmsis/CMSIS/Core/Include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/drivers/include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/mdk -I/opt/nordic/ncs/v1.6.1/zephyr/modules/hal_nordic/nrfx/. -isystem /opt/nordic/ncs/v1.6.1/zephyr/lib/libc/minimal/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed -isystem /opt/nordic/ncs/v1.6.1/nrfxlib/crypto/nrf_cc310_platform/include -Os -imacros /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -fdiagnostics-color=always -mcpu=cortex-m33 -mthumb -mabi=aapcs -imacros /opt/nordic/ncs/v1.6.1/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500=CMAKE_SOURCE_DIR -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1=WEST_TOPDIR -ffunction-sections -fdata-sections -std=c99 -nostdinc -MD -MT zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c.obj -MF zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c.obj.d -o zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c.obj -c /opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c
In file included from /opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bsp.c:7:
/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bsp_internal.h:15:10: fatal error: bus_wrapper/include/nm_bus_wrapper.h: No such file or directory
   15 | #include <bus_wrapper/include/nm_bus_wrapper.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[88/294] Building C object zephyr/CMak...500/wifi_winc1500_nm_bus_wrapper.c.obj
FAILED: zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c.obj 
ccache /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/arm-none-eabi-gcc -DBUILD_VERSION=v2.6.0-rc1-ncs1 -DKERNEL -DNRF9160_XXAA -DUSE_PARTITION_MANAGER=0 -D_FORTIFY_SOURCE=2 -D__PROGRAM_START -D__ZEPHYR__=1 -I/opt/nordic/ncs/v1.6.1/zephyr/kernel/include -I/opt/nordic/ncs/v1.6.1/zephyr/arch/arm/include -I/opt/nordic/ncs/v1.6.1/zephyr/include -Izephyr/include/generated -I/opt/nordic/ncs/v1.6.1/zephyr/soc/arm/nordic_nrf/nrf91 -I/opt/nordic/ncs/v1.6.1/zephyr/lib/util/fnmatch/. -I/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/. -I/opt/nordic/ncs/v1.6.1/nrf/include -I/opt/nordic/ncs/v1.6.1/modules/hal/cmsis/CMSIS/Core/Include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/drivers/include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/mdk -I/opt/nordic/ncs/v1.6.1/zephyr/modules/hal_nordic/nrfx/. -isystem /opt/nordic/ncs/v1.6.1/zephyr/lib/libc/minimal/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed -isystem /opt/nordic/ncs/v1.6.1/nrfxlib/crypto/nrf_cc310_platform/include -Os -imacros /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -fdiagnostics-color=always -mcpu=cortex-m33 -mthumb -mabi=aapcs -imacros /opt/nordic/ncs/v1.6.1/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500=CMAKE_SOURCE_DIR -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1=WEST_TOPDIR -ffunction-sections -fdata-sections -std=c99 -nostdinc -MD -MT zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c.obj -MF zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c.obj.d -o zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c.obj -c /opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c
In file included from /opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bus_wrapper.c:19:
/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500_nm_bsp_internal.h:15:10: fatal error: bus_wrapper/include/nm_bus_wrapper.h: No such file or directory
   15 | #include <bus_wrapper/include/nm_bus_wrapper.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[95/294] Building C object zephyr/CMak...vers/wifi/winc1500/wifi_winc1500.c.obj
FAILED: zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500.c.obj 
ccache /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/arm-none-eabi-gcc -DBUILD_VERSION=v2.6.0-rc1-ncs1 -DKERNEL -DNRF9160_XXAA -DUSE_PARTITION_MANAGER=0 -D_FORTIFY_SOURCE=2 -D__PROGRAM_START -D__ZEPHYR__=1 -I/opt/nordic/ncs/v1.6.1/zephyr/kernel/include -I/opt/nordic/ncs/v1.6.1/zephyr/arch/arm/include -I/opt/nordic/ncs/v1.6.1/zephyr/include -Izephyr/include/generated -I/opt/nordic/ncs/v1.6.1/zephyr/soc/arm/nordic_nrf/nrf91 -I/opt/nordic/ncs/v1.6.1/zephyr/lib/util/fnmatch/. -I/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/. -I/opt/nordic/ncs/v1.6.1/nrf/include -I/opt/nordic/ncs/v1.6.1/modules/hal/cmsis/CMSIS/Core/Include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/drivers/include -I/opt/nordic/ncs/v1.6.1/modules/hal/nordic/nrfx/mdk -I/opt/nordic/ncs/v1.6.1/zephyr/modules/hal_nordic/nrfx/. -isystem /opt/nordic/ncs/v1.6.1/zephyr/lib/libc/minimal/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include -isystem /opt/nordic/ncs/v1.6.0-rc2/toolchain/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed -isystem /opt/nordic/ncs/v1.6.1/nrfxlib/crypto/nrf_cc310_platform/include -Os -imacros /Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -fdiagnostics-color=always -mcpu=cortex-m33 -mthumb -mabi=aapcs -imacros /opt/nordic/ncs/v1.6.1/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/Users/Watt/Documents/ZEPHYR_Code/nRF9160DK/New_Code/WINC1500=CMAKE_SOURCE_DIR -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/opt/nordic/ncs/v1.6.1=WEST_TOPDIR -ffunction-sections -fdata-sections -std=c99 -nostdinc -MD -MT zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500.c.obj -MF zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500.c.obj.d -o zephyr/CMakeFiles/zephyr.dir/drivers/wifi/winc1500/wifi_winc1500.c.obj -c /opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500.c
/opt/nordic/ncs/v1.6.1/zephyr/drivers/wifi/winc1500/wifi_winc1500.c:37:10: fatal error: driver/include/m2m_wifi.h: No such file or directory
   37 | #include <driver/include/m2m_wifi.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[96/294] Building C object zephyr/arch...ore__aarch32__cortex_m.dir/fault.c.obj
ninja: build stopped: subcommand failed.
Parsing hex file.
ERROR: The file specified could not be found.

This error can be avoided if I comment out the line

CONFIG_WIFI=y

This allows the code to build and run but of couse I then get an error saying there is no network.

uart:~$ *** Booting Zephyr OS build v2.6.0-rc1-ncs1  ***


[00:00:00.382,232] <err> net_if: There is no network interface to work with!
uart:~$ wifi scan
[00:00:06.206,115] <err> os: ***** USAGE FAULT *****
[00:00:06.206,115] <err> os:   Unaligned memory access
[00:00:06.206,115] <err> os: r0/a1:  0xaaaaaaaa  r1/a2:  0x00000000  r2/a3:  0x00000000
[00:00:06.206,146] <err> os: r3/a4:  0x20004c48 r12/ip:  0x00000000 r14/lr:  0x0000536d
[00:00:06.206,146] <err> os:  xpsr:  0x61000000
[00:00:06.206,146] <err> os: Faulting instruction address (r15/pc): 0x0000525c
[00:00:06.206,146] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
[00:00:06.206,176] <err> os: Current thread: 0x200005d8 (shell_uart)
*** Booting Zephyr OS build v2.6.0-rc1-ncs1  ***system


[00:00:00.251,525] <err> net_if: There is no network interface to work with!
uart:~$ 

Would appreciate your thoughts

Rod

  • Hi Rod, sorry for the long delay.

    How are you supplying the WiFi module? What are the IO voltages on the WiFi module and nRF9160 DK? Are they both configured to communicate at a corresponding level?

    If you could share the schematics showing the SPI setup we could take a look. 

    Best regards, 

    Håkon

  • Hi Håkon,

    No problem, I understand that things take longer during vacation time.

    I am using this module.

    https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/UserGuides/50002616A.pdf

    Pin	    Signal	    nRF9160DK Connection
    1	    ID_DATA	        -
    2	    GND	            0V
    3	    NC	            -
    4	    NC	            -
    5	    RESET_N	        P0.13
    6	    WAKE	        +3.3V
    7	    NC	            -
    8	    NC	            -
    9	    IRQN	        P0.16
    10	    CHIP_EN	        P0.12
    11	    I2C_SDA	        -
    12	    I2C_SCK	        -
    13	    UART_RX	        -
    14	    UART_TX	        -
    15	    SPI_SSN	        P0.18
    16	    SPI_MOSI	    P0.19
    17	    SPI_MISO	    P0.01
    18	    SPI_SCK	        P0.00
    19	    GND	            0V
    20	    VCC	            +3.3V

    You will see my overlay file in a previous comment.

    I am using the NRF9160DK, with the I/o set to 3V.

    Rod

  • Hi Rod, 

    Thank you for providing the details. So far I have only had a quick look. The first thing I stumbled into is this comment in the ATWINC1500B-IMU datasheet regarding the Wake pin:

    Where at the DK is this pin connected? Is it connected to 3.0V or to 3.3V? What happens if you leave it unconnected?

    Best regards, 

    Håkon

  • Hi Håkon,

    Yes, I had seen that and have tried various connections, +3V, unconnected and even 0V to see if I can see a change in behaviour. It didn't seem to change anything. 

    uart:~$ wifi scan
    Scan request failed
    [00:00:13.617,279] <err> wifi_winc1500: Failed to request scan
    uart:~$

    Rod

  • Hi Rod,

    Which board hw revision are you using? Have you tried specifying a specific board revision for nRF9160 DK? This will affect the behaviour and configuration of several pins.

    When I check the Board controller firmware documentation it is mentioned that "In nRF9160 DK revisions earlier than v0.14.0, nRF9160 signals routed to other components on the DK are not simultaneously available on the DK connectors."

    I can see that P0.00 and P0.01 are also in use by VCOM2. Try swapping these pins with a couple of other free pins. Or, if you have no pins available, you could try to disable routing for the VCOM2 pins by adding the following to the overlay of the board controller firmware. Then build and flash this to nrf9160dk_nrf52840Make sure that the PROG/DEBUG switch on the DK is set to nRF52.

    &vcom2_pins_routing {
            status = "disabled";
    };

    Frequency

    Another thing to try is to lower the SPI frequency to 250000 in your overlay. This could help if you have long wires between the DK and the module.

    If you have an oscilloscope available, recording using 250000 could also help clarify a few things.

    Håkon

Related