Hello,
I have nrf52 and configure uart0 for connection with external device.
I have configured it as NRF_SERIAL_MODE_DMA and set irq_handler .receive NRF_SERIAL_EVENT_DRV_ERR event.
Please help to fix issue.
Thanks in advance!
Hello,
I have nrf52 and configure uart0 for connection with external device.
I have configured it as NRF_SERIAL_MODE_DMA and set irq_handler .receive NRF_SERIAL_EVENT_DRV_ERR event.
Please help to fix issue.
Thanks in advance!
Sorry for mistakes I have wrote from mobile.
I have received NRF_SERIAL_EVENT_DRV_ERR event in handler.
Please post code showing how you configure UART and how you send/receive data.
Hi ,
I am receiving/transmitting by nrf_serial_read/nrf_serial_write functions
Bellow are configuration of serial:
static void serial_event_handler(struct nrf_serial_s const * p_serial, nrf_serial_event_t event) { switch (event) { case NRF_SERIAL_EVENT_TX_DONE: break; case NRF_SERIAL_EVENT_RX_DATA: { ret_code_t ret; char c; //Read one char from queue ret = nrf_queue_read(p_serial->p_ctx->p_config->p_queues->p_rxq, &c, sizeof(c)); //printf('%c\r\n', c); //Echo char back to port //(void)nrf_serial_write(p_serial, &c, sizeof(c), NULL, 0); } break; case NRF_SERIAL_EVENT_DRV_ERR: break; case NRF_SERIAL_EVENT_FIFO_ERR: printf("Error\r\n"); break; default: break; } } #define OP_QUEUES_SIZE 3 #define APP_TIMER_PRESCALER NRF_SERIAL_APP_TIMER_PRESCALER #define RBP_UARTE0_RX_PIN_NUMBER NRF_GPIO_PIN_MAP(0,RX_PIN) #define RBP_UARTE0_TX_PIN_NUMBER NRF_GPIO_PIN_MAP(0,TX_PIN) #define RBP_UARTE0_CTS_PIN_NUMBER NRF_UART_PSEL_DISCONNECTED #define RBP_UARTE0_RTS_PIN_NUMBER NRF_UART_PSEL_DISCONNECTED #define RBP_UARTE0_HWFC false NRF_SERIAL_DRV_UART_CONFIG_DEF(m_uart0_drv_config, RBP_UARTE0_RX_PIN_NUMBER, RBP_UARTE0_TX_PIN_NUMBER, RBP_UARTE0_RTS_PIN_NUMBER, RBP_UARTE0_CTS_PIN_NUMBER, RBP_UARTE0_HWFC, NRF_UART_PARITY_EXCLUDED, NRF_UART_BAUDRATE_115200, UART_DEFAULT_CONFIG_IRQ_PRIORITY); #define SERIAL_FIFO_TX_SIZE 1024 #define SERIAL_FIFO_RX_SIZE 1024 NRF_SERIAL_QUEUES_DEF(serial0_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(serial0_buffs, SERIAL_BUFF_TX_SIZE, SERIAL_BUFF_RX_SIZE); NRF_SERIAL_CONFIG_DEF(serial0_config, NRF_SERIAL_MODE_DMA, &serial0_queues, &serial0_buffs, nrf_serial_event_t, NULL); NRF_SERIAL_UART_DEF(serial0_uart, 0);
Can you try debugging the application, set a breakpoint inside the NRF_DRV_UART_EVT_ERROR case in uart_event_handler (line 161 in nrf_serial.c), and check what the error_mask is set to (p_event->data.error.error_mask)?