<?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>topic Re: USB device Problem in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613600#M36381</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="280170" data-username="jorge_a_vazquez" href="https://community.nxp.com/people/jorge_a_vazquez"&gt;Jorge Antonio Alcala Vazquez&lt;/A&gt;&lt;/SPAN&gt;, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you so much for your suggestion and guidance. But unfortunately I have some constraints because of which I cannot used USB Stack libraries. Is there any way to know whether my USB enumeration steps are correct or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With Regards&lt;/P&gt;&lt;P&gt;Shreeram Muley&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 17 Jan 2017 08:51:49 GMT</pubDate>
    <dc:creator>shreerammuley</dc:creator>
    <dc:date>2017-01-17T08:51:49Z</dc:date>
    <item>
      <title>USB device Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613598#M36379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I am using kinetis Mk64fx microcontroller in a custom board. I am facing problem while writing a baremetal code for usb device driver. I think USB enumeration process failed and it is unable to load drivers. Below is an usb init process along with SIM and MCG reg configuration.&lt;/P&gt;&lt;P&gt;#define USB0_CTL_VALUE_1 0x02U&lt;BR /&gt;#define USB0_CTL_MASK_1 0x02U&lt;BR /&gt;#define USB0_CLK_RECOVER_IRC_EN_VALUE 0x03U&lt;BR /&gt;#define USB0_CLK_RECOVER_IRC_EN_MASK 0x03U&lt;BR /&gt;#define USB0_CLK_RECOVER_CTRL_VALUE 0x00U &lt;BR /&gt;#define USB0_CLK_RECOVER_CTRL_MASK 0xE0U&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;static void USB0_CommonInit(void) &lt;BR /&gt;{&lt;BR /&gt; &lt;BR /&gt; /* SIM_SOPT2: USBSRC=1 */&lt;BR /&gt; //SIM_SOPT2 |= SIM_SOPT2_USBSRC_MASK | SIM_SOPT2_PLLFLLSEL(1); // Selecting PLL and PLLFLLSEL PLL&lt;BR /&gt; SIM_SOPT2 |= SIM_SOPT2_USBSRC_MASK | SIM_SOPT2_PLLFLLSEL(3); // Selecting IRC48 and PLLFLLSEL IRC48&lt;BR /&gt; SIM_CLKDIV2 |= SIM_CLKDIV2_USBDIV(1); //USB Division 1&lt;BR /&gt; SIM_CLKDIV2 |= SIM_CLKDIV2_USBFRAC_MASK; // USB Fraction 1&lt;BR /&gt; /* SIM_SCGC4: USBOTG=1 */&lt;BR /&gt; SIM_SCGC4 |= SIM_SCGC4_USBOTG_MASK; // Enabling usb OTG module&lt;BR /&gt; /* NVICIP53: PRI53=0 */ &lt;BR /&gt; // NVICIP53 = NVIC_IP_PRI53(0x00); // setting up interrupt priority&lt;BR /&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;uint8 usb_init(uint8 ip)&lt;BR /&gt;{&lt;BR /&gt; USB0_CommonInit();&lt;BR /&gt; &lt;BR /&gt; SIM_SOPT1 |= SIM_SOPT1_USBREGEN_MASK; //Enable usb regulator&lt;BR /&gt; USB0_USBTRC0 |= USB_USBTRC0_USBRESET_MASK; // Reset module &lt;BR /&gt; &lt;BR /&gt; // Base Descriptor Table &lt;BR /&gt; MX64_USB_BDT_PAGE_01 = (hcc_u8)((((hcc_u32)BDT_BASE) &amp;gt;&amp;gt; 0x08));&lt;BR /&gt; MX64_USB_BDT_PAGE_02 = (hcc_u8)((((hcc_u32)BDT_BASE) &amp;gt;&amp;gt; 0x16));&lt;BR /&gt; MX64_USB_BDT_PAGE_03 = (hcc_u8)((((hcc_u32)BDT_BASE) &amp;gt;&amp;gt; 0x24)); &lt;BR /&gt; &lt;BR /&gt; USB0_OTGCTL = USB_OTGCTL_OTGEN_MASK; // OTG Module Enable&lt;BR /&gt; USB0_OTGICR |= USB_OTGICR_ONEMSECEN_MASK; // Enable one mili sec interrupt &lt;BR /&gt; USB0_CTL |= (0 | USB_CTL_HOSTMODEEN_MASK | USB_CTL_USBENSOFEN_MASK); // Host mode and usb sof token&lt;BR /&gt; //USB0_CTL |= USB_CTL_USBENSOFEN_MASK;&lt;/P&gt;&lt;P&gt;/* Register 'USB0_CTL' initialization */&lt;BR /&gt; #if USB0_CTL_MASK_1&lt;BR /&gt; #if USB0_CTL_MASK_1 == 0xFF&lt;BR /&gt; USB0_CTL = USB0_CTL_VALUE_1;&lt;BR /&gt; #elif USB0_CTL_MASK_1 == USB0_CTL_VALUE_1&lt;BR /&gt; USB0_CTL |= USB0_CTL_VALUE_1;&lt;BR /&gt; #elif USB0_CTL_VALUE_1 == 0&lt;BR /&gt; USB0_CTL &amp;amp;= ~USB0_CTL_MASK_1;&lt;BR /&gt; #else&lt;BR /&gt; USB0_CTL = (USB0_CTL &amp;amp; (~USB0_CTL_MASK_1)) | USB0_CTL_VALUE_1;&lt;BR /&gt; #endif&lt;BR /&gt; #elif defined(USB0_CTL_VALUE_1)&lt;BR /&gt; USB0_CTL = USB0_CTL_VALUE_1;&lt;BR /&gt; #endif&lt;/P&gt;&lt;P&gt;/* Register 'USB0_CLK_RECOVER_IRC_EN' initialization */&lt;BR /&gt; #if USB0_CLK_RECOVER_IRC_EN_MASK&lt;BR /&gt; #if USB0_CLK_RECOVER_IRC_EN_MASK == 0xFF&lt;BR /&gt; USB0_CLK_RECOVER_IRC_EN = USB0_CLK_RECOVER_IRC_EN_VALUE;&lt;BR /&gt; #elif USB0_CLK_RECOVER_IRC_EN_MASK == USB0_CLK_RECOVER_IRC_EN_VALUE&lt;BR /&gt; USB0_CLK_RECOVER_IRC_EN |= USB0_CLK_RECOVER_IRC_EN_VALUE;&lt;BR /&gt; #elif USB0_CLK_RECOVER_IRC_EN_VALUE == 0&lt;BR /&gt; USB0_CLK_RECOVER_IRC_EN &amp;amp;= ~USB0_CLK_RECOVER_IRC_EN_MASK;&lt;BR /&gt; #else&lt;BR /&gt; USB0_CLK_RECOVER_IRC_EN = (USB0_CLK_RECOVER_IRC_EN &amp;amp; (~USB0_CLK_RECOVER_IRC_EN_MASK)) | USB0_CLK_RECOVER_IRC_EN_VALUE;&lt;BR /&gt; #endif&lt;BR /&gt; #elif defined(USB0_CLK_RECOVER_IRC_EN_VALUE)&lt;BR /&gt; USB0_CLK_RECOVER_IRC_EN = USB0_CLK_RECOVER_IRC_EN_VALUE;&lt;BR /&gt; #endif&lt;/P&gt;&lt;P&gt;/* Register 'USB0_CLK_RECOVER_CTRL' initialization */&lt;BR /&gt; #if USB0_CLK_RECOVER_CTRL_MASK&lt;BR /&gt; #if USB0_CLK_RECOVER_CTRL_MASK == 0xFF&lt;BR /&gt; USB0_CLK_RECOVER_CTRL = USB0_CLK_RECOVER_CTRL_VALUE;&lt;BR /&gt; #elif USB0_CLK_RECOVER_CTRL_MASK == USB0_CLK_RECOVER_CTRL_VALUE&lt;BR /&gt; USB0_CLK_RECOVER_CTRL |= USB0_CLK_RECOVER_CTRL_VALUE;&lt;BR /&gt; #elif USB0_CLK_RECOVER_CTRL_VALUE == 0&lt;BR /&gt; USB0_CLK_RECOVER_CTRL &amp;amp;= ~USB0_CLK_RECOVER_CTRL_MASK;&lt;BR /&gt; #else&lt;BR /&gt; USB0_CLK_RECOVER_CTRL = (USB0_CLK_RECOVER_CTRL &amp;amp; (~USB0_CLK_RECOVER_CTRL_MASK)) | USB0_CLK_RECOVER_CTRL_VALUE;&lt;BR /&gt; #endif&lt;BR /&gt; #elif defined(USB0_CLK_RECOVER_CTRL_VALUE)&lt;BR /&gt; USB0_CLK_RECOVER_CTRL = USB0_CLK_RECOVER_CTRL_VALUE;&lt;BR /&gt; #endif&lt;BR /&gt; &lt;BR /&gt; enter_default_state(); // this function is used to set all endpoints to its default state and call set configuration function to load default descriptors.&lt;BR /&gt; &lt;BR /&gt; // Clear any pending OTG interupts. &lt;BR /&gt; USB0_OTGISTAT = 0xff;&lt;BR /&gt; &lt;BR /&gt; // Clear any pending USB interrupts.&lt;BR /&gt; MX64_USB_INT_STAT = 0xff;&lt;BR /&gt; &lt;BR /&gt; // Clear any pending USB error interrupt. &lt;BR /&gt; MX64_USB_ERR_STAT = 0xff;&lt;BR /&gt; &lt;BR /&gt; // Enable USB interrupts.&lt;BR /&gt; MX64_USB_INT_ENB |= MX64_USB_INT_ENB_TOK_DNE| MX64_USB_INT_ENB_ERROR | MX64_USB_INT_ENB_USB_RST| MX64_USB_INT_ENB_STALL; // Enabling all the USB0_INTEN parameters&lt;BR /&gt; &lt;BR /&gt; MX64_USB_INT_ENB &amp;amp;= ~MX64_USB_INT_ENB_SLEEP;&lt;BR /&gt; &lt;BR /&gt; USB0_OTGCTL = USB_OTGCTL_OTGEN_MASK; // OTG Module Enable&lt;BR /&gt; &lt;BR /&gt; // Enable USB functionality&lt;BR /&gt; USB0_OTGCTL = MX64_USB_CTL_USB_EN_SOF_EN;&lt;BR /&gt; USB0_USBCTRL = 0;&lt;BR /&gt; &lt;BR /&gt; USB0_INTEN |= USB_INTEN_USBRSTEN_MASK;&lt;BR /&gt; &lt;BR /&gt; enable_irq(53); // NVIC interrupt enable&lt;BR /&gt; set_irq_priority(53,ip); // irq=53 for USB OTG and level 0 Set &lt;BR /&gt; &lt;BR /&gt; USB0_CONTROL = USB_CONTROL_DPPULLUPNONOTG_MASK; //Enable pull-up resistor on D+ (Full speed, 12Mbit/s)&lt;/P&gt;&lt;P&gt;MX64_USB_OTG_CTRL = MX64_USB_OTG_CTRL_DP_HIGH | MX64_USB_OTG_CTRL_OTG_EN;&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt; return(0);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;when I connect usb to PC it shows USB device Not Recognized. I have checked USB module waveform using logic analyzer USB Handshake packets are missing in this case. Please help me and suggest me necessary changes to resolve this issue. Thank you in advance.@@#&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jan 2017 05:20:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613598#M36379</guid>
      <dc:creator>shreerammuley</dc:creator>
      <dc:date>2017-01-13T05:20:39Z</dc:date>
    </item>
    <item>
      <title>Re: USB device Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613599#M36380</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shreeram Muley&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I recommend you to use our USB Stack available with SDK drivers, this stack is completely supported and you can find it in the page:&lt;A class="link-titled" href="https://mcuxpresso.nxp.com/en/welcome" title="https://mcuxpresso.nxp.com/en/welcome"&gt;Welcome to MCUXpresso | MCUXpresso Config Tools&lt;/A&gt; . You could also find example projects for USB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this could help&lt;/P&gt;&lt;P&gt;Best Regards&lt;BR /&gt;Jorge Alcala&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Jan 2017 22:21:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613599#M36380</guid>
      <dc:creator>jorge_a_vazquez</dc:creator>
      <dc:date>2017-01-16T22:21:05Z</dc:date>
    </item>
    <item>
      <title>Re: USB device Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613600#M36381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="280170" data-username="jorge_a_vazquez" href="https://community.nxp.com/people/jorge_a_vazquez"&gt;Jorge Antonio Alcala Vazquez&lt;/A&gt;&lt;/SPAN&gt;, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you so much for your suggestion and guidance. But unfortunately I have some constraints because of which I cannot used USB Stack libraries. Is there any way to know whether my USB enumeration steps are correct or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With Regards&lt;/P&gt;&lt;P&gt;Shreeram Muley&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Jan 2017 08:51:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613600#M36381</guid>
      <dc:creator>shreerammuley</dc:creator>
      <dc:date>2017-01-17T08:51:49Z</dc:date>
    </item>
    <item>
      <title>Re: USB device Problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613601#M36382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What are all of those #if things about? Some of them load the same values.&lt;BR /&gt;&lt;BR /&gt;The code could be correct with the descriptors wrong to get such errors as well.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Jan 2017 13:52:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/USB-device-Problem/m-p/613601#M36382</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2017-01-17T13:52:29Z</dc:date>
    </item>
  </channel>
</rss>

