This example demonstrates the hardware handshaking mode (i.e. RTS/CTS) provided by the USART peripherals on SAMV7 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.
This example can be used on SAM V71 Xplained Ultra board directly. It requires a fly some serial lines with hardware control support( TXD and RXD cross over, RTS and CTS cross over) to connect the PINs and PC. Connection: USART0 CTS0 (D39) USART0 RTS0 (D40) USART0 RXD0 (D14) USART0 TXD0 (D15)
The provided program uses hardware handshaking mode to regulate the data rate of an incoming file transfer. A terminal application, such as hyper-terminal, 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 meet or exceed the configurable threshold, the device stops receiving data on the USART. Since no buffer is provided to the XDMA, 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.