Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF58232/SDK15 Where can I find sample code to use NRFX_UARTE ?

Hi,

I'm looking for an example of how NRFX_UARTE works.

I would like to set up a serial port with EasyDMA to send and receive a thirty bytes.

Thanks in advance for your help.

Best regards, 

Parents Reply Children
  • I don't understand how to get all the interruption that I wish as an event in the handler.

    For example, how to be informed of RXSTARTED for load another buffer as seen in Figure 95 of the nRF52832 datasheet.

    If I use another way of doing this, for example :

        NRF_UARTE0->ENABLE = (UARTE_ENABLE_ENABLE_Enabled << UARTE_ENABLE_ENABLE_Pos);
        NRF_UARTE0->BAUDRATE=NRF_UARTE_BAUDRATE_115200;
        NRF_UARTE0->PSEL.RXD=RX_PIN_NUMBER;
        NRF_UARTE0->PSEL.TXD=TX_PIN_NUMBER;
        NRF_UARTE0->CONFIG=NRF_UARTE_HWFC_DISABLED;
     
        NRF_UARTE0->TXD.PTR = (uint32_t)((uint8_t *)txUarteBuffer);
        NRF_UARTE0->TXD.MAXCNT = sizeof(txUarteBuffer);
        NRF_UARTE0->TASKS_STARTTX = 0;
    
        NRF_UARTE0->RXD.PTR = (uint32_t)((uint8_t *) rxUarteBuffer);
        NRF_UARTE0->RXD.MAXCNT = sizeof(rxUarteBuffer);
        NRF_UARTE0->TASKS_STARTRX = 1;

    How to create an handler for event ?

    if I use : 

        NRF_UARTE0->INTENCLR = 0xFFFFFFFF;
        NRF_UARTE0->INTENSET = NRF_UARTE_INT_ENDRX_MASK;
        NVIC_ClearPendingIRQ(UARTE0_UART0_IRQn);
        NVIC_SetPriority(UARTE0_UART0_IRQn, NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY);
        NVIC_EnableIRQ(UARTE0_UART0_IRQn);

    I have : 

    <error> app: ERROR 3735928559 [Unknown error code] at .......\modules\nrfx\drivers\src\prs\nrfx_prs.c:81

    PC at: 0x0002C49F

    <error> app: End of error report

    Someone can help me ?

    Thanks in advance.

    Best regards,

  • Hi,

     

    It looks like you are mixing bare metal implementation, and using the nrfx_uarte driver. You must disable the nrfx_uarte module in order to use the UARTE peripheral directly.

     

    Best regards,

    Håkon

  • Hi Hakon,

    Thanks for your help.

    For disabling nrfx, I need to modify sdk_config.h and not included nrfx_uarte.h ?

    I need to include just "nrf_uarte.h" ?

    How to create UARTE0_UART0_IRQ in my main software ?

    Sorry for all these questions, but I feel like going round with all these UART driver ...

    Best regards,

  • You need to edit your sdk_config.h file, and set:

    #define NRFX_UARTE_ENABLED 0
    and
    #define NRFX_UART_ENABLED 0
     
    After this, you implement your interrupt handler:
     
    void UARTE0_UART0_IRQHandler(void)
    {
        // Code
    }
     
     
    Best regards,
    Håkon
  • Ok.

    I include only "nrf_uarte.h"

    and with void UARTE0_UART0_IRQHandler(void) I have an error : 

    1> main.o: In function `UARTE0_UART0_IRQHandler':
    1> main.c:729: multiple definition of `UARTE0_UART0_IRQHandler'
    1> Nordic_BLE\nRF5_SDK_15.0.0\modules\nrfx\drivers\src/nrfx_uarte.c:571: first defined here

    If I keep NRFX_PRS_ENABLED = 1 and NRFX_PRS_BOX_4_ENABLED 1, I have an error : 

    1> main.o: In function `UARTE0_UART0_IRQHandler':
    1> main.c:728: multiple definition of `UARTE0_UART0_IRQHandler'
    1> Nordic_BLE\nRF5_SDK_15.0.0\modules\nrfx\drivers\src\prs/nrfx_prs.c:81: first defined here

Related