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

jLink USB-UART chip on nRF9160dk malfunction

We are currently experiencing malfunction with the big chip on nRF9160dk board, which provides USB-UART and jLink functionality.
After 30 minutes, to a few hours, we either stop receiving data from one or both of the USB-UARTs, or the data is garbled due to lost bytes.

Currently nRF9160 is using a modified version of the GPS sample, which sends a copy of the NMEA strings over UART1, to UART0.RX on nRF52840, while UART0.TX connects to the USB-UART on the computer. All samples and boards are attached to the case, except for the app running on nRF52840, which is provided as a binary image. The app is very simple: read from RX and write to TX. The source code we are using is shown on the video, but relays on a proprietary UART driver, which we cannot provide. The driver is very well tested and uses DMA to insure optimal performance and no drops of packets.

Following all tests from the videos linked below, we were able to exclude both CPUs: 9160 and 52840, as well as the software running on them. This leaves the chip providing USB-UART functionality as the only possible point of failure, confirmed after restarting power to the board.

https://youtu.be/04RJwDOnUE8
https://youtu.be/pwJoxr1ODTk
https://youtu.be/Dc6Hxk1oKuQ

8780.2021-03-17.7z

6303.nRF52840 UART-loopback.hex

3806.nRF52840 UART-loopback.7z

Parents Reply Children
  • You can make sure that flow control is enabled in DTS by checking the file <application>/<build folder>/zephyr/zephyr.dts

    Would you be able to upload the new hex files (connectivity_bridge_dk.uart + gps_dk.hex) where flow control is enabled and I will forward them internally.

    Best regards,

    Simon

  • Hello Simon, and please excuse me for replaying late.

    I was currently working to restore some features like power saving when no devices are connected, and UART pins from DTS. I will look into implementing flow control and connecting the proper pins today and I will likely be able to release the apps you requested tomorrow. I also plan to provide you with the complete source code, so you can test it internally.

  • Sounds good. Hopefully enabling flow control will resolve the issue.

  • Hello Simon!

    I spent the last few days carefully examining the datasheets, then implemented and tested flow control. I enabled it for: nRF9160 UART0-1, as well as nRF52840 UART0-1. Unfortunately my expectations were right: it does not help. As a reminder, the first path is reliable, the second is not:

    nRF9160  UART1 TX  18 → 20 nRF52840 UART0 RX → BLE
    nRF9160  UART1 TX  18 → 20 nRF52840 UART0 RX → nRF52840 UART0 TX 05 → VCOM1 RX

    Restarting nRF9160 or nRF52840 does not help. Using a different host does not help, I tried Windows, macOS, OpenWRT. I used three different boards, all are affected. This should isolate the board controller which provides j-link and virtual COM ports as the only possible cause.

    I also improved the UART miniport driver integration with Zephyr: power saving, baud-rate configuration and the entire connectivity bridge functionality is now available with my driver. You can switch between UART miniport (prj.conf) or NRFX UART (prj.nrfx.conf) by changing the project file, and everything functions exactly the same, except my driver is reliable while with Nordic's driver connectivity bridge will eventually malfunction, as you know from the other support case. The UART pin configuration, as well as status, current-speed, and hw-flow-control are now obtained from the board .dts configuration. I will send you the source code in a private message.

Related