AN672
11.7. si32UsbIoObject, si32UsbEndpointIoObject, and si32UsbDefaultEndpointIoObject
The si32UsbIoObject extends the si32IoObject by adding definitions and initialization of resources required
specifically to support USB I/O requests, including independent IoRequestPools, IoBufferPools, and
IoRequestQueues.
The si32UsbDefaultEndpointIoObject extends the si32UsbIoObject by implementing I/O operations specifically
using the USB control pipe protocol over the default endpoint (EP0). The si32UsbDefaultEndpointIoObject treats
transmit and receive operations as interdependent operations and enables support for SETUP packet detection
and notification. The si32UsbDefaultEndpointIoObject does not have any dependencies on the
si32UsbEndpointIoObject so that USB applications that require only the default endpoint can exclude the code and
memory overhead required to support unused endpoints.
si32UsbEndpointIoObject extends the si32UsbIoObject by adding definitions and the initialization of resources
required to support non-EP0 USB I/O Requests, including Bulk, Interrupt and Isochronous transfers. The
si32UsbEndpointIoObject requires use of both the SI32_USB_A_Type and SI32_USBEP_A_Type hardware
instances. Unlike the si32UsbDefaultEndpointIoObject, each direction of an si32UsbIoObject is designed to
operate completely independent of the other direction and for configuring the SI32_USBEP_A hardware on
demand, dynamically reconfiguring the endpoint control to reflect the run-time configuration.
Figure 23 shows the USB objects diagram.
si32IoObject
si32UsbIoObject
si32UsbEndpointIoObject
si32UsbDefaultEndpointIoObject
SI32_USBEP_A_Type
SI32_USB_A_Type
Figure 23. si32UsbIoObject, si32UsbEndpointIoOject, and si32UsbDefaultEndpointIoObject
Diagram
Rev. 0.1
29