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

nrf52832: ERRORSRC 0xC with UARTE0 when starting RX.

Hello everyone,

I am trying to implement UARTE on a custom board embedding an nRF52832, as part of an upgrade from SDK 12 to SDK 15. The nRF52832 is communicating via UART with a GSM chip, sending it messages and receiving some, with different lengths. I am using FreeRTOS.

In order to do that, I checked the example "experimental_libuarte" that is present in the SDK 15.2 file (nRF5_SDK_15.2.0_9412b96/examples/peripheral/experimental_libuarte).

But after implementing it in my project, I always have the same error: as soon as the STARTRX flag is raised, when calling "nrf_libuarte_async_enable(1)", the EVENTS_ERROR register pass to 1, and the ERRORSRC register shows 0xC, so framing and break errors. This happens before anything is send or retrieved. 

I then tried to run only the example program, so without SoftDevice and FreeRTOS, and I have the same error.

After configuration and initialization of UARTE0, everything seems to be fine with UARTE0 register.

r

But as soon as the enabling is done by calling "nrf_libuarte_async_enable(1)", the error appears.

The error is more precisely thrown as soon as the STARTRX flag is raised, inside the "nrf_libuarte_async_enable()" function.

At first I thought that it might be a hardware error, that could for example put the RX line to 0V, interpreted as sending an infinite amount of "0", but it is not : the program worked well when using UART FIFO before, and the RX line is driven high by the nRF52832.

I am adding the main file here, that I slightly modified to match my pins settings and to initialize external clock and gsm chip :

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include "nrf_libuarte_async.h"
#include <bsp.h>
#include "nrf_delay.h"
#define GSM_TXD_PIN 30
#define GSM_RXD_PIN 29
#define GSM_DTR_PIN 28
#define GSM_RI_PIN 27
#define GSM_CTS_PIN 26
#define GSM_RTS_PIN 25
#define GSM_PWR_PIN 31
#define ENABLE_4V_PIN 6
static uint8_t text[] = "UART example started.\r\n Loopback:\r\n";
static uint8_t text_size = sizeof(text);
void uart_event_handler(nrf_libuarte_async_evt_t * p_evt)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Thank you for your help !

Parents
  • I have exactly the same problem. I am using a Particle Boron board which has an nRF52840 and an u-blox SARA U201 2G/3G modem on it. I modified the uart example program for dev board PCA10056 to establish the uart communication between the nRF52840 and the modem. After calling APP_UART_FIFO_INIT(), an app uart communication error occurs with the error code 0x0C. 

  • Well, when I use app_uart_fifo library instead of libuarte and libuarte_async libraries it actually works for me !

Reply Children
No Data