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

UART usage - I cannot see the light in the SDK

In advance I would like to say I’m sorry for the frustration that this message reflects…Event though I have been using the UART for some time, adding more functionality makes me search documentation for a UART description, and this makes me really frustrated.

I have what I think is a relatively simple need, I want to use UART0 and UART1 on a nRF32840 (both for some RS485 communication).

 

I do not care if it is NRF_DRV, NRFX or APP layer, anything that can be made to work will do!

 

Originally, I thought that selecting between NRF or NRFX was simple; documents suggest that NRF is legacy and I should use the "new" NRFX layer.

So selecting NRFX_UART_ENABLE would be logical and then including nrfx_uart.c driver file.....

But nothing is that simple with this SDK.... there always seems to be a mess of dependencies between configuration macros and files you need to include. and absolutely nothing that documents it (except heavy reading of header files of course ;-). I would love to see. “If you want this layer, tick this in SDK config and include ….”)

Well initial suggestion as above for NRFX just creates a bunch of errors…. so what is the combination needed...

It seems I can choose between using:

1 nrf_drv_uart

2 nrfx_uart

3 nrfx_uarte

4 app_uart

Can anyone suggest settings that will make just one of these options work, it would be highly appreciated and hopefully spare me a lot of testing and experimentation.

What I’m looking for what is a combination of what should be in SDK Config for

NRFX_UARTE section

NRFX_UART section

NRF_DRV (UART_ENABLED) section

APP_UART_ENABLED (+APP_FIFO_ENABLED) section

And any other sections that have dependencies!

I want to be able to call ???_init, send one or more bytes and receive bytes one by one

Parents Reply
  • Unfortunately it is not really an option for me at this point. There seems to be conflicts with the nRF SDK code and I am unable to take the time to solve it. (the uart code looks really effective though).

    Removing all nRF uart stuff will still give linking problems because of nrfx_prc.c doing the interrupt handling. I cannot remove it as it also handles twi that I am using. 

    So it more a matter of resources right now, and existing codebase.

    So struck back to start again :-(

Children
  • I used it with the SDK no problem.  uart interrupt is independent.  It should not interfere with i2c.  Only i2c & spi have shared interrupt.  Just make sure you disable uart in the sdk_config.h

    I looked at the nrf_prs.c, not really useful.  You can just disable it and everything still work fine.  embedded system is not a PC.  We know what are the io map we use.  There no sharing switch between them and the firmware is not an App that you load at runtime neither.  I really don't see the usefulness of that file.

Related