27.3.3.2.5 Auto-Baud
The auto-baud feature lets the USART configure its BAUD register based on input from a communication device, which allows the device to communicate autonomously with multiple devices communicating with different baud rates. The USART peripheral features two auto-baud modes: Generic Auto-Baud mode and LIN Constrained Auto-Baud mode.
Both auto-baud modes must receive an auto-baud frame, as seen in the figure below.
The break field is detected when 12 or more consecutive low cycles are sampled and notifies the USART that it is about to receive the synchronization field. After the break field, when the Start bit of the synchronization field is detected, a counter running at the peripheral clock speed is started. The counter is then incremented for the next eight Tbit of the synchronization field. When all eight bits are sampled, the counter is stopped. The resulting counter value is in effect the new BAUD register value.
When the USART Receive mode is set to GENAUTO (the RXMODE bit field in the USARTn.CTRLB
register), the Generic Auto-Baud mode is enabled. In this mode, one can set the Wait For
Break (WFB) bit in the USARTn.STATUS register to enable detection of a break field of
any length (that is, also shorter than 12 cycles). This makes it possible to set an
arbitrary new baud rate without knowing the current baud rate. If the measured sync
field results in a valid BAUD value (0x0064
- 0xFFFF
),
the BAUD register is updated.
When USART Receive mode is set to LINAUTO mode (the RXMODE bit field in the USARTn.CTRLB
register), it follows the LIN format. The WFB functionality of the Generic Auto-Baud
mode is not compatible with the LIN Constrained Auto-Baud mode, which means that the
received signal must be low for 12 peripheral clock cycles or more for a break field to
be valid. When a break field has been detected, the USART expects the following
synchronization field character to be 0x55
. If the received
synchronization field character is not 0x55
, the Inconsistent Sync
Field Error Flag (the ISFIF bit in the USARTn.STATUS register) is set, and the baud rate
is unchanged.