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

LIBUARTE on ble_app_uart with DMA

Hi All,

I have 2 boards nrf52840 pc10056 and I need to run ble_app_uart using LIBUARTE with DMA in order to obtain a more robust uart communication

I would like to use an uart DMA that will work in background saving the byte received in a buffer (fixed length) and once that it is full having an interrupt where I can check this buffer and send it to the central unit.

Is there any easy way to set  everything up and change the code of ble_app_uart? Any suggestion??

Thanks

  • Please check the following topic about libuarte:

    https://devzone.nordicsemi.com/f/nordic-q-a/48321/using-libuarte-during-flash-operations

    We also had some issues with libuarte in combination with soft device. There seemed to be some issues in the code. Nordic provided some patches for this code in this topic.

  • Hello,

    I have changed the priority interrupt in libuarte_async.c from 1 to 5 and it now works. Work means that it does not stop anymore sending data from the peripheral to the central. The problem now is how these data are sent, because the buffer that I receive from the UART (peripheral side) is changing continuously length.....even if the packet length is fixed and the buffer has same size or bigger (I tried every thing).

    Today I saw the post of  RoyCreemers, I thought could be same problem so I did what was indicated there....result is that it does not work.

    Another problem (very big actually) is that the board works just in debug mode. The weird thing is that even the experiment_libuarte that is in SDK_15.3 does not work in modality DEBUG (On segger embedded studio), but just on Release. Very strange stuff. I think I give up, I cannot spend more time on it even because every day I discover a new bug.

    Anyway thanks a lot for your help and your time. 

    Regards

  • I'm working on a projekt where I also want to use the libuarte but now i have the same issue with the "not enabled time instance" but i have set the instace in sdk_config to true. Can yu please share what you have done to fix this issue?

  • Hello,
    I am working on a project and need to use DMA and detect end of data reception before the DMA buffer is full. Therefore I tried to start with libuarte.

    I have added in sdk_config.h

    #define NRF_LIBUARTE_UARTE0 1

    #define NRFX_PRS_BOX_4_ENABLED 0

    In added

    #include "nrf_libuarte_async.h"

    NRF_LIBUARTE_ASYNC_DEFINE(libuarte, 0, 0, 0, NRF_LIBUARTE_PERIPHERAL_NOT_USED, 255, 3);

    to my source code and when I compile I get many compile errors.

    I guess I need to define some timers

    also I get something like:

    7> ../../../../../../components/libraries/balloc/nrf_balloc.h:219:9: sorry, unimplemented: non-trivial designated initializers not supported

    So can you tell me what configuration e.g. in sdk_config.h you have used to be able  to come some steps further?

    I appreciate any hint.

    Thanks in advance

    Thomas

  • I suggest creating a ticket of your own where you describe your problem in detail. If you think this case is relevant, feel free to link to it in your ticket.

    This will make it much easier to get a good overview, as starting over in an already existing thread can get messy quickly.

    Best regards,

    Simon

Related