PIC32 Universal Synchronous Asynchronous Receiver Transmitter (USART) Overview
The Universal Synchronous Asynchronous Receiver Transmitter (USART) module is one of the serial I/O modules available in PIC32 MCU devices.
The USART is a full-duplex, synchronous/asynchronous communication channel that communicates with peripheral devices and personal computers through protocols, such as RS-232, RS-485, LIN, and Infrared Devices (IrDA). The module also supports the hardware flow control option, with UxCTS and UxRTS pins, and also includes an IrDA encoder and decoder.
Hardware Abstraction Model
Baud Rate Generator
The Baud Rate Generator controls the timing of UART transmissions and receptions when in Asynchronous mode. The desired baud rate can be programmed in the baud rate controller or, the baud rate controller can be configured to determine the baud rate of the transmitting device automatically.
USART Transmitter/Receiver
The Transmitter and Receiver are capable of handling 8-bit or 9-bit data, which can be programmed in the control logic. The 9th bit is used to transfer the address or the parity. Enable 9-bit mode if the hardware is to be used for address or parity detection.
USART Control
The Status and Control logic, provide the ability to control different ways the transmitter, receiver, and the baud rate controller can function. It also can provide the status of the transmitter, receiver, or the baud rate controller.
The Hardware Flow Control uses CTS and the RTS lines to perform handshaking. Flow control is the ability to stop, and then restart the flow without any loss of bytes. Flow control is needed for modems and other hardware to allow a jump in instantaneous flow rates.
The USART module provides two types of infrared USART support: one is the IrDA clock output to support the external IrDA encoder and decoder, and the other is the full implementation of the IrDA encoder and decoder.
Learn More
For more detail on the USART module for a specific PIC32 device, please view the family reference manual chapter for that device, for example: