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

UART in nrf52832

Hi I am using  UART code from nRF5_SDK_16.0.0_98a08e2\examples\peripheral.

I have checked loop back with default UART pins,which are 5,6,7,8.

Now I want to interface some sensor (Hardwired ) with this PCA10040 DK. Hence I read on Nordic community that I have to use different GPIOs.

I have changed 5,6,7,8 to 28,29,30,31 and 19,20,22,23 but in both cases loop back did not work.(I did not get data on serial port).

What am I doing wrong ? Please help

  • Hi,I am waiting for your reply.thanks in advance

  • Hello again,

    Sorry for my late reply - there was a national holiday in Norway yesterday.

    Gecko said:
    2.I have read in multiple nordic posts that 5,6,7,8 are connected to Interface MCU (PCA10040) hence these pins can not be used if I want to interface (Vibration sensor in my case) external hardware on UART.

    Well, yes and no. The pins are connected to the virtual COM port, but you do not have to break the solderbridges to use them as interface to another device. If you are going to use the UART as an interface to another device, then you may not use UART as the logging backend at the same time. I would therefor suggest using the RTT backend for logging.
    As @Awneil also emphasized, you do not have to break the solderbridges to use the UART to interface another device - the GPIOs are tri-stated when nothing is connected to the virtual COM port.
    To emphasize this, if you are running your application and communicating with your other device and then decide to open Putty to have a look at what is going on, it will not work.

    Gecko said:
    3. There is no NRF_LOG_BACKEND_RTT_ENABLED in sdk_config.h. For your information I am using uart example from nRF5_SDK_16.0.0_98a08e2 and installed mesh sdk is v4.0. 

    You would have to add this to your SDK config yourself.
    For an example on how to configure this, please see the ble peripheral Nordic UART example sdk_config.
    Once you have RTT backend enabled(and UART backend disabled), you may use the Segger debug terminal, or the J-Link RTT Viewer application to see the logs.

    Gecko said:

    if I break those bridges, I understand I will not get any logs on COM PORT (putty) then in that case how should I debug my loopback test ?

    Which logs I can use to print my data on debug terminal

    This is correct, but you do not have to break those bridges to use the UART to interface another device.
    You may not have any logs on your COM port either way if you intend to use the UART to interface with another device, since there is only 1 UART instance on the nRF52832 DK.
    Changing pins of the UART will not enable you to have both UART logs and UART device interface at the same time. You may however enable RTT backend for the logger module, instead of UART, which should solve your issue.

    Best regards,
    Karl

  • Hi Karl,

    I have enabled RTT backend for logger module.And I could print logs on SES Debug Terminal using "NRF_LOG_INFO".

    So do you mean I can interface my external sensor with UART pins 5,6,7,8 without breaking those bridges and print the logs (Received UART data) on Debug Terminal ? 

    thanks in advance.

  • Hello,

    Gecko said:
    I have enabled RTT backend for logger module.And I could print logs on SES Debug Terminal using "NRF_LOG_INFO".

    Great, I am happy to hear that you got it working with RTT!

    Gecko said:
    So do you mean I can interface my external sensor with UART pins 5,6,7,8 without breaking those bridges and print the logs (Received UART data) on Debug Terminal ? 

    Yes, as long as you do not open the virtual COM port, then you may use those same pins to connect to interface with another device. You may then use the logger module to see the received UART communication on your RTT viewer.
    You do not have to break any solderbridges for this to work.

    Best regards,
    Karl

  • Okay thanks.

    Do you have any example code with data reception from uart interfaced device.

    Because I understand app_uart_get function is used to receive the  data from BLE where as in my case I will be receiving data from hardwired UART connections.

    OR maybe some example where I can do loopback and print data on debug terminal (not USB PORT)

Related