Hi
I am trying to use the serial library with IRQ and callback function, but the event NRF_SERIAL_EVENT_RX_DATA is never triggered. No other event than NRF_SERIAL_EVENT_TX_DONE is passed to the callback function. I'm aware of a similar case, https://devzone.nordicsemi.com/f/nordic-q-a/37270/nrf_serial_event_rx_data-never-triggered, but reducing the amount of code in the interrupt handler didn't work for me.
I'm using SDK15.2
this is the setup:
static void serial_cb(struct nrf_serial_s const *p_serial, nrf_serial_event_t event); NRF_SERIAL_DRV_UART_CONFIG_DEF(m_uart0_drv_config, RX_PIN_NUMBER, TX_PIN_NUMBER, RTS_PIN_NUMBER, CTS_PIN_NUMBER, NRF_UART_HWFC_DISABLED, NRF_UART_PARITY_EXCLUDED, NRF_UART_BAUDRATE_115200, UART_DEFAULT_CONFIG_IRQ_PRIORITY); #define SERIAL_FIFO_TX_SIZE 128 #define SERIAL_FIFO_RX_SIZE 128 NRF_SERIAL_QUEUES_DEF(serial_queues, SERIAL_FIFO_TX_SIZE, SERIAL_FIFO_RX_SIZE); #define SERIAL_BUFF_TX_SIZE 1 #define SERIAL_BUFF_RX_SIZE 1 NRF_SERIAL_BUFFERS_DEF(serial_buffs, SERIAL_BUFF_TX_SIZE, SERIAL_BUFF_RX_SIZE); NRF_SERIAL_CONFIG_DEF(serial_config, NRF_SERIAL_MODE_IRQ, &serial_queues, &serial_buffs, serial_cb, NULL); NRF_SERIAL_UART_DEF(serial_uart, 0);
and the initialization:
void msgInit (void) { ret_code_t err_code; err_code = nrf_serial_init(&serial_uart, &m_uart0_drv_config, &serial_config); APP_ERROR_CHECK(err_code); }
and the callback function:
static void serial_cb(struct nrf_serial_s const *p_serial, nrf_serial_event_t event) { ret_code_t ret; char c; if (event != NRF_SERIAL_EVENT_TX_DONE) { ret = c; } switch (event) { case NRF_SERIAL_EVENT_TX_DONE: break; case NRF_SERIAL_EVENT_RX_DATA: ret = c; break; case NRF_SERIAL_EVENT_DRV_ERR: case NRF_SERIAL_EVENT_FIFO_ERR: break; default: break; } }
Setting a breakpoint at line 6 or line 13 never triggers.
Data sent (blue) and received (red) look fine
Any suggestion on how to proceed?