Using open source USB HostSlave IP core reduces system development time. Since the IP Core supports the lowest level of USB protocol layer( CRC calculation, NRZI encoding, and parallel to serial conversion etc.), user can concentrate to the system integration and performance tuning.
The followings are the point of the USB Host system implementation.
After system power-on or hardware resetting, and USB device is already connected to the connector, CONNECTION_EVENT is not occurred. USB bus reset is necessarily to invoke CONNECTION_EVENT at that situation.
USB device address is set by SetAddress of Control transfer. Since this address is still valid after the system resetting, the access to the default address is denied when the program restarts. After USB bus resetting, the address of the USB device is reset to default address.
DEVICE and CONFIGURATION descriptor type of GET_DESCRIPTOR are used to obtain descriptors. GET_DESCRIPTOR with CONFIGURATION type returns configuration, interface, and endpoint descriptor. If the USB device is HID class, GET_DESCRIPTOR with CONFIGURATION type also returns HID descriptor between interface and endpoint descriptor.
Interrupt Transfer Data Size
When USB host issued Interrupt transfer, the game pad returns 4-byte data in response to IN Transaction only if the button status is changed. If the status is same, IN Transaction data size is 0 and USB Host Core RX FIFO has no valid data.