Hi there,
I'm using nrf52840 DK and Custom board, SDK 15.1.0, Segger Embedded Studio(SES v5.20)
my issue is when i receive data from uart interrupt based on serial uartes example, i can only receive one char at a time. that means if i store that data in a char variable and should add to the char array then its works fine, but i want to read the complete data on single shot, so how can i do that,? i'm i doing anything wrong.
void GSM_InterruptHandler(nrf_serial_t const *p_serial, nrf_serial_event_t event) { static uint8_t index1=0; char bb; switch (event) { case NRF_SERIAL_EVENT_RX_DATA: if((nrf_serial_read(&serial0_uarte, &bb, sizeof(bb), &readed_size, 500))==NRF_SUCCESS) { gsm_d.RxBuf[index1++] = bb; rx_done = true; } break; case NRF_SERIAL_EVENT_TX_DONE: tx_done = true; break; case NRF_SERIAL_EVENT_DRV_ERR: APP_ERROR_CHECK(nrf_serial_uninit(&serial0_uarte)); APP_ERROR_CHECK(nrf_serial_init(&serial0_uarte, &m_uarte1_drv_config, &serial0_config)); break; case NRF_SERIAL_EVENT_FIFO_ERR: break; default: break; } }
Im reading the rx buff like this, but its triggers multiple times for every rx event, and i need like this
case NRF_SERIAL_EVENT_RX_DATA: if((nrf_serial_read(&serial0_uarte, &gsm_d.RxBuf, sizeof(gsm_d.RxBuf), &readed_size, NRF_SERIAL_MAX_TIMEOUT))==NRF_SUCCESS) { rx_done = true; } break;
so please help me
Thanks in advance
Best Regards
Raj