Datasheet

2010-2016 Microchip Technology Inc. DS40001412G-page 251
PIC18(L)F2X/4XK22
15.7 Baud Rate Generator
The MSSPx module has a Baud Rate Generator
available for clock generation in both I
2
C and SPI
Master modes. The Baud Rate Generator (BRG)
reload value is placed in the SSPxADD register
(Register 15-7). When a write occurs to SSPxBUF, the
Baud Rate Generator will automatically begin counting
down.
Once the given operation is complete, the internal clock
will automatically stop counting and the clock pin will
remain in its last state.
An internal signal “Reload” in Figure 15-40 triggers the
value from SSPxADD to be loaded into the BRG
counter.
This occurs twice for each oscillation of the module
clock line. The logic dictating when the reload signal is
asserted depends on the mode the MSSPx is being
operated in.
Table 15-3 demonstrates clock rates based on
instruction cycles and the BRG value loaded into
SSPxADD.
EQUATION 15-1: FCLOCK FORMULA
FIGURE 15-40: BAUD RATE GENERATOR BLOCK DIAGRAM
FCLOCK
FOSC
SSPxADD 1+4
-------------------------------------------------=
Note: Values of 0x00, 0x01 and 0x02 are not valid
for SSPxADD when used as a Baud Rate
Generator for I
2
C. This is an implementation
limitation.
SSPxM<3:0>
BRG Down Counter
SSPxCLK
F
OSC/2
SSPxADD<7:0>
SSPxM<3:0>
SCLx
Reload
Control
Reload
TABLE 15-3: MSSPx CLOCK RATE W/BRG
FOSC FCY BRG Value
F
CLOCK
(2 Rollovers of BRG)
32 MHz 8 MHz 13h 400 kHz
(1)
32 MHz 8 MHz 19h 308 kHz
32 MHz 8 MHz 4Fh 100 kHz
16 MHz 4 MHz 09h 400 kHz
(1)
16 MHz 4 MHz 0Ch 308 kHz
16 MHz 4 MHz 27h 100 kHz
4 MHz 1 MHz 09h 100 kHz
Note 1: The I
2
C interface does not conform to the 400 kHz I
2
C specification (which applies to rates greater than
100 kHz) in all details, but may be used with care where higher rates are required by the application.