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.
#define RX_PIN_NUMBER 8
#define TX_PIN_NUMBER 6
#define CTS_PIN_NUMBER 7
#define RTS_PIN_NUMBER 5
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).
const app_uart_comm_params_t comm_params =
#if defined (UARTE_PRESENT)
#if defined (UART_PRESENT)
printf("\r\nUART example started.\r\n");
while (app_uart_get(&cr) != NRF_SUCCESS);
while (app_uart_put(cr) != NRF_SUCCESS);
if (cr == 'q' || cr == 'Q')
// Do nothing.
// This part of the example is just for testing the loopback .
For some reason today when I run it I get an error NRF_BREAKPOINT_COND.
The following comment is the system can only recover with a reset.
I've tried checked the wiring of the device today and…
Yes, that is correct. If you test the debug build you should see a sensible message in the log, and if there is problems with the logging you can inspect the info struct yourself. I think you will find…
I am happy to hear that it works
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:
#define RX_PIN_NUMBER NRF_GPIO_PIN_MAP(0,3)//8
#define TX_PIN_NUMBER NRF_GPIO_PIN_MAP(0,28)//6
#define CTS_PIN_NUMBER NRF_GPIO_PIN_MAP(0,4)//7
#define RTS_PIN_NUMBER NRF_GPIO_PIN_MAP(0,29)//5
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?
I've still got a setup / configuration issue. If i remove all the code from the ble_app_beacon example and paste in the RTT RX code.
It does not output data to the RTT but the RTT code (in the peripheral folder does).
But the ble_beacon code complies
Have you enabled RTT logging in the sdk_config.h file? You need to make sure NRF_LOG_ENABLED and NRF_LOG_BACKEND_RTT_ENABLED are both set to 1, and should also set NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED to 0.
Yeah changed those, i get app fatal error to the rtt
fatal error is gone when i change NRF_LOG_BACKEND_UART_ENABLED from 1 to 0. As this is what it is in the RTT RX sdk_config
Yes, that is also expected. UART logging is default in most BLE examples, and you cannot use the same UART instance for two things at the same time. I should have remembered to mention that as well, but generally, the thing is that there is som many small details that the sensible way of doing this is testing and fixing until it works. And then it does not take much time since every single issue is usually easy to understand from the error (being compile-time, link-time or runtime).
Ok I've gone through the entire sdk_config.h for the RTT and compared it to the ble_app_beacon. Changed a few differences where i found them but, the RTT view still does not have anything inside of it.
There are a few other potential issues as well, for instance if you have enabled deferred logging in sdk_config.h, but do not process those. Can you send me your project, including the main.c file and sdk_config.h som that I can see? Also, do you get an errors or warnings when building? Any interesting things when you debug?
That is the code I am using inside the ble_peripheral folder
I checked your application, and the problem is that you don't process logs in your main loop, so, therefore, you should set NRF_LOG_DEFERRED to 0 in your projects sdk_config.h. With that in place, the RTT log is output correctly.
(I also noticed that you added include paths for specific files rather than for the whole project. Instead of modifying the options for app_uart_fifo.c and main.c, you should instead have added it to the project-wide include path (from Project -> Options...). Not that it really matters, but that is cleaner and easier than adding it for specific files, and is what is done in all our example projects.)
Ok thanks, that seemed to work. Now I'll try merging my ble_Advert code with it