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

Error 1 NRF_ERROR_SVC_HANDLER_MISSING = ERRORSRC register OVERRUN on nRF52832 UART at higher baud rate when using with soft device

Aim: transfer large data coming from UART to nRF52832 over BLE 5.0 as fast as possible. Want to use 921600 baud rate in the case given below. 

Scenario: 

SDK: 15.2.0 

Device: nRF52832

SoftDevice: S132 6.1.0 

Tested speed of BLE is  around 1070 Kbps between nRF52832 and android application without any UART. The program is build on the top of Nordic Official Image transfer example( Image transfer example is build on the top of ble uart example).  There is no problem is BLE sending mechanism and Android application. And then I modified this program to work like this

nRF52832 sends S on UART 

on UART 244 bytes are received 

nRF52832 sends 244 bytes over BLE 5.0 to android application

just after sending nRF52832 sends again S on UART and cycle continues

if there is nRF resources error on sending over ble, it takes break and until it receives ble tx completion event and then, it sends S again and the cycle continues

 UART is not using HW Flow Control pins( because of the design we cant use four pins). This program works fine at 115200 but when I change at 250000 it throws error after sending some data or immediately in the starting like this

0> <error> app: ERROR 1 [NRF_ERROR_SVC_HANDLER_MISSING] at ..\..\..\main.c:674
0> PC at: 0x0002C879

then I did lot of testing also 

- without using soft device it works fine at 921600 baud rate.

- Modified program like on BLE tx completion event, nRF52832 sends S on UART to get 244 bytes and send 244 bytes over ble, after sending it does nothing just wait for tx completion event and after get event it sends S on uart and cycle continues(unlikely in the above case, just after sending over BLE it doesnt wait for TX completion event, it sends S on UART and gets 244 bytes.). In this case it works on 921600 sometimes but when i edit program little bit, it starts throwing same error at the starting of receiving 244 bytes. Here it throws error unpredictably. 

- I checked that EasyDMA is enabled or not in sdk_config.h file but still have confusion, so please check also that EASY DMA is enabled or not. 

Please tell me how to remove that error. I want to get data on UART at 921600 baud rate and send this data over BLE 5.0 simultaneously. I did some calculation and the possible achievable throughput is 800 Kbps (getting data from uart at 921600 and sending over ble). I want to achieve at least 700 Kbps. Please suggest me how can i use EasyDMA to make this possible. how can I use buffers to get maximum speed. 

main.c file

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* Copyright (c) 2014 - 2018, Nordic Semiconductor ASA
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form, except as embedded into a Nordic
* Semiconductor ASA integrated circuit in a product or a software update for
* such product, must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
       

sdk_config.h file (in other files there is no error.. )

https://drive.google.com/open?id=19ca1ZeuNQ383CDy4dgYxmrEJ_xjBhlns  

Please help me...