English
Language : 

PIC18F6520-I Datasheet, PDF (202/380 Pages) Micrel Semiconductor – 64/80-Pin High-Performance, 256 Kbit to 1 Mbit Enhanced Flash Microcontrollers with A/D
PIC18F6520/8520/6620/8620/6720/8720
18.1 USART Baud Rate Generator
(BRG)
The BRG supports both the Asynchronous and
Synchronous modes of the USARTs. It is a dedicated
8-bit Baud Rate Generator. The SPBRG register
controls the period of a free running 8-bit timer. In Asyn-
chronous mode, bit BRGH (TXSTAx<2>) also controls
the baud rate. In Synchronous mode, bit BRGH is
ignored. Table 18-1 shows the formula for computation
of the baud rate for different USART modes, which only
apply in Master mode (internal clock).
Given the desired baud rate and FOSC, the nearest
integer value for the SPBRGx register can be calcu-
lated using the formula in Table 18-1. From this, the
error in baud rate can be determined.
Example 18-1 shows the calculation of the baud rate
error for the following conditions:
• FOSC = 16 MHz
• Desired Baud Rate = 9600
• BRGH = 0
• SYNC = 0
It may be advantageous to use the high baud rate
(BRGH = 1) even for slower baud clocks. This is
because the equation in Example 18-1 can reduce the
baud rate error in some cases.
Writing a new value to the SPBRGx register causes the
BRG timer to be reset (or cleared). This ensures the
BRG does not wait for a timer overflow before
outputting the new baud rate.
18.1.1 SAMPLING
The data on the RXx pin (either RC7/RX1/DT1 or RG2/
RX2/DT2) is sampled three times by a majority detect
circuit to determine if a high or a low level is present at
the pin.
EXAMPLE 18-1: CALCULATING BAUD RATE ERROR
Desired Baud Rate
= FOSC/(64 (X + 1))
Solving for X:
X
= ((FOSC/Desired Baud Rate)/64 ) – 1
X
= ((16000000/9600)/64) – 1
X
= [25.042] = 25
Calculated Baud Rate = 16000000/(64 (25 + 1))
= 9615
Error
= (Calculated Baud Rate – Desired Baud Rate)
Desired Baud Rate
= (9615 – 9600)/9600
= 0.16%
TABLE 18-1: BAUD RATE FORMULA
SYNC
BRGH = 0 (Low Speed)
0
(Asynchronous) Baud Rate = FOSC/(64(X + 1))
1
(Synchronous) Baud Rate = FOSC/(4(X + 1))
Legend: X = value in SPBRGx (0 to 255)
BRGH = 1 (High Speed)
Baud Rate = FOSC/(16(X + 1))
N/A
TABLE 18-2: REGISTERS ASSOCIATED WITH BAUD RATE GENERATOR
Name
Bit 7 Bit 6 Bit 5 Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on
all other
Resets
TXSTAx CSRC TX9 TXEN SYNC — BRGH TRMT TX9D 0000 -010 0000 -010
RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
SPBRGx Baud Rate Generator Register
0000 0000 0000 0000
Legend: x = unknown, – = unimplemented, read as ‘0’. Shaded cells are not used by the BRG.
Note 1: Register names generically refer to both of the identically named registers for the two USART modules,
where ‘x’ indicates the particular module. Bit names and Reset values are identical between modules.
DS39609B-page 200
 2004 Microchip Technology Inc.