The USART Asynchronous Driver ============================= The universal synchronous and asynchronous receiver and transmitter (USART) is usually used to transfer data from one device to the other. The USART driver use a ring buffer to store received data. When the USART raise the data received interrupt, this data will be stored in the ring buffer at the next free location. When the ring buffer is full, the next reception will overwrite the oldest data stored in the ring buffer. There is one USART_BUFFER_SIZE macro per used hardware instance, e.g. for SERCOM0 the macro is called SERCOM0_USART_BUFFER_SIZE. On the other hand, when sending data over USART, the data is not copied to an internal buffer, but the data buffer supplied by the user is used. The callback will only be generated at the end of the buffer and not for each byte. User can set action for flow control pins by function usart_set_flow_control, if the flow control is enabled. All the available states are defined in union usart_flow_control_state. Note that user can set state of flow control pins only if automatic support of the flow control is not supported by the hardware. Features -------- * Initialization/de-initialization * Enabling/disabling * Control of the following settings: * Baudrate * UART or USRT communication mode * Character size * Data order * Flow control * Data transfer: transmission, reception * Notifications about transfer done or error case via callbacks * Status information with busy state and transfer count Applications ------------ They are commonly used in a terminal application or low-speed communication between devices. Dependencies ------------ USART capable hardware, with interrupt on each character is sent or received. Concurrency ----------- Write buffer should not be changed while data is being sent. Limitations ----------- * The driver does not support 9-bit character size. * The "USART with ISO7816" mode can be only used in ISO7816 capable devices. And the SCK pin can't be set directly. Application can use a GCLK output PIN to generate SCK. For example to communicate with a SMARTCARD with ISO7816 (F = 372 ; D = 1), and baudrate=9600, the SCK pin output frequency should be config as 372*9600=3571200Hz. More information can be refer to ISO7816 Specification. Known issues and workarounds ---------------------------- N/A