1# NXP Middleware USB stack
2The USB stack provides USB device and USB host APIs that are targeted to support the application based on NXP's micro-controller.
3## USB stack license
4This project is under BSD-3-Clause license, license copy please check [COPYING_BSD-3](COPYING-BSD-3).
5
6## Middleware USB subfolders description
7The middleware USB folder contains six subfolders totally.
8### device
9This subfolder includes the device controller driver and common device driver for the USB device. The device controller driver includes KHCI, EHCI, IP3511(FS/HS).
10> Note that the device class driver and the USB framework (chapter 9) to handle the standard enumeration and request defined by USB specification 2.0 are moved to
11the application layer, which are located in the folder **examples/${boards}/usb_examples/**. The aim is to implement two types of USB device examples (lite and non-lite).
12In this case, the lite version device examples have no device class driver and class-specific codes are processed in application directly so that lite version has less footprint.
13
14### host
15This subfolder includes the host controller driver, USB host class driver and common host driver for the USB host. The host controller driver includes KHCI, EHCI, IP3516(FS/HS).
16### include
17This subfolder includes the definitions and structures for the USB stack. The miscellaneous content is also here.
18### output
19This subfolder includes the files that are specially used by the New Project Wizard(NPW) of MCUXpresso IDE.
20### phy
21This subfolder includes the USB PHY driver. The USB PHY driver is only used for USB high speed port of some Socs that expose the PHY interface.
22### dcd
23This subfolder includes the files that are specially used by the device charger detect.
24> Note that only usb_device_hid_mouse demo and usb_host_hid_mouse demo supported device charger detect.
25
26## Supported USB classes
27- AUDIO
28- CCID
29- CDC
30- DFU
31- HID
32- MSC
33- MTP
34- PHDC
35- PTINTER
36- VIDEO
37
38## USB Examples
39The following USB examples are provided to meet different requirements. USB examples are located in **examples/${boards}/usb_examples/** folder. Different board may have different set of USB examples.
40- usb_device_audio_generator
41- usb_device_audio_speaker
42- usb_device_cdc_vcom
43- usb_device_cdc_vnic
44- usb_device_composite_audio_multi_ch_unified
45- usb_device_composite_cdc_audio_unified
46- usb_device_composite_cdc_hid_audio_unified
47- usb_device_composite_cdc_msc
48- usb_device_composite_cdc_msc_disk
49- usb_device_composite_cdc_vcom_cdc_vcom
50- usb_device_composite_hid_audio
51- usb_device_composite_hid_audio_unified
52- usb_device_composite_hid_mouse_hid_keyboard
53- usb_device_dfu
54- usb_device_hid_generic
55- usb_device_hid_mouse
56- usb_device_msc_disk
57- usb_device_msc_ramdisk
58- usb_device_mtp
59- usb_device_phdc_weighscale
60- usb_device_printer_virtual_plain_text
61- usb_device_video_virtual_camera
62- usb_host_audio_recorder
63- usb_host_audio_speaker
64- usb_host_cdc
65- usb_host_hid_generic
66- usb_host_hid_mouse
67- usb_host_hid_mouse_dual
68- usb_host_hid_mouse_keyboard
69- usb_host_msd_command
70- usb_host_msd_fatfs
71- usb_host_phdc_manager
72- usb_host_printer_plain_text
73- usb_host_video_camera
74- usb_keyboard2mouse
75- usb_lpm_device_hid_mouse
76- usb_lpm_host_hid_mouse
77- usb_otg_hid_mouse
78- usb_pin_detect_hid_mouse
79- usb_pin_detect_hid_msd
80- usb_suspend_resume_device_hid_mouse
81- usb_suspend_resume_host_hid_mouse
82
83## USB related guide
84Some documents are provided to introduce more details of the USB stack or guide users to implement some new requirements.
851. MCUXpresso SDK USB Stack User's Guide.pdf
862. MCUXpresso SDK USB Stack Device Reference Manual.pdf
873. MCUXpresso SDK USB Stack Host Reference Manual.pdf
884. Enable More USB Examples on M4 Core for RT1170.pdf
895. MCUXpresso SDK USB Stack Composite Device User's Guide.pdf
906. MCUXpresso SDK USB Stack Composite Host User's Guide.pdf