Suggestion needed for mcp23s17 code on NCS 3.2.4.

I have init spi4- for 

 spi4_default: spi4_default {
        group1 {
            psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
                    <NRF_PSEL(SPIM_MISO, 1, 14)>,
                    <NRF_PSEL(SPIM_MOSI, 1, 13)>;
        };
    };

    spi4_sleep: spi4_sleep {
        group1 {
            psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
                    <NRF_PSEL(SPIM_MISO, 1, 14)>,
                    <NRF_PSEL(SPIM_MOSI, 1, 13)>;
            low-power-enable;
        };
    };

&spi4 {
    compatible = "nordic,nrf-spim";
    status = "okay";

    pinctrl-0 = <&spi4_default>;
    pinctrl-1 = <&spi4_sleep>;
    pinctrl-names = "default", "sleep";

    cs-gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;


     mcp23s17: gpio_expander@0 {
        compatible = "microchip,mcp23s17";
        reg = <0>;

        spi-max-frequency = <1000000>;
        spi-hold-cs;
        gpio-controller;
        #gpio-cells = <2>;

        ngpios = <16>;

        status = "okay";
    };
}

static const struct device *mcp =
    DEVICE_DT_GET(DT_NODELABEL(mcp23s17));

char pinconf = 0;

void testextend()
{
    int ret;
    uint32_t val;

    if (!device_is_ready(mcp))
    {
        printk("MCP not ready\n");
        return;
    }

    if (pinconf == 0)
    {
        for (int i = 0; i < 16; i++)
        {
            ret = gpio_pin_configure(mcp, i, GPIO_OUTPUT_ACTIVE);
            printk("CFG PIN %d RET=%d\n", i, ret);
        }

        pinconf = 1;
    }

    /* ACTIVE LOW LED -> 0 = ON */

    ret = gpio_pin_set(mcp, 13, 0);
    printk("PIN13 ON RET=%d\n", ret);

    ret = gpio_pin_set(mcp, 14, 0);
    printk("PIN14 ON RET=%d\n", ret);

    ret = gpio_pin_set(mcp, 15, 0);
    printk("PIN15 ON RET=%d\n", ret);

    ret = gpio_port_get_raw(mcp, &val);
    printk("LED ON RAW = 0x%04X\n", val);

    k_sleep(K_SECONDS(1));

    /* ACTIVE LOW LED -> 1 = OFF */

    ret = gpio_pin_set(mcp, 13, 1);
    printk("PIN13 OFF RET=%d\n", ret);

    ret = gpio_pin_set(mcp, 14, 1);
    printk("PIN14 OFF RET=%d\n", ret);

    ret = gpio_pin_set(mcp, 15, 1);
    printk("PIN15 OFF RET=%d\n", ret);

    ret = gpio_port_get_raw(mcp, &val);
    printk("LED OFF RAW = 0x%04X\n", val);

    k_sleep(K_SECONDS(1));
}

Complete hardware is fine, Yet SPI communication is not happening, Am I missing something? I did nothing extra than this. 

Parents Reply Children
  • Hi Benjamin, 

    1. Application log-
    PIN13 ON RET=0
    PIN14 ON RET=0
    PIN15 ON RET=0
    LED ON RAW = 0x0000
    PIN13 OFF RET=0
    PIN14 OFF RET=0
    PIN15 OFF RET=0
    LED OFF RAW = 0x0000
    PIN13 ON RET=0
    PIN14 ON RET=0
    PIN15 ON RET=0
    LED ON RAW = 0x0000
    PIN13 OFF RET=0
    PIN14 OFF RET=0
    PIN15 OFF RET=0
    LED OFF RAW = 0x0000
    PIN13 ON RET=0
    PIN14 ON RET=0
    PIN15 ON RET=0
    LED ON RAW = 0x0000
    PIN13 OFF RET=0
    PIN14 OFF RET=0
    PIN15 OFF RET=0
    LED OFF RAW = 0x0000
    PIN13 ON RET=0
    PIN14 ON RET=0
    PIN15 ON RET=0


    1385.config
    0880.zephyr.dts

    Building spicheck
    west build --build-dir c:/ncs/RTUD/spicheck/build c:/ncs/RTUD/spicheck
     
    [0/1] Re-running CMake...
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: C:/ncs/RTUD/spicheck
    -- CMake version: 3.21.0
    -- Cache files will be written to: C:/ncs/v3.2.4/zephyr/.cache
    -- Zephyr version: 4.2.99 (C:/ncs/v3.2.4/zephyr)
    -- Found west (found suitable version "1.4.0", minimum required is "0.14.0")
    -- Board: rtud, qualifiers: nrf5340/cpuapp
    -- Found host-tools: zephyr 0.17.0 (C:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.17.0 (C:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/ncs/RTUD/spicheck/boards/rtud/rtud_nrf5340_cpuapp.dts
    -- Found devicetree overlay: C:/ncs/RTUD/spicheck/boards/rtud_nrf5340_cpuapp.overlay
    -- Generated zephyr.dts: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/zephyr.dts
    -- Generated pickled edt: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/edt.pickle
    -- Generated devicetree_generated.h: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/include/generated/zephyr/devicetree_generated.h
    Parsing C:/ncs/v3.2.4/zephyr/Kconfig
    Loaded configuration 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/.config'
    Merged configuration 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/.config.sysbuild'
    No change to configuration in 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/.config'
    No change to Kconfig header in 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/include/generated/zephyr/autoconf.h'
    -- Found gen_kobject_list: C:/ncs/v3.2.4/zephyr/scripts/build/gen_kobject_list.py
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/ncs/RTUD/spicheck/build/spicheck
    [4/155] Building C object CMakeFiles/app.dir/src/main.c.obj
    C:/ncs/RTUD/spicheck/src/main.c:26:36: warning: missing braces around initializer [-Wmissing-braces]
       26 | static struct spi_config spi_cfg = {
          |                                    ^
    [155/155] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       46168 B         1 MB      4.40%
                 RAM:       11568 B       448 KB      2.52%
            IDT_LIST:          0 GB        32 KB      0.00%
    Generating files from C:/ncs/RTUD/spicheck/build/spicheck/zephyr/zephyr.elf for board: rtud
    [5/5] Generating ../merged.hex
    *  Terminal will be reused by tasks, press any key to close it.
     
    *  Executing task: nRF Connect: Build [incremental]: spicheck/build
     
    Failed to determine build parameters
     
    *  Terminal will be reused by tasks, press any key to close it.
     
    *  Executing task: nRF Connect: Generate config rtud/nrf5340/cpuapp for c:\ncs\RTUD\spicheck
     
    Building spicheck
    west build --build-dir c:/ncs/RTUD/spicheck/build c:/ncs/RTUD/spicheck --pristine --board rtud/nrf5340/cpuapp -- -DCONFIG_DEBUG_THREAD_INFO=y -DBOARD_ROOT="c:/ncs/rtud/spicheck"
     
    -- west build: generating a build system
    Loading Zephyr module(s) (Zephyr base): sysbuild_default
    -- Found Python3: C:/ncs/toolchains/fd21892d0f/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.10") found components: Interpreter 
    -- Cache files will be written to: C:/ncs/v3.2.4/zephyr/.cache
    -- Found west (found suitable version "1.4.0", minimum required is "0.14.0")
    -- Board: rtud, qualifiers: nrf5340/cpuapp
    Parsing C:/ncs/v3.2.4/zephyr/share/sysbuild/Kconfig
    Loaded configuration 'C:/ncs/RTUD/spicheck/build/_sysbuild/empty.conf'
    Merged configuration 'C:/ncs/RTUD/spicheck/build/_sysbuild/empty.conf'
    Configuration saved to 'C:/ncs/RTUD/spicheck/build/zephyr/.config'
    Kconfig header saved to 'C:/ncs/RTUD/spicheck/build/_sysbuild/autoconf.h'
    -- 
       ******************************
       * Running CMake for spicheck *
       ******************************
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/ncs/RTUD/spicheck
    -- CMake version: 3.21.0
    -- Found Python3: C:/ncs/toolchains/fd21892d0f/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.10") found components: Interpreter 
    -- Cache files will be written to: C:/ncs/v3.2.4/zephyr/.cache
    -- Zephyr version: 4.2.99 (C:/ncs/v3.2.4/zephyr)
    -- Found west (found suitable version "1.4.0", minimum required is "0.14.0")
    -- Board: rtud, qualifiers: nrf5340/cpuapp
    -- Found host-tools: zephyr 0.17.0 (C:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.17.0 (C:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk)
    -- Found Dtc: C:/ncs/toolchains/fd21892d0f/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
    -- Found BOARD.dts: C:/ncs/RTUD/spicheck/boards/rtud/rtud_nrf5340_cpuapp.dts
    -- Found devicetree overlay: C:/ncs/RTUD/spicheck/boards/rtud_nrf5340_cpuapp.overlay
    -- Generated zephyr.dts: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/zephyr.dts
    -- Generated pickled edt: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/edt.pickle
    -- Generated devicetree_generated.h: C:/ncs/RTUD/spicheck/build/spicheck/zephyr/include/generated/zephyr/devicetree_generated.h
    Parsing C:/ncs/v3.2.4/zephyr/Kconfig
    Loaded configuration 'C:/ncs/RTUD/spicheck/boards/rtud/rtud_nrf5340_cpuapp_defconfig'
    Merged configuration 'C:/ncs/RTUD/spicheck/prj.conf'
    Merged configuration 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/misc/generated/extra_kconfig_options.conf'
    Merged configuration 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/.config.sysbuild'
    Configuration saved to 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/.config'
    Kconfig header saved to 'C:/ncs/RTUD/spicheck/build/spicheck/zephyr/include/generated/zephyr/autoconf.h'
    -- Found GnuLd: c:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd.exe (found version "2.38") 
    -- The C compiler identification is GNU 12.2.0
    -- The CXX compiler identification is GNU 12.2.0
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/ncs/toolchains/fd21892d0f/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    -- Found gen_kobject_list: C:/ncs/v3.2.4/zephyr/scripts/build/gen_kobject_list.py
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/ncs/RTUD/spicheck/build/spicheck
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/ncs/RTUD/spicheck/build
    -- west build: building application
    [4/181] Generating include/generated/zephyr/version.h
    -- Zephyr version: 4.2.99 (C:/ncs/v3.2.4/zephyr), build: ncs-v3.2.4
    [5/181] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [6/181] Generating include/generated/device-api-sections.ld, include/generated/device-api-sections.cmake
    [7/181] Generating include/generated/zephyr/syscall_dispatch.c, include/generated/zephyr/syscall_exports_llext.c, syscall_weakdefs_llext.c, include/generated/zephyr/syscall_list.h
    [8/181] Generating include/generated/zephyr/driver-validation.h
    [9/181] Generating include/generated/zephyr/kobj-types-enum.h, include/generated/zephyr/otype-to-str.h, include/generated/zephyr/otype-to-size.h
    [10/181] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
    [11/181] Generating include/generated/zephyr/offsets.h
    [12/181] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fault_s.S.obj
    [13/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [14/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/dynamic_disabled.c.obj
    [15/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [16/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fpu.c.obj
    [17/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread_monitor.c.obj
    [18/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [19/181] Building C object CMakeFiles/app.dir/src/main.c.obj
    C:/ncs/RTUD/spicheck/src/main.c:26:36: warning: missing braces around initializer [-Wmissing-braces]
       26 | static struct spi_config spi_cfg = {
          |                                    ^
    [20/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
    [21/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/libc/validate_libc.c.obj
    [22/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
    [23/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
    [24/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fault.c.obj
    [25/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/clock.c.obj
    [26/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
    [27/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/dec.c.obj
    [28/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/heap/heap.c.obj
    [29/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
    [30/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/hex.c.obj
    [31/181] Linking C static library app\libapp.a
    [32/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
    [33/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/timeutil.c.obj
    [34/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/bitmask.c.obj
    [35/181] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
    [36/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/mpsc_pbuf.c.obj
    [37/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/rb.c.obj
    [38/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/last_section_id.c.obj
    [39/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/onoff.c.obj
    [40/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/bitarray.c.obj
    [41/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/notify.c.obj
    [42/181] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/ring_buffer.c.obj
    [43/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/debug/thread_info.c.obj
    [44/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_cache.c.obj
    [45/181] Building C object zephyr/CMakeFiles/zephyr.dir/C_/ncs/v3.2.4/nrf/subsys/partition_manager/flash_map_partition_manager.c.obj
    [46/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/mem_mgmt/mem_attr.c.obj
    [47/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_core.c.obj
    [48/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_mgmt.c.obj
    [49/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_msg.c.obj
    [50/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_output.c.obj
    [51/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/backends/log_backend_rtt.c.obj
    [52/181] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
    [53/181] Building C object zephyr/CMakeFiles/zephyr.dir/C_/ncs/v3.2.4/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
    [54/181] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/reset.S.obj
    [55/181] Building ASM object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/nmi_on_reset.S.obj
    [56/181] Building C object zephyr/CMakeFiles/zephyr.dir/C_/ncs/v3.2.4/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
    [57/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/scb.c.obj
    [58/181] Building C object zephyr/CMakeFiles/zephyr.dir/C_/ncs/v3.2.4/nrf/lib/boot_banner/banner.c.obj
    [59/181] Generating linker_zephyr_pre0.cmd
    [60/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/thread_abort.c.obj
    [61/181] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
    [62/181] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
    [63/181] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/tls.c.obj
    [64/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/exc_exit.c.obj
    [65/181] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/init.c.obj
    [66/181] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/xip.c.obj
    [67/181] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
    [68/181] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/vector_table.S.obj
    [69/181] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/__aeabi_read_tp.S.obj
    [70/181] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/swap_helper.S.obj
    [71/181] Linking C static library zephyr\libzephyr.a
    [72/181] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/nmi.c.obj
    [73/181] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/fatal.c.obj
    [74/181] Linking C static library zephyr\arch\common\libisr_tables.a
    [75/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/prep_c.c.obj
    [76/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/irq_manage.c.obj
    [77/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/isr_wrapper.c.obj
    [78/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/irq_init.c.obj
    [79/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/cpu_idle.c.obj
    [80/181] Linking C static library zephyr\arch\arch\arm\core\libarch__arm__core.a
    [81/181] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/thread.c.obj
    [82/181] Building C object zephyr/arch/arch/arm/core/cortex_m/cmse/CMakeFiles/arch__arm__core__cortex_m__cmse.dir/arm_core_cmse.c.obj
    [83/181] Linking C static library zephyr\arch\common\libarch__common.a
    [84/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/assert.c.obj
    [85/181] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_mpu_regions.c.obj
    [86/181] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_core_mpu.c.obj
    [87/181] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_mpu.c.obj
    [88/181] Linking C static library zephyr\arch\arch\arm\core\cortex_m\cmse\libarch__arm__core__cortex_m__cmse.a
    [89/181] Linking C static library zephyr\arch\arch\arm\core\cortex_m\libarch__arm__core__cortex_m.a
    [90/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/errno_wrap.c.obj
    [91/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/exit.c.obj
    [92/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/locks.c.obj
    [93/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/cbprintf.c.obj
    [94/181] Linking C static library zephyr\arch\arch\arm\core\mpu\libarch__arm__core__mpu.a
    [95/181] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/time/time.c.obj
    [96/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/chk_fail.c.obj
    [97/181] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/abort.c.obj
    [98/181] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/stdio.c.obj
    [99/181] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/malloc.c.obj
    [100/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/validate_base_addresses.c.obj
    [101/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/common/reboot.c.obj
    [102/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/common/gppi_init.c.obj
    [103/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/validate_binding_headers.c.obj
    [104/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/validate_enabled_instances.c.obj
    [105/181] Linking C static library zephyr\lib\libc\common\liblib__libc__common.a
    [106/181] Linking C static library zephyr\lib\libc\picolibc\liblib__libc__picolibc.a
    [107/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/nrf53/soc.c.obj
    [108/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/nrf53/nrf53_cpunet_mgmt.c.obj
    [109/181] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/rtt_console.c.obj
    [110/181] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
    [111/181] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
    [112/181] Building C object zephyr/soc/soc/nrf5340/CMakeFiles/soc__nordic.dir/common/gpiote_nrfx.c.obj
    [113/181] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_mcp23sxx.c.obj
    [114/181] Linking C static library zephyr\drivers\console\libdrivers__console.a
    [115/181] Linking C static library zephyr\drivers\clock_control\libdrivers__clock_control.a
    [116/181] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
    [117/181] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [118/181] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_mcp23xxx.c.obj
    [119/181] Linking C static library zephyr\soc\soc\nrf5340\libsoc__nordic.a
    [120/181] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [121/181] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
    [122/181] Linking C static library zephyr\drivers\pinctrl\libdrivers__pinctrl.a
    [123/181] Building C object modules/nrf/drivers/hw_cc3xx/CMakeFiles/..__nrf__drivers__hw_cc3xx.dir/hw_cc3xx.c.obj
    [124/181] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_common.c.obj
    [125/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeslicing.c.obj
    [126/181] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
    [127/181] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
    [128/181] Linking C static library modules\nrf\drivers\hw_cc3xx\lib..__nrf__drivers__hw_cc3xx.a
    [129/181] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_spim.c.obj
    [130/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/bsp/stable/mdk/system_nrf5340_application.c.obj
    [131/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [132/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipe.c.obj
    [133/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [134/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [135/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
    [136/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [137/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
    [138/181] Linking C static library zephyr\drivers\spi\libdrivers__spi.a
    [139/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/helpers/nrfx_ram_ctrl.c.obj
    [140/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_hfclk.c.obj
    [141/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_lfclk.c.obj
    [142/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_hfclkaudio.c.obj
    [143/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
    [144/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_hfclk192m.c.obj
    [145/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/helpers/nrfx_gppi_dppi.c.obj
    [146/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_xo24m.c.obj
    [147/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_clock_xo.c.obj
    [148/181] Building C object modules/segger/CMakeFiles/modules__segger.dir/C_/ncs/v3.2.4/modules/debug/segger/SEGGER/SEGGER_RTT.c.obj
    [149/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [150/181] Building C object modules/segger/CMakeFiles/modules__segger.dir/SEGGER_RTT_zephyr.c.obj
    [151/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [152/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_spim.c.obj
    [153/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/busy_wait.c.obj
    [154/181] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [155/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [156/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [157/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [158/181] Linking C static library modules\segger\libmodules__segger.a
    [159/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [160/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
    [161/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [162/181] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
    [163/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/float.c.obj
    [164/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [165/181] Building C object modules/hal_nordic/modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/ncs/v3.2.4/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
    [166/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [167/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [168/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [169/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [170/181] Linking C static library modules\hal_nordic\modules\hal_nordic\nrfx\libmodules__hal_nordic__nrfx.a
    [171/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [172/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [173/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [174/181] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [175/181] Linking C static library zephyr\kernel\libkernel.a
    [176/181] Linking C executable zephyr\zephyr_pre0.elf
    [177/181] Generating linker.cmd
    [178/181] Generating isr_tables.c, isr_tables_vt.ld, isr_tables_swi.ld
    [179/181] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj
    [180/181] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
    [181/181] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       46168 B         1 MB      4.40%
                 RAM:       11568 B       448 KB      2.52%
            IDT_LIST:          0 GB        32 KB      0.00%
    Generating files from C:/ncs/RTUD/spicheck/build/spicheck/zephyr/zephyr.elf for board: rtud
    [7/10] No install step for 'spicheck'
    [8/10] Completed 'spicheck'
    [9/10] cmd.exe /C "cd /D C:\ncs\RTUD\spicheck\build\_sysbuild && C:\ncs\toolchains\fd21892d0f\opt\bin\cmake.exe -E true"
    [10/10] Generating ../merged.hex
    *  Terminal will be reused by tasks, press any key to close it. 

  • Hi Benjamin, 

    I waited for your answer, but I have resolved an issue. In the nRF5340_PS_v16.pdf it is mentioned that for SPIM4 "The GPIO must use the high drive H0H1 configuration in the DRIVE field of the PIN_CNF GPIO register."

    With default S0S1, we were not able to communicate with MCP23S17.

    Solution is -

     spi4_default: spi4_default {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 1, 15)>,
                        <NRF_PSEL(SPIM_MISO, 1, 14)>,
                        <NRF_PSEL(SPIM_MOSI, 1, 13)>;
                        nordic,drive-mode = <NRF_DRIVE_H0H1>;
            };
        };
Related