The Baud Rate Generator (BRG) is a 16-bit timer that is dedicated to the support of the UART operation.
The UxBRG register pair determines the period of the free running baud rate timer. The multiplier of the baud rate period is determined by the BRGS bit.
The high baud rate range (BRGS = 1) is intended to extend the baud rate range up to a faster rate when the desired baud rate is not possible otherwise and to improve the baud rate resolution at high baud rates. Using the normal baud rate range (BRGS = 0) is recommended when the desired baud rate is achievable with either range.
1 is not supported in the DALI mode.Writing a new value to UxBRG causes the BRG timer to be reset (or cleared). This ensures that the BRG does not wait for a timer overflow before outputting the new baud rate.
If the system clock is changed during an active receive operation, a receive error or data loss may result. To avoid this problem, check the status of the RXIDL bit to make sure that the receive operation is Idle before changing the system clock.
| BRGS | BRG/UART Mode | Baud Rate Formula |
|---|---|---|
1 |
High Rate | Fosc/[4(UxBRG+1)] |
0 |
Normal Rate | Fosc/[16(UxBRG+1)] |
For a device with Fosc of 16 MHz, desired baud rate of 9600, asynchronous mode, and BRGS = 0.
Solving for UxBRG: