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

nrf5340 nrfx spis no events

Hello

I am trying to configure the spis with the nrfx drivers. My code is as follows:

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

#define PIN_SCK 4
#define PIN_MOSI 5
#define PIN_MISO 6
#define PIN_CSN 7
#define SPIS_NR 3

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);

uint8_t rx_buffer[2];
uint8_t tx_buffer[2];

void spis_event_handler_t(nrfx_spis_evt_t const *p_event, void *p_context){
    printk("received\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 with setting.\n");
            }
            break;
        case NRFX_SPIS_BUFFERS_SET_DONE:
            printk("buffers set\n");
            break;
        case NRFX_SPIS_EVT_TYPE_MAX:
        
            break;
        default:
            ;
    }
}

void init_spis(){
    int err;
    err = nrfx_spis_init(&spis_t,&spis_config_t,spis_event_handler_t,NULL);
    if(err != NRFX_SUCCESS){
        printk("Error with init.\n");
    } else {
        printk("SPIS started.\n");
    }
    err = nrfx_spis_buffers_set(&spis_t, tx_buffer, sizeof(tx_buffer), rx_buffer, sizeof(rx_buffer));
    if(err != NRFX_SUCCESS){
        printk("Error with setting.\n");
    }
}

void main(void)
{
    init_spis();
}

I enabled the nrfx SPIS driver and the nrfx SPIS3 instance via Segger Embedded and I am using ncs v1.4.0.

My serial output is:

*** Booting Zephyr OS build v2.4.0-ncs1  ***
SPIS started.

However, shouldn't the nrfx_spis_buffers_set trigger the NRFX_SPIS_BUFFERS_SET_DONE event and "received" and "buffers set" should also be sent to the serial output?
Did I do something wrong and my event handler function is not getting called?

Parents Reply Children
Related