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

Receiving data from UART via a peripheral device

Hi

I am working with a Nordic nrf52840dk using segge and sdk 16.

I am using the nordic UART example in examples/peripheral/uart.

The issue I am having is that my data being sent to this device can not be read from the nordic board.

Below is an example of the code going into my Putty terminal from my UART peripheral device.

This device has 4 wire connections RX,TX,CTS and RTS. My connections are listed below:

Note this is the default.

The first thing i tried was running the code with no change to see if app_uart_get(&cr) would pull this data. Unfortunately it did not. It does however, pull data that i type into the terminal.

What I want to do is to take this data from the UART(Sensor data) and store it as a variable for handling later on.

I which to know how I can pull this data from the serial connection.

Side note when the device (UART) is plugged in printing from putty does not run. If I unplug the device then printing works fine.  Below is my main code (from example).

Parents
  • Hi,

    It is not entirely clear to me, but the serial terminal on the PC is via the onboard debugger, right (USB connector on the left of the board)? If you are using that (or have the debugger enabled in general so that IF OFF is not asserted, then you should use different pins for the external UART device. In other words, connect the UART pins between the nRF and another device to some available GPIO pins, and update the pin number defines.

  • Thanks for your response, I am using the onboard usb connector (the one in the top-middle of the board). This is where my putty serial terminal connects to. Jlink CDC UART PORT(COM5)

    I have tried redefining the pinouts to:

    I have then connected my device to those pinout.

    However, I now no longer see that information (from the uart device) to putty, nor can I use a printf command and see the result.

    When I  run this through the dubugger after running the APP_UART_FIFO_INIT and checking the error code it goes to NRF_BREAKPOINT_COND;

    I then get this in the call stack area of the debugger.

    What other details do you need to help resolve this issue?

  • Ok I got that working (the include).

    But now i get undefined reference to app_uart_init on:

    The top line.

  • That is probably because you have not set APP_UART_ENABLED to 1 in sdk_config.h

  • That is not in my sdk_config.h

    Set this though

    // <e> NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver
    //==========================================================
    #ifndef NRFX_UART_ENABLED
    #define NRFX_UART_ENABLED 1

  • Its in the sdk_config.h in the peripheral/uart but, not in the ble_peripheral/uart

    D:\Segger projects\Segger Projects\DeviceDownload2\examples\ble_peripheral\ble_app_beacon/main.c:402: undefined reference to `app_uart_get'

  • Yes, the sdk_config.h files are not always complete. If something is missing, you should add it. In this case, copy it from the example you are using that functionality in where it is missing.

Reply
  • Yes, the sdk_config.h files are not always complete. If something is missing, you should add it. In this case, copy it from the example you are using that functionality in where it is missing.

Children
  • So I included the below code from the UART example you provided (RX).

    But when I build i still get the error undefined reference to app_uart_init

  • Have you made sure to include the file that implements it to the project (app_uart_fifo.c in this case), so that it is compiled? If not, the error is expected when linking.

  • No I have'nt manually included the c file (app_uart_fifo.c).

    How do I do this?

  • I've include it (added an exisitng file) via the project items list.

    But, when I build now i get app_fifo.h no such file or directory. This error runs from app_uart_fifo.c

  • I've tried including the directory which, app_fifo.h resides in.