[BG96] Usage of different UARTS


I am currently planning a design based on a Microchip AT SAM microcontroller for interfacing CAN and a Quectel BG96 RF module.

I can spend two UARTs on the microcontroller to connect them to the BG96 module. For the first one for sure I will select the primary UART to be able to control the BG96 module.

Is there a description of what the other two UARTs are used for? I am trying to decide whether to connect the DEBUG UART or UART3 to the microcontroller.

One possibility that I would really like to have in the design is using a QuecOpen program to communicate over MQTT and have a lean interface to my microcontroller to exchange payload data only. This would limit the necessity of implementing the AT command set to starting up and shutting down while the entire communication logic could run on the BG96 chip, freeing up a lot of resources on the main MCU.

What is the UART3 interface used for by default? Is there already any traffic on it or could I use it for my own communication protocol between MCU and a QuecOpen application?

In case UART3 is used for NMEA output (as it is called NMEA port in some datasheet): Is it in that case possible to mute NMEA output on that port in order to not disturb other communication while GNSS data is sent out through UART1?


thanks for your question , based on your description , you have the deep understanding about quecopen solution ,

about uart port, in fact , there is a different hw design between these .

if you use standard solution ( AT solution) , there are 3 Uarts totally availble .

if you use open solution (API solution) , There are 4 Uarts totally available

Thank you for your reply. What I would like to know is the UART assignment in API mode:

You wrote there are four UARTs in API mode.

I assume the “main UART” is a virtual one that goes from the user application to the main application, right? So my user application can send AT commands to the main application using main UART.

UART1 to UART3 are then mapped to the three hardware UART instances. So, if I push something to UART1 from my open solution app, it will be shown on the primary UART interface along with URCs and response codes from main application.

If I send something from app to UART 2, it will be visible on Debug UART output (but mixed with debug messages from OS) and if I send something from app to UART3 it will be shown on NMEA interface.

Is this correct? And is it possible to suppress all output from the main application? So for example if I want to use UART3 for communication to my peripheral, can I then switch off NMEA output on that port, so I have exclusive access to that UART from my application?