<?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>LPC Microcontrollers中的主题 USB host on LPC1788 issues</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/USB-host-on-LPC1788-issues/m-p/524690#M7326</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tjoAG on Tue Jun 26 00:45:50 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to get the USB host up running on my custom board. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the U2 port and using the TPS2041D power switch. Not using the U1 at all.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Using D2+, D2-, PWR2, OVERCURR2 and PWERD2 signals. No LED UP signal used. The port is used only for HOST&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the USB lite sample from NXP to see if I can get it up and work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I insert an USB disk, an interrupt is fired and I start enumerate the host. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But it fail on "Host_ProcessTD". The HOST_TDControlStatus is 5, but should be 0. (The error code is a NODEVICERESPONS or something) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have changed the HOST BASE ADDRESS to 0x8000 4000 to match the different mem layout in the LPC1788 and the one used in the USBLite sample. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There is +5V available for the USB device.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Before the global power is enabled( LPC_USB-&amp;gt;RhStatus = OR_RH_STATUS_LPSC) there is 3,3 V on the +5V in the USB connector. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When the global power is set, the USB_PWR2 goes low and there is +5V in the USB connector. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;During enumeration there is activity on the D+ and D- lines. If the levels are OK I don't know. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea's I could try? Swap D+ and D-? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Init code: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t HostBaseAddr; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp; |= 0x80000000; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;OTGClkCtrl&amp;nbsp;&amp;nbsp; = 0x00000019;&amp;nbsp; // Enable USB,&amp;nbsp; AHB and OTG clk &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while ((LPC_USB-&amp;gt;OTGClkSt &amp;amp; 0x00000019) != 0x19); // Wait until clocks are OK&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_31 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; // P0.31 D2+, D2- is dedicated pin. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_31 |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_12&amp;nbsp; &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; // USB PWR2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_12&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_30&amp;nbsp; &amp;amp;= ~0x47;&amp;nbsp;&amp;nbsp; // USB PWRD2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_30&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_31&amp;nbsp; &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp; // USB overcurrent2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_31&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Host on port 2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;StCtrl = 0x01; // Can't be 3??? Or it never interrupts when a USB device is inserted!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;HostBaseAddr = HOST_BASE_ADDR; // Changed to 0x8000 4000 to match the LPC1788 memory layout. Could be 0x8000 2000/0000 as well&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hcca&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCCA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x000); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDHead&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCTD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x100); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDTail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCTD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x110); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDCtrl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x120); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDBulkIn&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x130); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDBulkOut&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x140); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDBuffer&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x150); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FATBuffer&amp;nbsp; = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x1D0); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;UserBuffer = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x1000); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Initialize all the TDs, EDs and HCCA to 0&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDCtrl); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDBulkIn); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDBulkOut); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_TDInit(TDHead); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_TDInit(TDTail); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_HCCAInit(Hcca); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_DelayMS(50);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait 50 ms before apply reset&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;Control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* HARDWARE RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;ControlHeadED = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Control list head to Zero&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;BulkHeadED&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Bulk list head to Zero&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* SOFTWARE RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;CommandStatus = OR_CMD_STATUS_HCR; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;FmInterval&amp;nbsp;&amp;nbsp;&amp;nbsp; = DEFAULT_FMINTERVAL;&amp;nbsp; /* Write Fm Interval and Largest Data Packet Counter */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Put HC in operational state&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;Control&amp;nbsp; = (LPC_USB-&amp;gt;Control &amp;amp; (~OR_CONTROL_HCFS)) | OR_CONTROL_HC_OPER; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;RhStatus = OR_RH_STATUS_LPSC;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set Global Power&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;HCCA = (uint32_t)Hcca; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;InterruptStatus |= LPC_USB-&amp;gt;InterruptStatus;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear Interrrupt Status&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;InterruptEnable&amp;nbsp; = OR_INTR_ENABLE_MIE | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_WDH | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_RHSC | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_UE; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Enable the USB Interrupt */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_EnableIRQ(USB_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable USB interrupt */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_SetPriority (USB_IRQn, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* highest priority */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:51:17 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:51:17Z</dc:date>
    <item>
      <title>USB host on LPC1788 issues</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USB-host-on-LPC1788-issues/m-p/524690#M7326</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tjoAG on Tue Jun 26 00:45:50 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to get the USB host up running on my custom board. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the U2 port and using the TPS2041D power switch. Not using the U1 at all.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Using D2+, D2-, PWR2, OVERCURR2 and PWERD2 signals. No LED UP signal used. The port is used only for HOST&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the USB lite sample from NXP to see if I can get it up and work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I insert an USB disk, an interrupt is fired and I start enumerate the host. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But it fail on "Host_ProcessTD". The HOST_TDControlStatus is 5, but should be 0. (The error code is a NODEVICERESPONS or something) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have changed the HOST BASE ADDRESS to 0x8000 4000 to match the different mem layout in the LPC1788 and the one used in the USBLite sample. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There is +5V available for the USB device.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Before the global power is enabled( LPC_USB-&amp;gt;RhStatus = OR_RH_STATUS_LPSC) there is 3,3 V on the +5V in the USB connector. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When the global power is set, the USB_PWR2 goes low and there is +5V in the USB connector. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;During enumeration there is activity on the D+ and D- lines. If the levels are OK I don't know. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea's I could try? Swap D+ and D-? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Init code: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t HostBaseAddr; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp; |= 0x80000000; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;OTGClkCtrl&amp;nbsp;&amp;nbsp; = 0x00000019;&amp;nbsp; // Enable USB,&amp;nbsp; AHB and OTG clk &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while ((LPC_USB-&amp;gt;OTGClkSt &amp;amp; 0x00000019) != 0x19); // Wait until clocks are OK&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_31 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; // P0.31 D2+, D2- is dedicated pin. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_31 |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_12&amp;nbsp; &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; // USB PWR2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P0_12&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_30&amp;nbsp; &amp;amp;= ~0x47;&amp;nbsp;&amp;nbsp; // USB PWRD2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_30&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_31&amp;nbsp; &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp; // USB overcurrent2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;P1_31&amp;nbsp; |= 0x1; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Host on port 2 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;StCtrl = 0x01; // Can't be 3??? Or it never interrupts when a USB device is inserted!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;HostBaseAddr = HOST_BASE_ADDR; // Changed to 0x8000 4000 to match the LPC1788 memory layout. Could be 0x8000 2000/0000 as well&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hcca&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCCA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x000); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDHead&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCTD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x100); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDTail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCTD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x110); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDCtrl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x120); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDBulkIn&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x130); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EDBulkOut&amp;nbsp; = (volatile&amp;nbsp; HCED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)(HostBaseAddr+0x140); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TDBuffer&amp;nbsp;&amp;nbsp; = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x150); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FATBuffer&amp;nbsp; = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x1D0); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;UserBuffer = (volatile&amp;nbsp; uint8_t *)(HostBaseAddr+0x1000); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Initialize all the TDs, EDs and HCCA to 0&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDCtrl); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDBulkIn); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_EDInit(EDBulkOut); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_TDInit(TDHead); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_TDInit(TDTail); &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_HCCAInit(Hcca); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Host_DelayMS(50);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait 50 ms before apply reset&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;Control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* HARDWARE RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;ControlHeadED = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Control list head to Zero&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;BulkHeadED&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Bulk list head to Zero&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* SOFTWARE RESET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;CommandStatus = OR_CMD_STATUS_HCR; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;FmInterval&amp;nbsp;&amp;nbsp;&amp;nbsp; = DEFAULT_FMINTERVAL;&amp;nbsp; /* Write Fm Interval and Largest Data Packet Counter */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Put HC in operational state&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;Control&amp;nbsp; = (LPC_USB-&amp;gt;Control &amp;amp; (~OR_CONTROL_HCFS)) | OR_CONTROL_HC_OPER; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;RhStatus = OR_RH_STATUS_LPSC;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set Global Power&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;HCCA = (uint32_t)Hcca; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;InterruptStatus |= LPC_USB-&amp;gt;InterruptStatus;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clear Interrrupt Status&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_USB-&amp;gt;InterruptEnable&amp;nbsp; = OR_INTR_ENABLE_MIE | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_WDH | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_RHSC | &lt;/SPAN&gt;&lt;BR /&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; OR_INTR_ENABLE_UE; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Enable the USB Interrupt */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_EnableIRQ(USB_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* enable USB interrupt */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_SetPriority (USB_IRQn, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* highest priority */ &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:51:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USB-host-on-LPC1788-issues/m-p/524690#M7326</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:51:17Z</dc:date>
    </item>
  </channel>
</rss>

