Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
USART Hardware Handshaking Example
\par Purpose

This example demonstrates the hardware handshaking mode (i.e., RTS/CTS)
provided by the USART peripherals on SAM microcontrollers. The practical
use of hardware handshaking is that it allows to stop transfer on the USART
without losing any data in the process. This is very useful for applications
that need to program slow memories for example.

\par Requirements

This example can be used on all SAM EK. 
It requires a serial line with hardware control support (TXD and RXD cross 
over, RTS and CTS cross over) to connect the board and PC.

\par Description

The provided program uses hardware handshaking mode to regulate the data
rate of an incoming file transfer. A terminal application, such as
HyperTerminal, is used to send a text file to the device (without any
protocol such as X-modem). The device will enforce the configured
bytes per second (bps) rate with its Request To Send (RTS) line.

Whenever the data rate meets or exceeds the configurable threshold, the device
stops receiving data on the USART. Since no buffer is provided to the PDC,
this will set the RTS line, telling the computer to stop sending data. Each
second, the current data rate and total number of bytes received are
displayed; the transfer is also restarted.

Note that the device may receive slightly less bytes than the actual file
size, depending on the nature of the file. This does NOT mean that bytes
have been lost: this is simply an issue with how line breaks are transmitted
by the terminal. It is therefore better to use binary files, as they most
often do not contain line breaks. For example, send one of the object files
generated by the compiler.

\par Usage

-# Build the program and download it into the evaluation board.
-# Connect a serial cable to the USART port on the evaluation kit.
-# On the computer, open and configure a terminal application (e.g.,
   HyperTerminal on Microsoft Windows) with these settings:
      - 115200 bauds
      - 8 data bits
      - No parity
      - 1 stop bit
      - Hardware flow control (RTS/CTS)
-# Start the application. The following traces shall appear on the terminal:
-- USART Hardware Handshaking Example --
-- xxxxxx-xx
-- Compiled: xxx xx xxxx xx:xx:xx --
Bps: 0; Tot: 0
  1. Send a file in text format to the device. On HyperTerminal, this is done by selecting "Transfer -> Send Text File" (this does not prevent you from sending binary files). The transfer will start and the device will update the bps and total counts on the terminal.
  2. Whenever the transfer is complete, the total number of bytes received should match the size of the sent file (unless it is a text file, see explanation in description section).