USART Clocking and Baud rates

In order to use the USART, clocking details must be defined such as setting up the BRG, and typically also setting up the FRG. See c-ConfiguretheUSARTclockandbaudrate.html#BEHJGEFD__BEHGJBIC.

Fractional Rate Generator (FRG)

The Fractional Rate Generator can be used to obtain more precise baud rates when the peripheral clock is not a good multiple of standard (or otherwise desirable) baud rates.

The FRG is typically set up to produce an integer multiple of the highest required baud rate, or a very close approximation. The BRG is then used to obtain the actual baud rate needed.

The FRG register controls the USART Fractional Rate Generator, which provides the base clock for the USART. The Fractional Rate Generator creates a lower rate output clock by suppressing selected input clocks. When not needed, the value of 0 can be set for the FRG, which will then not divide the input clock.

The FRG output clock is defined as the inputs clock divided by 1 + (MULT / 256), where MULT is in the range of 1 to 255. This allows producing an output clock that ranges from the input clock divided by 1+1/256 to 1+255/256 (just more than 1 to just less than 2). Any further division can be done specific to each USART block by the integer BRG divider contained in each USART.

The base clock produced by the FRG cannot be perfectly symmetrical, so the FRG distributes the output clocks as evenly as is practical. Since the USART normally uses 16x overclocking, the jitter in the fractional rate clock in these cases tends to disappear in the ultimate USART output.

For setting up the fractional divider use the following registers:

SYSCON registerName = UARTFRGDIV addressOffset = 0x0F0

SYSCON USART fractional generator multiplier value register (UARTFRGMULT, address 0x4004 80F4) bit description

For details see USART Configure the USART clock and baud rate.

Baud Rate Generator (BRG)

The Baud Rate Generator (see USART BRG addressOffset = 0x020) is used to divide the base clock to produce a rate 16 times the desired baud rate. Typically, standard baud rates can be generated by integer divides of higher baud rates.

Baud rate calculations

Base clock rates are 16x for asynchronous mode and 1x for synchronous mode.