Not correct handling RTS signal by GL865 module

5 thoughts on “Not correct handling RTS signal by GL865 module

  1. Hello!

    We tested AT channel of the GL865 module with RTS, CTS signals in CMUX mode and noticed that when our microcontroller set RTS signal to high level during receiving bytes (receiving buffer is full) the module continued sending some bytes (about up to 50 bytes, may be more), it doesn’t stop at once when RTS signal was set to high level. After sending some bytes it just stops.

    In attached zip archive there is a nested file (.logicdata) which made using logic analyzer can be opened by Saleae Logic program. You can find there incorrect behavior of GSM module on RTS signal.

      1. You’ll find in the doc below that a method to prevent the peer system latency in handling flow control signals is to trigger these signals when your own receiving buffer empty/fill levels are 1/4 and 3/4 of the full, respectively.

        Moxa’s Secrets of Flow Control in Serial Communications.

        Cosmin Buhu, thank you for your fast reply.

        Unfortunatly USART periphety of STM32F4 MCU doesn’t support High/Low water level mechanist. It controls RST/CTS on byte base.

        Of course it is possible to implement this mechanist manually. But we need to know the minimum recommended receiving buffer size for imcoming from Telit GL865 UART data, to properly apply your recommendation about water levels value.

        1. Hi Dmitriy,

          RTS on module will be checked is done at every GSM frame (4.61 ms) and the block of the flow is done immediately.
          So, at 115200 8N1 the maximum number of characters (bytes) is 54 (53.1).

          115200 N81 => 115200 bit/s = 11520 char/s = 11.52 char/ms = 53.1 char/frame

          buffer size serial port: 4Kbytes

          The CTS is tied HIGH when data in the buffer are greater then 75% (0x1000 bytes) and tied low when they are lower than 25%.