43.8 Device mode IRC48 operation
The following are the IRC48 initialization code steps:
1. Enable the IRC48M clock: USB_CLK_RECOVER_IRC_EN[IRC_EN] = 1b
2. Enable the USB clock recovery tuning:
USB_CLK_RECOVER_CTRL[CLOCK_RECOVER_EN] = 1b
3. Choose the clock source of USB by configuring the muxes and dividers in the SIM.
The IRC48M is muxed by setting SIM_SOPT2[MCGPLLFLL]=11b for USB usage.
4. The selected mux output clock can be divided by the USB clock divider, so set these
fields so no clock division is enabled. This is the equation for the divider:
Divider output clock = Divider input clock × [ (USBFRAC+1) / (USBDIV+1) ].
So set SIM_CLKDIV2[USBDIV] = 000b and SIM_CLKDIV2[USBFRAC] = 0b
5. The USB clock source must choose the output of the divided clock by setting
SIM_SOPT2[USBSRC] = 1b.
For chip-specific details, see the USB FS OTG controller clocking information in the
"Clock Distribution" chapter.
Chapter 43 Universal Serial Bus Full Speed OTG Controller (USBFSOTG)
K22F Sub-Family Reference Manual, Rev. 4, 08/2016
NXP Semiconductors 1117