31.6.3.2 Hardware Handshaking

The USART features an out-of-band hardware handshaking flow control mechanism, implemented by connecting the RTS and CTS pins with the remote device, as shown in the figure below.

Figure 31-7. Connection with a Remote Device for Hardware Handshaking

Hardware handshaking is only available in the following configuration:

  • USART with internal clock (CTRLA.MODE = 1),
  • Asynchronous mode (CTRLA.CMODE = 0),
  • and Flow control pinout (CTRLA.TXPO = 2).

When the receiver is disabled or the two-level RX buffer is full, the receiver will drive the RTS pin high. This notifies the remote device to stop transfer after the ongoing transmission. Enabling and disabling the receiver by writing to CTRLB.RXEN will set/clear the RTS pin after a synchronization delay. When the two-level RX buffer goes full, RTS will be set immediately and the frame being received will be stored in the shift register until the two-level RX buffer is no longer full.

Figure 31-8. Receiver Behavior when Operating with Hardware Handshaking

The current CTS Status is in the STATUS register (STATUS.CTS). Character transmission will start only if STATUS.CTS=0. When CTS is set, the transmitter will complete the ongoing transmission and stop transmitting.

Figure 31-9. Transmitter Behavior when Operating with Hardware Handshaking