PIC32MZ Oscillator - Reference Clock

Last modified by Microchip on 2023/11/10 11:08



There are four reference clocks in the PIC32MZ devices. They can be used to drive peripherals or an output Reference Clock (REFCLKOx) pin.

The reference clock can be derived from any of the following clock sources: System Phased-Lock LoopPrimary OscillatorFast RC OscillatorLow-Power RC OscillatorBackup Fast RC OscillatorSecondary OscillatorSystem ClockPeripheral Bus Clock, and Reference Clock input.

Each reference clock has a high-precision divider based on this formula:

refclk formula

  • refOscDiv can be any integer from 1 to 32768,
    • when refOscDiv = 0, the output clock = the input clock.
  • trimValue can be any integer from 1 to 512.
// ref clock #1 base = FRC
// disable ref clock #2
PLIB_OSC_ReferenceOscDisable(OSC_ID_0, OSC_REFERENCE_2);
// enable ref clock #3
PLIB_OSC_ReferenceOscEnable(OSC_ID_0, OSC_REFERENCE_3);
// refOscDiv #4 = 32768
PLIB_OSC_ReferenceOscDivisorValueSet (OSC_ID_0, OSC_REFERENCE_4, 32768);
// trimValue #1 = 256
PLIB_OSC_ReferenceOscTrimSet(OSC_ID_0, OSC_REFERENCE_1, 256);
// ref clock #3 is driven out REFCLKO3 pin
PLIB_OSC_ReferenceOutputEnable(OSC_ID_0, OSC_REFERENCE_3);