<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Kinetis MicrocontrollersのトピックRe: USB clock initialization when CPU CLock = 150MHz.</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665400#M40894</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that the "system" or "core" clock is 150MHz and not the bus clock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is how it is done in the uTasker project for 150Mhz K70 and FS USB OTG (including [hex values] to check with in case the defines are not understandable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// CPU clocks 150MHz core, 75MHz bus, 25MHz flash&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C2_RANGE_8M_32M &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C2_LOCRE0&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0xa0] select external clock source&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C1_CLKS_EXTERN_CLK &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C1_FRDIV_1024&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0xa8] switch to external input clock (the FLL input clock is set to as close to its input range as possible, although this is not absolutely necessary since the FLL will not be used)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_IREFST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the FLL source is no longer the internal reference clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_CLKST_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; MCG_S_CLKST_EXTERN_CLK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the external reference clock source is valid&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C5 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_DIV &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x04] now move from state FBE to state PBE&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C6 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_MUL &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; MCG_C6_VDIV0_LOWEST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C6_PLLS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x4e]&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_PLLST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the PLLS clock source becomes valid&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_LOCK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until PLL locks&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SYSTEM_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;28&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;BUS_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;FLEX_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;20&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;FLASH_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;16&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x0125000] prepare bus clock divides&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C1_CLKS_PLL_FLL &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C1_FRDIV_1024&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x28] finally move from PBE to PEE mode - switch to PLL clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_CLKST_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; MCG_S_CLKST_PLL&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the PLL clock is selected&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// USB FS OTG clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SOPT2 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SIM_SOPT2_USBSRC &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_SOPT2_PLLFLLSEL &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_SOPT2_USBFSRC_MCGPLL1&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x44851000] set the source to MCGPLL1CLK&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USB_CLOCK_SOURCE &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;48000000&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_CLKDIV2_USBFRAC&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x0000007] the value of the clock source must be chosen to allow 48MHz to be achieved!&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 06 Jan 2017 19:34:25 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2017-01-06T19:34:25Z</dc:date>
    <item>
      <title>USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665399#M40893</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm tis K70 150MHz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, Bus Clk is 120MHz in MQX.&lt;/P&gt;&lt;P&gt;for that, in init_gpio.c, _bsp_usb_io_init, the USB clock is initialised like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configure USB divider to be 120MHz * 2 / 5 = 48 MHz */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2_REG(SIM_BASE_PTR) &amp;amp;= ~(SIM_CLKDIV2_USBFSDIV_MASK | SIM_CLKDIV2_USBFSFRAC_MASK);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2_REG(SIM_BASE_PTR) |= SIM_CLKDIV2_USBFSDIV(4) | SIM_CLKDIV2_USBFSFRAC_MASK;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, I change CLock configuration to have Bus Clock to 150MHz.&lt;/P&gt;&lt;P&gt;So If I keep this USB init, USB clock will be 50MHz instead of 48Mhz which is the maximum USB frequency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But When I change SIM_CLK2 register FSDiv and FSFrac to adapt frequency to lower, USB not work!&lt;/P&gt;&lt;P&gt;I test many value.&lt;/P&gt;&lt;P&gt;Exemple:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2_REG(SIM_BASE_PTR) &amp;amp;= ~(SIM_CLKDIV2_USBFSDIV_MASK | SIM_CLKDIV2_USBFSFRAC_MASK);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2_REG(SIM_BASE_PTR) |= SIM_CLKDIV2_USBFSDIV(4) ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To obtain 150Mhz *&amp;nbsp;1 / 5 = 30MHz, but not work!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are they a value which work with 150MHz busClock??&lt;/P&gt;&lt;P&gt;Thank&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Jan 2017 17:33:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665399#M40893</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-06T17:33:37Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665400#M40894</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that the "system" or "core" clock is 150MHz and not the bus clock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is how it is done in the uTasker project for 150Mhz K70 and FS USB OTG (including [hex values] to check with in case the defines are not understandable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// CPU clocks 150MHz core, 75MHz bus, 25MHz flash&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C2_RANGE_8M_32M &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C2_LOCRE0&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0xa0] select external clock source&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C1_CLKS_EXTERN_CLK &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C1_FRDIV_1024&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0xa8] switch to external input clock (the FLL input clock is set to as close to its input range as possible, although this is not absolutely necessary since the FLL will not be used)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_IREFST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the FLL source is no longer the internal reference clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_CLKST_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; MCG_S_CLKST_EXTERN_CLK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the external reference clock source is valid&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C5 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_DIV &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x04] now move from state FBE to state PBE&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C6 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_MUL &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; MCG_C6_VDIV0_LOWEST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C6_PLLS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x4e]&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_PLLST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the PLLS clock source becomes valid&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_LOCK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until PLL locks&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SYSTEM_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;28&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;BUS_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;24&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;FLEX_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;20&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;FLASH_CLOCK_DIVIDE &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;16&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x0125000] prepare bus clock divides&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C1_CLKS_PLL_FLL &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C1_FRDIV_1024&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x28] finally move from PBE to PEE mode - switch to PLL clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_CLKST_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; MCG_S_CLKST_PLL&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the PLL clock is selected&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// USB FS OTG clock&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_SOPT2 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SIM_SOPT2_USBSRC &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_SOPT2_PLLFLLSEL &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_SOPT2_USBFSRC_MCGPLL1&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x44851000] set the source to MCGPLL1CLK&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM_CLKDIV2 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;USB_CLOCK_SOURCE &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;48000000&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; SIM_CLKDIV2_USBFRAC&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x0000007] the value of the clock source must be chosen to allow 48MHz to be achieved!&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Jan 2017 19:34:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665400#M40894</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-06T19:34:25Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665401#M40895</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ok, I think I found where&amp;nbsp; come from my problem.&lt;/P&gt;&lt;P&gt;Data sheet indicate:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="USBFS_Clk.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/6406i597A75A2A1247C7E/image-size/large?v=v2&amp;amp;px=999" role="button" title="USBFS_Clk.jpg" alt="USBFS_Clk.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then If I well understand, the USB FS Clock MUST be exactly 48MHz to Rune correctly. But this frequency is not reachable with a PLL0 Clk source = 150MHz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I can used the unused PLL1, configure it to 120MHz then configure USBFRAC/USBDIV to have 48MHz.&lt;/P&gt;&lt;P&gt;In your exemple, The USBCLock source is also the PLL1:&lt;/P&gt;&lt;P&gt;SIM_SOPT2 &lt;SPAN&gt;|&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;SIM_SOPT2_USBSRC &lt;SPAN&gt;|&lt;/SPAN&gt; SIM_SOPT2_PLLFLLSEL &lt;SPAN&gt;|&lt;/SPAN&gt; &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;SIM_SOPT2_USBFSRC_MCGPLL1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But you do not show how is configured the PLL1. I think the Output frequency of PLL1 should be equal to value of USB_CLOCK_SOURCE. (You do not show its definition) According final value ([0x04]) it seem your PLL1 is set to 96MHz?? (x2 / 4 = 48MHz)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Then I will try to use PLL1 ans see if Ok. But during my search, I seen a think but not found the solution:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Where the PLL0 is enabled? (MCG_C5.&lt;/SPAN&gt;PLLCLKEN0) ...???&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN lang="JA" style="font-family: HelveticaLTStd-Roman; font-size: xx-small;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Jan 2017 07:26:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665401#M40895</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-08T07:26:07Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665402#M40896</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;=&amp;gt; It seems the PLL1 is used for DDRClock. And in BSP it is configured to 150MHz I think...???&lt;/P&gt;&lt;P&gt;So the first idea is to used PLL1 which is already set to 150MHz to used it also for the MCGOUTCLK (Core clock). (MCG_C11.PLLCS bit set to 1...) So the PLL0 will only used for the USB set to 120MHz. (PLL0 can also be used by LCDC and SAI, but I not use SAI and LCDC module is on BucClock)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Jan 2017 08:02:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665402#M40896</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-08T08:02:43Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665403#M40897</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I missed adding the PLL1 configuration - below is a reference from a 12MHz crystal on EXTAL0/XTAL0. 120MHz is generated so that it can be used for USB. If DDR is used it is also clocked 120MHz since it is clocked exclusively for the PLL1 output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your strategy to use PLL1 at 150MHz and PLL0 at 120MHz (PLL0 exclusively for USB and PLL1 as core clock and DDR) would allow fastest DDR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// PLL1 configuration from 12MHz crystal - generate 120MHz for use by DDR and for USB to generate 48MHz&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C11 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_C11_PLLREFSEL1_OSC0 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C11_PLLCLKEN1 &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_DIV_1 &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// [0x40] use OSCO clock source for PLL1 with input divide set&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C12 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_MUL_1 &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; MCG_C12_VDIV1_LOWEST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x04] set multiplier&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C5 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_DIV &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C5_PLLSTEN0&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x20] now move from state FEE to state PBE (or FBE) PLL remains enabled in normal stop modes&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C6 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;CLOCK_MUL &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; MCG_C6_VDIV0_LOWEST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;|&lt;/SPAN&gt; MCG_C6_PLLS&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// [0x49] set the PLL multiplication factor&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_PLLST&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until the PLLS clock source becomes valid&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;MCG_S &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; MCG_S_LOCK1&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// loop until PLL locks&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Jan 2017 17:23:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665403#M40897</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-01-08T17:23:29Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665404#M40898</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&lt;/P&gt;&lt;P&gt;I made many test and something is strange.&lt;/P&gt;&lt;P&gt;In default configuration provided in MQX (v4.1.1), the used PLL for MCGOUTCLK is the PLL0 which is configured to 120MHz.&lt;/P&gt;&lt;P&gt;The PLL1 is configured to 150MHz and used for DDR.&lt;/P&gt;&lt;P&gt;Is somebody can confirm this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is following in &lt;/P&gt;&lt;P&gt;__pe_initialize_hardware:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;EM style="color: #008000; font-size: small;"&gt;...&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C5: PLLREFSEL0=0,PLLCLKEN0=0,PLLSTEN0=0,??=0,??=0,PRDIV0=4 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C5 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x04&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U; &lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=8 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C6 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x08&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U;&lt;BR /&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C11: PLLREFSEL1=0,PLLCLKEN1=0,PLLSTEN1=0,PLLCS=0,??=0,PRDIV1=3 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C11 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x03&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U;&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C11: PLLCLKEN1=1 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C11 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;|=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x40&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Enable the PLL */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C12: LOLIE1=0,??=0,CME2=0,VDIV1=8 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C12 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x08&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U;&lt;BR /&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;&amp;amp;&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; MCG_S_IREFST_MASK) &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;!=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x00&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Check that the source of the FLL reference clock is the external reference clock. */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;&amp;amp;&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x0C&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;!=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x08&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Wait until external reference clock is selected as MCG output */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Switch to PBE Mode */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=8 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C6 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x48&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U;&lt;BR /&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;&amp;amp;&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x0C&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;!=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x08&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Wait until external reference clock is selected as MCG output */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;&amp;amp;&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; MCG_S_LOCK0_MASK) &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;==&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x00&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Wait until PLL locked */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Switch to PEE Mode */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C1: CLKS=0,FRDIV=5,IREFS=0,IRCLKEN=0,IREFSTEN=0 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C1 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x28&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U;&lt;BR /&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;&amp;amp;&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x0C&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;!=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x0C&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U) &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Wait until output of the PLL is selected */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: small;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* MCG_C6: CME0=1 */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; MCG_C6 &lt;/SPAN&gt;&lt;STRONG style="color: #0000ff; font-size: small;"&gt;|=&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt; (uint8_t)&lt;/SPAN&gt;&lt;SPAN style="color: #808000; font-size: small;"&gt;0x20&lt;/SPAN&gt;&lt;SPAN style="font-size: small;"&gt;U; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/* Enable the clock monitor */&lt;/EM&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;/SPAN&gt;&lt;EM style="color: #008000; font-size: small;"&gt;/*** End of PE initialization code after reset ***/&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;With this code, I put in a ground loop a pin toggle.&amp;nbsp; The time is about 200ns to execute it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;-1) If I change MCG_C5 from&amp;nbsp;0x4 to 0x3 this could generate PLL0 to 150MHz instead of 120MHz. =&amp;gt; The time to toggle bit is about 175ns =&amp;gt; Ok Cpu frequency is increased.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;But with this, like USB use only PLL0 we can't reach 48MHz exactly.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;-2) By previous test, we can consider PLL0 is Ok because&amp;nbsp; all run correctly, but MCG_C5.PLLCLKEN0 is set to 0 = PLL0 not enabled!!! ??? So what this RUN???&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;-3) Now the idea is to keep PLL0 to 120MHz and PLL1 to 150MHHz (MQX original configuration) and just switch MCGOUTCLK from PLL0 (120MHz) to PLL1 (150MHz) to increase core/bus... from 120MHz to 150MHz like my CPU is a K70F150M. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;To do that, I just changed the configuration of MCG_11 from 0x03 to 0x13 (PLLCS = 1 =&amp;gt; use PLL1 not PLL0).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;If I do that, the code stay block on the following test:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt; &lt;/SPAN&gt;&lt;STRONG style="color: #7f0055; font-size: small;"&gt;while&lt;/STRONG&gt;&lt;SPAN style="font-size: small;"&gt;((MCG_S &amp;amp; MCG_S_LOCK0_MASK) == 0x00U)...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: small;"&gt;Like PLL0 was not enable (and it is TRUE!!) But why this Run when PLL0 is selected for MCGOUTCLK???&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2017 08:34:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665404#M40898</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-09T08:34:12Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665405#M40899</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK!! In fact, the PLLn is enable if PLLCLKENn is set of if PLLn is selected by PLLS/PLLCS!....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2017 08:35:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665405#M40899</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-09T08:35:14Z</dc:date>
    </item>
    <item>
      <title>Re: USB clock initialization when CPU CLock = 150MHz.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665406#M40900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ok After test, all work correctly now!&lt;/P&gt;&lt;P&gt;Like PLL0 was no more use to generate MCGOUTCLK, we must activate it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So use PLL0 at 120MHz for USB only and PLL1 for DDR and LCGOUTCLK was the solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank for your help&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Jan 2017 05:46:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-clock-initialization-when-CPU-CLock-150MHz/m-p/665406#M40900</guid>
      <dc:creator>arnogir</dc:creator>
      <dc:date>2017-01-10T05:46:32Z</dc:date>
    </item>
  </channel>
</rss>

