AN1886 - APPLICATION NOTE
2/54
TABLE OF CONTENTS
Table 1. Current Types of USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Table 2. μPSD USB Family (February 2004). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
IAP USB Demonstration Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Table 3. USB Demonstration Program Revision History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Hardware Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figure 1. USB Input/Output Design inside the μPSD32xxA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figure 2. Typical USB Connection Circuit for 5V (μPSD32xx) Systems. . . . . . . . . . . . . . . . . . . . . . 6
Possible Frequencies for μPSD with Low-speed USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Table 4. μPSD32xx USB SFR Register Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Software Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Table 5. List of Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Table 6. List of C Source Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
USB Communication Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Figure 3. USB Host/Device Detailed Communication Flow View . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Endpoints Supported by μPSD32xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Table 7. Supported Endpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Data Structures and Data-flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Table 8. USB Demonstration Program Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
USB Bus Level Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Bus Enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Endpoint0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Endpoint1 (LCD display mirror) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Table 9. Endpoint Packet Byte Function Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
USB Setup Packet Handling – Standard Device Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
USB Requests in the USB Demonstration Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Table 10. Descriptor Type (the high byte of wValue in the Get_Descriptor request). . . . . . . . . . . . 13
Table 11. Valid Types of Class Descriptor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Get_Descriptor Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Table 12. Components of a Get_Descriptor Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Get_Report Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Table 13. Components of a Get_Report Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
SET_Report Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Table 14. Components of a SET_Report Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
USB Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Figure 4. USB and HID Descriptor Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
GET_Descriptor Request Servicing Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Descriptors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Example of USB Descriptors for HID Class Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Table 15. Device Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Table 16. Configuration Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19