AnsweredAssumed Answered

K60 USB High Speed ULPI Clock

Question asked by Grigorii Belokrylov on Apr 27, 2015
Latest reply on Nov 10, 2016 by Tibor Somogyi



Could someone clarify how clocking for USB HS module on K60 actually works?


  • Device clock summary (in the reference manual K60P144M150SF3RM) states that clock source for USB HS module can be one of the following: "Bus clock, MCGPLL0CLK, MCGPLL1CLK, or OSC0ERCLK with fractional clock divider, or ULPI_CLK".
  • In signal description tables (in the signal descriptions chapter and in the USB HS module description chapter) ULPI_CLK is shown as input only pin.
  • USB HS OTG Controller clocking mentions SIM_MCR[ULPICLKOBE] flag that is not present in the SIM chapter but is mentioned in the revision history: "In the MCR register, updated the ULPICLKOBE field description to be reserved.".
  • In the revision 2 of the same reference manual, there is a description for aforementioned flag:
    • 0 Internal generated 60MHz ULPI clock is not output to the ULPI_CLK pin.
    • 1 Interanl generated 60MHz ULPI clock provide clock for external ULPI phy.
  • I am using TWR-K60F120M board and when I configure USB HS clock (bare metal, curiously enough, that flag is defined in the MK60F12.h header provided with the KDS) and set the flag, I can confirm with oscilloscope that the 60MHz output is present on the pin.
  • Unfortunately, I don't have a SER2 module or any ULPI transceiver at the moment, but from the data sheet for USB3300 I learned that it only outputs 60MHz and can't use external 60MHz reference. Also, it seems that people who've used USB HS with SER2 had no problems.
  • In the module clocks table in the "Clock Distribution" chapter, ULPI_CLK is in the I/O interface clocks column, and USB HS clock (that is described as internal clock or ULPI_CLK in the device clock summary) is in the internal clocks column.


My first question is, does USB HS module use ULPI_CLK input in any way? Or, in other words, does ULPICLKOBE determine not only whether the internal clock will be output but also whether external clock will be used or internal one.

Can I use a different transceiver that uses ULPI_CLK as input and generate the clock in the MCU and provide it to the transceiver using ULPICLKOBE? (or was it removed from the reference manual because it shouldn't be used?)

And the last question, if USB HS module does not use ULPI_CLK input at all then could there be problems caused by phase mismatch between transceiver and the module?