Functional Description
19.3.8.1.3.2 Hardware Flow Control
Hardware flow control is composed of auto-CTS and auto-RTS. Auto-CTS and auto-RTS can be enabled
and disabled independently by programming the UARTi.UART_EFR[7:6] AUTO_CTS_EN and
AUTO_RTS_EN bit fields, respectively.
With auto-CTS, uarti_cts must be active before the module can transmit data.
Auto-RTS activates the uarti_rts output only when there is enough room in the RX FIFO to receive data. It
deactivates the uarti_rts output when the RX FIFO is sufficiently full. The HALT and RESTORE trigger
levels in the UARTi.UART_TCR register determine the levels at which uarti_rts is activated and
deactivated.
If auto-CTS and auto-RTS are enabled, data transmission does not occur unless the RX FIFO has empty
space. Thus, overrun errors are eliminated during hardware flow control. If auto-CTS and auto-RTS are
not enabled, overrun errors occur if the transmit data rate exceeds the RX FIFO latency.
•
Auto-RTS:
Auto-RTS data flow control originates in the receiver block. The RX FIFO trigger levels used in auto-
RTS are stored in the UARTi.UART_TCR register. uarti_rts is active if the RX FIFO level is below the
HALT trigger level in the UARTi.UART_TCR[3:0] RX_FIFO_TRIG_HALT bit field. When the RX FIFO
HALT trigger level is reached, uarti_rts is deasserted. The sending device (for example, another
UART) can send an additional byte after the trigger level is reached because it may not recognize the
deassertion of RTS until it begins sending the additional byte.
uarti_rts is automatically reasserted when the RX FIFO reaches the RESUME trigger level
programmed by the UARTi.UART_TCR[7:4] RX_FIFO_TRIG_START bit field. This reassertion
requests the sending device to resume transmission.
In this case, uarti_rts is an active-low signal.
•
Auto-CTS:
The transmitter circuitry checks uarti_cts before sending the next data byte. When uarti_cts is active,
the transmitter sends the next byte. To stop the transmitter from sending the next byte, uarti_cts must
be deasserted before the middle of the last stop-bit currently sent.
The auto-CTS function reduces interrupts to the host system. When auto-CTS flow control is enabled,
the uarti_cts state changes do not have to trigger host interrupts because the device automatically
controls its own transmitter. Without auto-CTS, the transmitter sends any data present in the transmit
FIFO, and a receiver overrun error can result.
In this case, uarti_cts is an active-low signal.
19.3.8.1.3.3 Software Flow Control
Software flow control is enabled through the enhanced feature register (UARTi.UART_EFR) and the
modem control register (UARTi.UART_MCR). Different combinations of software flow control can be
enabled by setting different combinations of the UARTi.UART_EFR[3:0] bit field (see
).
Two other enhanced features relate to software flow control:
•
XON any function (UARTi.UART_MCR[5]): Operation resumes after receiving any character after the
XOFF character is recognized. If special character detect is enabled and special character is received
after XOFF1, it does not resume transmission. The special character is stored in the RX FIFO.
NOTE:
The XON-any character is written into the RX FIFO even if it is a software flow character.
•
Special character (UARTi.UART_EFR[5]): Incoming data is compared to XOFF2. When the special
character is detected, the XOFF interrupt (UARTi.UART_IIR[4]) is set, but it does not halt transmission.
The XOFF interrupt is cleared by a read of UARTi.UART_IIR. The special character is transferred to
the RX FIFO. Special character does not work with XON2, XOFF2, or sequential XOFFs.
3476
Universal Asynchronous Receiver/Transmitter (UART)
SPRUH73H – October 2011 – Revised April 2013
Copyright © 2011–2013, Texas Instruments Incorporated