Device resets while using NRFX SPI drivers on NCS

Hello, I am trying to run SPI Slave on NCS with NRFX drivers and for some reason device resets and I cannot figure out why. The code is pretty much straightforward, maybe someone could take a look and tell me what am I doing wrong? P.S. RESETREAS register gives me 4.

Here's the main:

#include <zephyr.h>
#include <sys/printk.h>
#include "nrfx_spis.h"

#define APP_SPIS_SCK_PIN 13
#define APP_SPIS_MISO_PIN 11
#define APP_SPIS_MOSI_PIN 12
#define APP_SPIS_CS_PIN 14
#define NRFX_SPIS_DEFAULT_DEF 0xFF
#define NRFX_SPIS_DEFAULT_ORC 0xFE
#define SPIS_NR 1

int err;
uint32_t u32Reset_reason;

nrfx_spis_t spis_t = NRFX_SPIS_INSTANCE(SPIS_NR);
//nrfx_spis_config_t spis_config_t = NRFX_SPIS_DEFAULT_CONFIG(PIN_SCK, PIN_MOSI, NRFX_SPIS_PIN_NOT_USED, PIN_CSN);

volatile uint8_t rx_buffer[255];
volatile uint8_t tx_buffer[255] = "Labas112";

void spis_event_handler_t(nrfx_spis_evt_t const *p_event, void *p_context)
{
    printk("gautas event\n");
    int err;
    switch(p_event->evt_type)
	{
        case NRFX_SPIS_XFER_DONE:
            err = nrfx_spis_buffers_set(&spis_t, tx_buffer, sizeof(tx_buffer), rx_buffer, sizeof(rx_buffer));            
            if(err != NRFX_SUCCESS)
			{
                printk("error w set\n");
            }
            break;
        case NRFX_SPIS_BUFFERS_SET_DONE:
            	printk("buf set\n");
            break;
        case NRFX_SPIS_EVT_TYPE_MAX:
            break;
    }
}

void init_spis()
{
    const nrfx_spis_config_t spis_config_t = 
    {
        .csn_pin = APP_SPIS_CS_PIN,
        .miso_pin = APP_SPIS_MISO_PIN,
        .mosi_pin = APP_SPIS_MOSI_PIN,
        .sck_pin = APP_SPIS_SCK_PIN,
        .bit_order = NRF_SPIS_BIT_ORDER_MSB_FIRST,
        .csn_pullup = NRF_GPIO_PIN_PULLUP,
        .def = NRFX_SPIS_DEFAULT_DEF,
        .orc = NRFX_SPIS_DEFAULT_ORC,
        .irq_priority = NRFX_SPIS_DEFAULT_CONFIG_IRQ_PRIORITY,
        .mode = NRF_SPIS_MODE_3,
        .miso_drive = NRF_GPIO_PIN_H0H1
    };
    
    err = nrfx_spis_init(&spis_t, &spis_config_t, spis_event_handler_t, NULL);
    if(err != NRFX_SUCCESS){
        printk("init error.\n");
    } else {
        printk("SPIS start.\n");
    }
}

void main(void)
{
    init_spis();
    u32Reset_reason = NRF_POWER->RESETREAS;
    NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; 
    err = nrfx_spis_buffers_set(&spis_t, tx_buffer, sizeof(tx_buffer), rx_buffer, sizeof(rx_buffer));
    if(err != NRFX_SUCCESS){
        printk("error w set\n");
    }
	while (1)
	{
        printk("while\n");
		/* code */
	}
	
}

And here's my project config:

# nothing here
CONFIG_NRFX_SPIS=y

CONFIG_NRFX_SPIS1=y

CONFIG_BOARD_ENABLE_DCDC=n

CONFIG_USE_SEGGER_RTT=n

CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y

CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y

Parents Reply Children
No Data
Related