32.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 illustrated in the following figure.

Figure 32-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)
  • Flow control pinout (CTRLA.TXPO = 2)

When the receiver is disabled or the receive FIFO is full, the receiver drives the RTS pin high. This notifies the remote device to stop the 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 receive FIFO goes full, RTS is set immediately and the frame being received is stored in the Shift register until the receive FIFO is no longer full.

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

The current CTS Status is in the STATUS register (STATUS.CTS). Character transmission starts only if STATUS.CTS = 0. When CTS is set, the transmitter completes the ongoing transmission and stops transmitting.

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