USB with NXP Microcontrollers
NXP Advantages
NXP's microcontroller portfolio features the latest USB technologies, including full- and high-speed USB 2.0 device, host, and On-The-Go (OTG) functions. NXP supports all four transfer types: control, interrupt, bulk, and, in particular, isochronous, which is required for streaming audio. NXP MCUs provide designers a range of special USB features that improve overall performance and speed time-to-market:
- Fully-Certified USB Products
- On-Chip ROM Drivers
- Integrated Hi-Speed and/or Full-Speed PHY
- Free USB Host and Device Software
- Additional USB Features
Fully-Certified USB Products
NXP is a leading member of the USB-IF, the organization that maintains the USB specifications and verifies USB compliance. NXP's USB-equipped ARM MCUs are submitted for certification, so designers can be certain that their systems will deliver the best in reliability and plug-and-play operation. As of the end of 2008, most of our USB 2.0-based processors with host and device functions have been certified; the OTG function is in-process. A complete list of compliant products appears on the USB-IF web site, www.usb.org.
On-Chip USB ROM Drivers
NXP's on-board USB ROM drivers pack the entire USB stack, USB classes, and low-level drivers right into the microcontroller's ROM, eliminating the need to develop and debug this complex software yourself. Placing the USB drivers in the ROM frees up valuable memory space that you can then use for your application. These drivers have been thoroughly tested by NXP and outside test houses and are used to gain USB logo certification after passing the rigorous testing requirements at USB-IF.
Integrated Hi-Speed and/or Full-Speed PHY
A full-speed or high-speed PHY is integrated into NXP's USB microcontrollers and provides the bridge between the digital and modulated parts of the interface. The integration of the PHY on the MCU saves component cost and simplifies system design. For example, the LPC1800 and LPC4300 microcontrollers support two channels of High-Speed USB 2.0 Host/Device/OTG and have an on-chip High-Speed PHY.
Free USB Host and Device Software
USB development doesn't have to be expensive or difficult. To help you save time and money, NXP provides complete ready-to-go USB example applications for host and device modes that work out of the box on multiple tool chains — all at no charge. In addition to NXP's own complimentary USB packages, NXP partners with leading software companies to provide state-of-the-art USB firmware. For a complete list of USB software options, please see the Support section of this page.
Additional USB Features
NXP's additional USB features include the following:
- Host controllers are OHCI-/EHCI-compliant.
- Dedicated DMA lets the USB interface operate with minimal CPU intervention.
- SoftConnect™ uses software to determine when a USB device will connect to the bus.
- GoodLink™ uses an LED to indicate that a USB device has been enumerated and configured on the bus. (To save power, the LED is turned off during suspend.)
- Double-buffering maximizes throughput on bulk and isochronous endpoints.
- Multiple USB ports let devices be configured as hosts, devices, or both.
- USB data buffer provides flexible configuration of endpoint FIFO sizes.
Products
NXP offers more than 80 USB MCU options for Cortex-M0, Cortex-M3, Cortex-M4, ARM9, and ARM7 microcontrollers (see the comparison table and products below). NXP MCUs special USB features include:
Comparison Table
Core | Product | On-Chip Controller | No. of Cntrls | No. of Ports | On-chip PHY | Certified | ||
Device | Host | OTG | ||||||
ARM7TDMI-S | LPC2141 | FS | - | - | 1 | 1 | Device | FS |
LPC2142 | FS | - | - | 1 | 1 | Device | FS | |
LPC2144 | FS | - | - | 1 | 1 | Device | - | |
LPC2146 | FS | - | - | 1 | 1 | Device | - | |
LPC2148 | FS | - | - | 1 | 1 | Device | FS | |
LPC2158 | FS | - | - | 1 | 1 | Device | - | |
LPC2361 | FS | FS | FS | 1 | 1 | Device, Host | FS | |
LPC2362 | FS | FS | FS | 1 | 1 | Device, Host | FS | |
LPC2364 | FS | - | - | 1 | 1 | Device | FS | |
LPC2366 | FS | - | - | 1 | 1 | Device | FS | |
LPC2368 | FS | - | - | 1 | 1 | Device | FS | |
LPC2378 | FS | - | - | 1 | 1 | Device | FS | |
LPC2387 | FS | FS | FS | 1 | 1 | Device, Host | FS | |
LPC2388 | FS | FS | FS | 1 | 2 | Device, Host | FS | |
LPC2420 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2458 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2460 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2468 | FS | FS | FS | 1 | 2 | Device, Host | FS | |
LPC2470 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2478 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2880 | HS | - | - | 1 | 1 | Device | HS | |
LPC2888 | HS | - | - | 1 | 1 | Device | HS | |
ARM720T | LH79524 | FS | - | - | 1 | 1 | Device | - |
LH79525 | FS | - | - | 1 | 1 | Device | - | |
ARM922T | LH7A404 | FS | FS | - | 1 | 3 (2 host) | Device, Host | - |
LH7A400 | FS | - | - | 1 | 1 | Device | - | |
ARM968 | LPC2921 | FS | - | - | 1 | 1 | Device | - |
LPC2923 | FS | - | - | 1 | 1 | Device | - | |
LPC2925 | FS | - | - | 1 | 1 | Device | - | |
LPC2926 | FS | FS | 1 | 1 | Device | |||
LPC2927 | FS | - | FS | 1 | 1 | Device | - | |
LPC2929 | FS | - | FS | 1 | 1 | Device | FS | |
LPC2930 | FS | FS | FS | 1 | 2 | Device, Host | - | |
LPC2939 | FS | FS | FS | 1 | 2 | Device, Host | - | |
ARM926EJ-S | LPC3180/01 | FS | FS | FS | 1 | 1 | - | - |
LPC3220 | FS | FS | FS | 1 | 1 | - | - | |
LPC3230 | FS | FS | FS | 1 | 1 | - | - | |
LPC3240 | FS | FS | FS | 1 | 1 | - | - | |
LPC3250 | FS | FS | FS | 1 | 1 | - | - | |
LPC3130 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC3131 | HS | HS | HS | 1 | 1 | Device, Host, OTG | HS | |
LPC3151 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC3152 | HS | HS | HS | 1 | 1 | Device, Host, OTG | HS | |
LPC3153 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC3154 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
Cortex-M3 | LPC1342 | FS | - | - | 1 | 1 | Device | FS |
LPC1343 | FS | - | - | 1 | 1 | Device | FS | |
LPC1345 | FS | - | - | 1 | 1 | Device | - | |
LPC1346 | FS | - | - | 1 | 1 | Device | - | |
LPC1347 | FS | - | - | 1 | 1 | Device | - | |
LPC1547 | FS | - | - | 1 | 1 | Device | - | |
LPC1548 | FS | - | - | 1 | 1 | Device | - | |
LPC1549 | FS | - | - | 1 | 1 | Device | FS | |
LPC1751 | FS | - | - | 1 | 1 | Device | FS | |
LPC1752 | FS | - | - | 1 | 1 | Device | - | |
LPC1754 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1756 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1758 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1759 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1764 | FS | - | - | 1 | 1 | Device | - | |
LPC1765 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1766 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1768 | FS | FS | FS | 1 | 1 | Device, Host | FS | |
LPC1769 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1774 | FS | - | - | 1 | 1 | Device | - | |
LPC1776 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1777 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1778 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1785 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1786 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1787 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1788 | FS | FS | FS | 1 | 1 | Device, Host | - | |
LPC1820 | HS | HS | HS | 1 | 1 | Device, Host | - | |
LPC1822 | HS | HS | HS | 1 | 1 | Device, Host | - | |
LPC1823 | HS | HS | HS | 1 | 1 | Device, Host | - | |
LPC1825 | HS | HS | HS | 1 | 1 | Device, Host | - | |
LPC1827 | HS | HS | HS | 1 | 1 | Device, Host | - | |
LPC1830 | HS | HS | HS | 2 | 2 | Device, Host | - | |
LPC1833 | HS | HS | HS | 2 | 2 | Device, Host | - | |
LPC1837 | HS | HS | HS | 2 | 2 | Device, Host | FS | |
LPC1850 | HS | HS | HS | 2 | 2 | Device, Host | FS | |
LPC1853 | HS | HS | HS | 2 | 2 | Device, Host | FS | |
LPC1857 | HS | HS | HS | 2 | 2 | Device, Host | FS | |
Cortex-M4 | LPC4072 | FS | FS | FS | 1 | 2 | Device, Host, OTG | - |
LPC4074 | FS | FS | FS | 1 | 2 | Device, Host, OTG | - | |
LPC4076 | FS | FS | FS | 1 | 2 | Device, Host, OTG | - | |
LPC4078 | FS | FS | FS | 1 | 2 | Device, Host, OTG | - | |
LPC4088 | FS | FS | FS | 1 | 2 | Device, Host, OTG | - | |
LPC4320 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC4320 | HS | HS | HS | 1 | 1 | Device, Host, OTG | ||
LPC4322 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC4323 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC4325 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC4327 | HS | HS | HS | 1 | 1 | Device, Host, OTG | - | |
LPC4330 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
LPC4333 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
LPC4337 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
LPC4350 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
LPC4353 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
LPC4357 | HS | HS | HS | 2 | 2 | Device, Host, OTG | - | |
Cortex-M0 | LPC11U12 | FS | - | - | 1 | 1 | Device | - |
LPC11U13 | FS | - | - | 1 | 1 | Device | - | |
LPC11U14 | FS | - | - | 1 | 1 | Device | FS | |
LPC11U23 | FS | - | - | 1 | 1 | Device | - | |
LPC11U24 | FS | - | - | 1 | 1 | Device | LS, FS | |
LPC11U34 | FS | - | - | 1 | 1 | Device | - | |
LPC11U35 | FS | - | - | 1 | 1 | Device | - | |
LPC11U36 | FS | - | - | 1 | 1 | Device | - | |
LPC11U37 | FS | - | - | 1 | 1 | Device | FS | |
LPC11U37H | FS | - | - | 1 | 1 | Device | - | |
Cortex-M0+ | LPC11U67 | FS | - | - | 1 | 1 | Device | - |
LPC11U68 | FS | - | - | 1 | 1 | Device | LS, FS | |
Support
Software
- CMX-USB Device Stack (by CMX Systems)
- CMX-USB Host Stack (by CMX Systems)
- emUSB Device Stack (by SEGGER)
- EUSBD (Embedded USB Device) Stack (by HCC-Embedded)
- EUSBH (Embedded USB Host) Stack (by HCC-Embedded)
- I2S - USB Audio Demo (Oct 19, 2007)
- LPC32xx WinCE 6.0 Board Support Package (BSP) VBeta (Oct 30, 2008)
- LPCXpresso USB HID Example Project for LPC11U14 V1.0 (Apr 7, 2011)
- OT-USB USB Device/Host/OTG Stack (by OnChip Technologies)
- smxUSBD Device Stack (by Micro Digital)
- smxUSBH Host Stack (by Micro Digital)
- smxUSBO OTG Software (by Micro Digital)
- µC/USB Device Stack (by Micrium)
- µC/USB Host Stack (by Micrium)
- USB Audio Device Example for LPC214x (by Keil) (Feb 6, 2006)
- USB Audio Device Example for LPC23xx/LPC24xx (by Keil) (Jun 19, 2007)
- USB Device Stack (by Thesycon)
- USB Host Stack (by Thesycon)
- USB Human Interface Device (HID) Example for LPC214x (by IAR Systems) (Aug 11, 2005)
- USB Human Interface Device (HID) Example for LPC214x (by Keil) (Feb 6, 2006)
- USB Human Interface Device (HID) Example for LPC23xx/LPC24xx (by Keil) (Jun 19, 2007)
- USB Mass Storage Device Example for LPC214x (by Keil) (Feb 6, 2006)
- USB Mass Storage Device Example for LPC23xx/LPC24xx (by Keil) (Jun 19, 2007)
- USBHostLite for LPC293x VBeta 0.01 (Jul 28, 2009)
- USBHostLite for LPC23xx/LPC24xx V1.00 (Jan 4, 2010)
- USBHostLite for LPC17xx VBeta 0.01 (Jul 14, 2009)
- Windows Embedded CE BSP for NXP LH7A404 (by Adeneo)
- Windows Embedded CE BSP for NXP LPC3180 (by Adeneo)
- Windows Embedded CE BSP for NXP LPC32x0 (by Adeneo)
Application Notes
- AN10703 NXP USB host lite V1 (Jul 14, 2008)