usb USB Thư Viện Tài Liệu Tổng Hợp Com 6 USB PC USB

189 15 0
  • Loading ...
1/189 trang
Tải xuống

Thông tin tài liệu

Ngày đăng: 18/01/2018, 12:52

Developing USB PC Peripherals Using the Intel 8x930Ax USB Microcontroller Wooi Ming Tan Annabooks San Diego Developing USB PC Peripherals by Wooi Ming Tan Published by: Annabooks 11838 Bernardo Plaza Court San Diego, CA 92128-2414 USA 619-673-0870 800-462-1042 Fax 619-673-1432 info@annabooks.com, http://www.annabooks.com Copyright © Wooi Ming Tan 1997 All rights reserved No part of the contents of this book may be reproduced or transmitted in any form or by any means without the prior written consent of the publisher, except for the inclusion of brief quotations in a review Printed in the United States of America ISBN 0-929392-38-8 First Printing July 1997 ii Information provided in this publication is derived from various sources, standards, and analyses Any errors or omissions shall not imply any liability for direct or indirect consequences arising from the use of this information The publisher, author, and reviewers make no warranty for the correctness or for the use of this information, and assume no liability for direct or indirect damages of any kind arising from technical interpretation or technical explanations in this book, for typographical or printing errors, or for any subsequent changes The publisher and author reserve the right to make changes in this publication without notice and without incurring any liability Intel, Microsoft, and Win32 are registered trademarks Windows, Windows 95, and Windows NT are trademarks of Microsoft Corporation All other trademarks, copyrights, and registered names mentioned in this book are the property of their respective owners Annabooks has attempted to properly capitalize and punctuate trademarks, but cannot guarantee that it has done so properly in every case Disclaimer The information or comments in this book reflects the author's own opinions; it does not represent the view of Intel Corporation, USB IF, Microsoft, or any other vendors The design example depicted in this book is not production-worthy, designers are required to modify the design to adhere to FCC and USB device class specifications Readers assume all risks if they wish to follow the example; the author and publisher are not responsible or liable for any injuries or mishaps caused directly or indirectly by following the design example iii About the Author Wool Ming is a Senior Technical Marketing Engineer for Intel USB Microcontrollers He focuses on USB, microcontroller architecture, firmware development, and the utilization of microcontrollers in various USB applications He has been involved in the USB world since the early days of USB development He provides technical consultations to various major OEMs and has helped them to develop and demonstrate their USB products at several international tradeshows Wooi Ming has a Master of Engineering Degree in Electrical and Electronics Engineering from the National University of Singapore and a Bachelor Degree in Engineering from the University of Canterbury, New Zealand His Master's research was on the behavior of the third generation digital cordless protocols in fading channels He has programmed in C, C++, and various microcontroller assembly languages, using the IBM PC/DOS, Windows operating system, VAX/VMS, and UNIX environments He has experience with data networks and VAX/VMS systems planning and management, and in the manufacturing of wireless communications systems IV Dedication This book is dedicated to my parents, my wife Pat, and my sisters Nee and Ling V Acknowledgements The author would like to thank all the members of the USB team from CEG (Chandler and Penang), 1AL and the USE IF for their support VII Contents WHAT WILL THIS BOOK DO FOR YOU? 1.1 1.2 1.3 1.4 WHAT is USB, ANYWAY ? OUTLINE OF THE BOOK REFERENCES FEEDBACK TO THE AUTHOR STEP1: UNDERSTAND THE USB SPECIFICATION 2.1 2.2 SUMMARY OF USB PROTOCOL USB OBJECTIVES USB Bus TOPOLOGY USB DATA FLOW MODEL 2.5 USB PIPE CONCEPT (DEVICE ADDRESS AND ENDPOINT) 10 2.6 USB TRANSFER TYPES 11 2.7 USB MECHANICAL AND ELECTRICAL 13 2.7.1 POWER SUPPLY FROM USB WIRES 15 2.8 USB PACKET FORMATS 15 2.8.1 TOKEN PACKETS 15 2.8.2 START OF FRAME PACKETS 17 2.8.3 DATA PACKETS 17 2.8.4 HANDSHAKE PACKETS 17 2.8.5 SPECIAL PACKETS 18 2.9 USB PROTOCOL BY TRANSFER TYPES 18 2.9.1 CONTROL TRANSFERS 18 2.9.2 ISOCHRONOUS TRANSFER 20 2.9.3 BULK TRANSFER 20 2.9.4 INTERRUPT TRANSFER 21 2.10 USB FUNCTIONS 21 2.10.1 USB ENUMERATION STEPS 21 2.10.2 A SNAP-SHOT OF A TYPICAL USB Bus ENUMERATION .23 2.10.3 USB RESET, SUSPEND, RESUME & REMOTE WAKEUP 27 2.11 USB HOST 28 2.3 2.4 ix STEP 2: SET UP A DEVELOPMENT ENVIRONMENT .31 3.1 3.2 3.3 DEVELOPMENT ENVIRONMENT (DEVICE SIDE) 31 DEVELOPMENT ENVIRONMENT (HOST SIDE) 34 CONTACT NUMBERS 35 STEP 3: DEVELOPING THE DEVICE HARDWARE 37 4.1 OVERVIEW OF THE 8x930Ax USB MICROCONTROLLER 37 4.1.1 MCS 251 CORE 37 4.1.2 MEMORY ORGANIZATION 38 4.1.3 EXTERNAL MEMORY INTERFACE 40 4.1.4 INTERRUPT SYSTEM 41 4.1.5 8x930Ax ON-CHIP PERIPHERALS 43 4.1.6 8x930Ax USB MODULE 44 4.1.7 SFRs ASSOCIATED WITH THE USB MODULE 46 4.2 INTERFACE WITH THE 8x930Ax 48 STEP 4: DEVELOP THE DEVICE FIRMWARE 49 5.1 OVERVIEW OF FIRMWARE RESOURCES 49 5.1.1 USB FIRMWARE OVERHEAD 49 5.1.2 APPLICATION-SPECIFIC FIRMWARE 49 5.2 FIRMWARE RELATIONSHIP WITH DEVICE CLASS DRIVER 50 5.3 THE 8x930Ax OPERATING MODEL 50 5.3.1 INITIALIZATION 51 5.3.2 UN-ENUMERATED STAGE 52 5.4 USB ENUMERATION CODE 56 STEP 5: DEVELOP THE USB DRIVER 59 6.1 DEVICE CLASS SPECIFICATION AND DRIVER 6.2 OVERVIEW OF WDM 60 59 6.4 WINDOWS NT 6.3 WINDOWS NT SYSTEM OVERVIEW 62 6.3.1 WINDOWS NT STRUCTURE 64 I/O SYSTEM OVERVIEW 66 6.4.1 6.5 6.6 NT OBJECT MODEL 67 WDM DEVICE DRIVER EXAMPLE 68 LOADING THE WDM DRIVERS 72 X STEP 6: DEVELOPING HOST APPLICATION SOFTWARE 79 7.1 7.2 7.3 7.4 MICROSOFT DEVELOPER STUDIO 79 DEVELOP THE APPLICATION SOFTWARE USING APPWIZARD 80 LINKING APPLICATION SOFTWARE TO THE WDM DRIVER 84 COMMUNICATING TO THE WDM DRIVER .85 USB APPLICATION SOFTWARE WDM DRIVER AND FIRMWARE EXAMPLES 89 8.1 8.2 8.3 CONTENT DESCRIPTION OF THE ENCLOSED DISKETTE .90 SETTING UP THE DEMONSTRATION .91 DELETING DRIVER & ID INFORMATION FROM THE HOST 95 CONCLUSION 97 10 GLOSSARY 99 11 APPENDICES 107 11.1 FIRMWARE CODE EXAMPLE FOR INTEL 8x930Ax USB MICROCONTROLLER 107 11.2 A WDM DRIVER CODE EXAMPLE 129 11.3 AN APPLICATION SOFTWARE CODE EXAMPLE 161 XI Table of Figures FIGURE 1-1 CHAPTER LAYOUT .4 FIGURE 2-1 USB BUS TOPOLOGY .9 FIGURE 2-2 LOGICAL CONNECTIONS FROM HOST TO USB DEVICES 10 FIGURE 2-3 CONCEPT OF THE USB PIPES AND ENDPOINTS 10 FIGURE 2-4 USB CONNECTORS (SERIES A) 13 FIGURE 2-5 USAGE OF SERIES A AND SERIES B CONNECTORS 13 FIGURE 2-6 CROSS SECTION OF A FULL SPEED USB CABLE 14 FIGURE 2-7 CONNECTION OF EXTERNAL RESISTORS IN A FULL SPEED DEVICE 14 FIGURE 2-8 A USB TOKEN PACKET 15 FIGURE 2-9 FID PACKET FORMAT 16 FIGURE 2-10 A USB SOF PACKET 17 FIGURE 2-11 A USB DATA PACKET 17 FIGURE 2-12 A USB HANDSHAKE PACKET 17 FIGURE 2-13 AN EXAMPLE OF CONTROL TRANSFER 19 FIGURE 2-14 USB ENUMERATION STATE DIAGRAM 21 FIGURE 2-15 INTER-LAYER COMMUNICATION MODEL 29 FIGURE 3-1 TASKS TO DESIGN A USB DEVICE 32 FIGURE 3-2 DEVELOPMENT ENVIRONMENT (DEVICE SIDE) 32 FIGURE 3-3 DEVELOPMENT ENVIRONMENT (HOST USB DRIVER) 34 FIGURE 4-1 8x930Ax PRODUCT OPTIONS 37 FIGURE 4-2 8x930Ax ADDRESSING SPACE WHEN CONFIGURED TO 256 KBYTES OF ADDRESSING 39 FIGURE 4-3 PAGE MODE FOR EXTERNAL MEMORY ACCESS 40 FIGURE 4-4 THE USB MODULE OF THE 8x930Ax 44 FIGURE 4-5 INTERFACES OF THE 8x930Ax 48 FIGURE 5-1 USB DEVICE PROGRAM FLOW 51 FIGURE 5-2 OPERATION OF TRANSMIT ROUTINES 53 FIGURE 5-3 OPERATION OF RECEIVE ROUTINES 54 FIGURE 5-4 OPERATION OF SOF ROUTINE 55 FIGURE 5-5 FLOW DIAGRAM OF THE ENCLOSED USB_ENUM.ASM 56 FIGURE 5-6 FLOW DIAGRAM OF THE USB_ENUM.ASM 57 FIGURE 6-1 RELATIONSHIP OF THE USB HOST AND THE USB DEVICE 60 FIGURE 6-2 WDM SOFTWARE STACK 61 FIGURE 6-3 A CLIENT/SERVER OPERATING SYSTEM 63 FIGURE 6-4 WINDOWS NT BLOCK DIAGRAM 65 FIGURE 6-5 WINDOWS NT I/O SYSTEM 67 FIGURE 6-6 AN I/O REQUEST EXAMPLE 72 FIGURE 7-1 STARTING A NEW PROJECT WORKSPACE 80 FIGURE 7-2 USING APPWIZARD 81 XIII An Application Software Code Example : // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here } CMainFrame::~CMainFrame() {} int CMainFrame::OnCreate(LPCREATESTRUCT IpCreateStruct) { CString DevName; CMenu * pcMenu, * pcSubMenu; int uDevCnt=0, uCnt=0, nTT=0; if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACEO("FaiIed to create toolbar\n); return -1; // fail to create } if(!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) ! TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Remove this if you don't want tool tips or a resizable toolbar m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // TODO: Delete these three lines if you don't want the toolbar to // be dockable 162 Appendices m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN ANY); DockControlBar(&m_wndToolBar); if((pcMenu=GetMenu()) !=NULL) { pcSubMenu=pcMenu->GetSubMenu(0); DevName.Format("\\\\.\\Test-0"); hDrvrHnd=CreateFile(DevName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); // enable the menu items if successful if (hDrvrHnd != INVALID_HANDLE_VALUE) { theApp.hDrvrHnd=hDrvrHnd; theApp.OnlnitTest(); pcMenu->EnableMenu!tem(0, MF_ENABLED|MF BYPOSITION); pcMenu->EnableMenu!tem( 1, MF_ENABLED|MF_BYPOSITION); pcMenu->EnableMenu!tem(2, MF_ENABLED|MF BYPOSITION); pcMenu->EnableMenu!tem(3, MF_ENABLED|MF_BYPOSITION); pcMenu->EnabIeMenu!tem(4, MF_ENABLED|MF_BYPOSITION); } } DrawMenuBar(); return 0; } 163 An Application Software Code Example //================================== BOOL CMainFrame:;PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFrameWnd::PreCreateWindow(cs); } // CMainFrame diagnostics #ifdef_DEBUG void CMainFrame: :AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif // DEBUG // CMainFrame message handlers void CMainFrame::OnDevdesc() { // TODO: Add your command handler code here } void CMainFrame::OnConfdesc() { // TODO: Add your command handler code here } void CMainFrame::OnAlldesc() { // TODO: Add your command handler code here 164 Appendices } void CMainFrame::OnStrdesc() { // TODO: Add your command handler code here } void CMainFrame::OnInfdesc() { // TODO: Add your command handler code here } void CMainFrame::PostNcDestroy() { // TODO: Add your specialized code here and/or call the base class CFrameWnd::PostNcDestroy(); } 165 An Application Software Code Example // test_app.cpp: Implement the class behaviors for the application software //rev 1.0 // ^include "stdafx.h" ^include "Test_app.h" ^include "MainFrm.h" //include "T_appDoc.h" ^include "T_appView.h" ^include "main.h" #include "devioctl.h" ^include "testdrv.h" #ifdef_DEBUG ^define new DEBUG_NEW #undefTHIS_FILE static char THIS_FILE[] = _FILE_; #endif BEGIN_MESSAGE_MAP(CUsbappApp,CWinApp) //{{AFX_MSG_MAP(CUsbappApp) ON_COMMAND(ID_APP_ABOUT,OnAppAbout) // added here as well for set and get ON_COMMAND(ID_GETDES_DEVICE, OnGetdesDevice) ON_COMMAND(ID_SET_ONE, OnSetOne) ON_COMMAND(ID_SET_TWO, OnSetTwo) ON_COMMAND(ID_GET_ONE, OnGetOne) ON_COMMAND(ID_GET_TWO, OnGetTwo) //}}AFX_MSG_MAP // Standard file based document commands 166 Appendices ON_COMMAND(ID_FILE_NEW,CWinApp::OnFiIeNew) ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen) // Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) END_MESSAGE_ MAP() CUsbappApp::CUsbappApp() { // TODO: add construction code here, // Place all significant initialization in Initlnstance } CUsbappApp theApp; BOOL CUsbappApp::InitInstance() { // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you not need #ifdef_AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif LoadStdProfileSettings(); // Load standard INI file options // (including MRU) // Register the application's document templates Document templates // serve as the connection between documents, frame windows and views CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CUsbappDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window 167 An Application Software Code Example RUNTIME_CLASS(CUsbappView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLinelnfo cmdlnfo; ParseCommandLine(cmdlnfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdlnfo)) return FALSE; return TRUE; } // CAboutDlg dialog USBD for App About class CAboutDlg : public CDialog { publi c: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum {IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{(AFX_MSG(CAboutDlg) // No message handlers //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDIg::CAboutDlg() : CDialog(CAboutDlg::IDD) { 168 Appendices //{{AFX_DATA INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg,CDia1og) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CUsbappApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } // CUsbappApp commands int CUsbappApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class CloseHandle(hDrvrHnd); free(pTestDesc); return CWinApp::ExitInstance(); } void CUsbappApp: :OnGetdesDevice() { PVOID pvBuffer =0; pvBuffer = malloc (sizeof (Usb_Device_Descriptor) + 64); // Perform the Get-Descriptor IOCTL 169 An Application Software Code Example DeviceloControl (hDrvrHnd, IRP_Test_GET_DEVICE_DESCRIPTOR, pvBuffer, sizeof (Usb_Device_Descriptor), pvBuffer, sizeof (Usb_Device_Descriptor), &dwStatus, NULL); free(pvBuffer); AfxMessageBox("completed 'Get Descriptors - Device' "); } void CUsbappApp::OnGetOne() { PVOID pvBuffer =0; pvBuffer = malloc (sizeof (Usb_Device_Descriptor) + 64); // Perform the Get-Descriptor IRP DeviceloControl (hDrvrHnd, IRP_Test GET_CONFIGURATION_DESCRIPTOR, pvBuffer, sizeof (Usb_Device_Descriptor), pvBuffer, sizeof (Usb_Device_Descriptor), &dwStatus, NULL); free(pvBuffer); AfxMessageBox("completed 'Get Command - One' "); } void CUsbappApp::OnGetTwo() { PVOID pvBuffer =0 ; pvBuffer = malloc (sizeof (Usb_Device_Descriptor) + 64); // Perform the Get-Descriptor IRP 170 Appendices DeviceIoControl (hDrvrHnd, IRP_Test_GET_CONFIGURATION_DESCRIPTOR, pvBuffer, sizeof (Usb Device_Descriptor), pvBuffer, sizeof (Usb_Device_Descriptor), &dwStatus, NULL); free(pvBuffer); AfxMessageBox("completed 'Get Command - Two' "); } void CUsbappApp::OnSetOne() // not implemented yet { AfxMessageBox("This function has not been implemented "); } /*{ PVOID pvBuffer =0; pvBuffer = malloc (sizeof (Usb_Device_Descriptor) + 64); // Perform the Get-Descriptor IRP DeviceloControl (hDrvrHnd, IRP TEST_GETTWO, pvBuffer, sizeof (Usb_Device_Descriptor), pvBuffer, sizeof (Usb_Device_Descriptor), &dwStatus, NULL); free(pvBuffer); AfxMessageBox("completed 'Set Command - One' "); }*/ void CUsbappApp::OnSetTwo() // not implemented yet 171 An Application Software Code Example { AfxMessageBox(" This function has not been implemented "); } BOOL CUsbappApp::InitApplication() { // TODO: Add your specialized code here and/or call the base class return CWinApp::InitApplication(); } void CUsbappApp::OnInitTest() { if (hDrvrHnd == INVALID_HANDLE_VALUE) { MessageBox(NULL, "Failed to Locate USB Tset Devices", "Error", MB_OK); } else { if(pTestDesc != NULL) { free(pTestDesc); } //pTestDesc=malloc(sizeof(USBTESTCTRLDESC)); // memset(pTestDesc, 0, sizeof(USBTESTCTRLDESC)); } } 172 Index 12 Index COM port 100 Common Class 60 Communications Class 60 Connectors 13 Series A 13 SeriesB 13 Control Transfer 11,18,100 CRC 17,100 CTI .100 Cyclic Redundancy Checks (CRCs) 17 8x930Ax USB Evaluation Kit .32 8x930Ax USB Microcontroller .37 8x930Ax USB Module 44 8xC51Fx 38 A ACK 17,99 ACK handshake 19, 20, 23 ADDR 16 Address 22 ALE (Address Latch enable) 40 D D- 14, 22, 27,44,48 D/A converter 43 D+ 14, 22, 27, 44,48 Data Packets 17 Default Address 11, 22,100 Default Pipe 100 Development Environment Device Side 31 Host Side 34 Device 9,100 Device Address 10 Device Class Driver 50,59 Device Class Specification 59 Device Classes 60 Device Firmware 49 Device Interface Layer 29 Device Object 100 Device release number, bcdDevice 72 DLL 80,100 Dm0 44,48 Downstream 101 Downstream Devices 13 Dp0 44,48 Driver 60,101 Apbuilder 99 API 99 Application-Specific Firmware ,.49 AppWizard 35,79 Audio Class .60 B Bandwidth 7,99 BigEndian , 99 Bit 99 Bit Stuffing 99 bps .99 Bulk Transfer 12, 20, 99 Bus Enumeration .99 Bus Interface Layer 28 Bus Reset 23 Bus Topology Byte .99 C Cable 13 ClassWizard 80 Client 30,60,99 Client Layer 30, 60 Client/Server Model 62,100 173 Index Driver Object 86,101 DWORD 101 Host Controller Driver (HCD) 30,61 Host Controller Driver Interface 30 Hub 9,102 Hub Class .60 Human Interface Class 60 E ENDP 16 Endpoint 10,101 Endpoint0 22 I Endpoint Address 101 Enumeration Code 56 I/O Manager 66,102 Enumeration Steps 21 Environment Subsystem 101 Environment Subsystems 64 I/O Request Packet (IRP) 66 IEEE 1394 Firewire .61 Image Class 60 IN Packet 52 IN Token .11,17,23,52,58 In-Circuit Emulator (ICE) 33 EOP 101 EPROM 39,49,91,101 Error Checking 17 Evaluation Kit .35,101 External Memory Interface 40 Initialization .51 Integral Subsystems 64 Interrupt Service Routine F (ISR) 41,52 Interrupt System 41 FIFOs 44 File Handle 67, 86,101 Firmware Overhead 49 FLASH memory 49 Frame .7,101 Frame Timer 42 Full Speed Full-duplex 102 Function Function Address Field 16 Function linterface Unit (FIU) 44 Functions 21 Interrupt Transfer 12, 21,102 IRP 66,102 Isochronous Transfer 12,20,102 K kbps 103 Kernel Mode 62, 64,103 L Layered Model 62 Least Significant Bit (LSB) 16 Little Endian .103 Local Procedure Call (LPC) 64 Logical Connections 10 G GET DESCRIPTOR 19,22,23 GND 14,15 Low Speed H M HAL 63,102 Handshake Packet 17,102 Mbps .103 MCS251 37 Hardware Abstraction Layer (HAL) 63,102 MCS51 38 Memory Organization 38 Hardware Watchdog Timer 43 Memphis Operating System 89 MFC DLL 80 HID (human input device) 59 Host 9,28,102 Microsoft Developer Network (MSDN) 34 174 Index Microsoft Developer Studio .79 Microsoft Visual C/C++ .34 Power Supply 15 NAK Handshake 20 Non-Page Mode 40 NRZI Encoding/Decoding 44,103 Preamble (PRE) Packet 18 Printer Class 60 Process 104 Product Identification Information, idProduct 72 Programmable Counter Array (PCA) 37,43 Protocol 18,105 Pull Up Resistor 14 Pulse Code Modulation (PCM) 12 Pulse Width Modulation (PWM) 43 NT Executive 63,103 R Modem 103 Most Significant Bit (MSB) 16,103 Multitasking 62,103 N NACK 17,103 NT Executive's I/O system 66 NT Kernel 63 Receive Routine 53 References Remote Wakeup 27 O Request .105 Object 103 Reset 27 Resume 27 RETI 41 RISM 33 ROMless 39 Root Hub 9,105 Root Port 105 Object Manager 65,103 Object Model 63,67 OLE ControlWizard 80 Open Host Controller Interface (OHCI) 30,61 OSI .28,104 OUT Packet 52 OUT Token 11,17,20,23, 53 S P SCSI 105 SEO (single-ended zero) 27 Serial Bus Interface Engine (SIE) 44 Serial Interface Engine (SIE) 61 Serial Port (UART) 43 Series Resistors 14 SET ADDRESS 22, 23, 27, 58 SET CONFIGURATION 20, 22 SETUP Packet 52 Packet 104 Packet Formats 15 Packet ID 104 Page Mode 40 PC Legacy Class 60 PCI 104 Physical Device 104 Physical Interface Class 60 FID 15 Setup Routine 54 Pipe 10,104 PLL 104 SETUP Token 19, 52, 58 SFR(s) 46,105 Single Step Transaction Debugger (SSTD) 33 SOF 15,17,105 SOF interrupt 42 SOF Packet 19,24,42 Plug and Play 3, 21, 61, 89, 104 PlugFest 97 Polling 104 Port Enable and Reset 22 POTS 104 Power Class 60 175 Index SOF Routine 55 SOF Tokens 20 Special Function Register(s) (SFRs) 46 Universal Asynchronous Receiver and Transmitter (UART) 37,106 Universal Host Controller Interface (UHCI) 30,61 Universal Serial Bus Device (USBD) 9,106 Universal Serial Bus Interface 106 Universal Serial Bus Software 106 Upstream 106 Special Packets 18 Stage 18,105 STALL 17 STALL Handshake .20 Start of Frame (SOF) Packets 17 Storage Class 60 Suspend 27 Symmetric Multiprocessing 64 SYNC 15 Synchronization .105 Upstream Devices 13 USB 106 USB DDK 34 USB Driver (USBD) 30, 61 TDM 105 Thread 62,105 USB Request Block (URB) .6 USB Implementers Forum Thread Scheduling 63,106 Tiered Star Topology Time Division Multiplexing (TDM) 7,105 V r User Mode .61, 64,106 Time-Out 106 Timer/Counter Units 43 Vbus 14,15,22 Token Packets 15,106 Transaction 106 Vendor Identification Information, idVendor 72 Transfer Type 11,106 Transmit Routine 52 TRAP Interrupt .42 W U Un-Enumerated Stage 52 WDM DDK 68 WDM Device Driver 68 WDM USB DDK 68 Win32 Driver Model (WDM) 60 Win32 SDK 34 Windows Driver Model 34 Windows NT 34,62 Windows NT DDK 34 Windows NT Driver Model 62 176 ... 62 6. 3.1 WINDOWS NT STRUCTURE 64 I/O SYSTEM OVERVIEW 66 6. 4.1 6. 5 6. 6 NT OBJECT MODEL 67 WDM DEVICE DRIVER EXAMPLE 68 LOADING THE WDM DRIVERS 72 X STEP 6: DEVELOPING... ENCLOSED USB_ ENUM.ASM 56 FIGURE 5 -6 FLOW DIAGRAM OF THE USB_ ENUM.ASM 57 FIGURE 6- 1 RELATIONSHIP OF THE USB HOST AND THE USB DEVICE 60 FIGURE 6- 2 WDM SOFTWARE STACK 61 FIGURE 6- 3 A CLIENT/SERVER... September 19 96 It can be ordered from: Intel Corporation Literature Sales P.O Box 764 1 Mt Prospect, IL 60 0 56- 764 1 Or call 1-800-879- 468 3 or http://www.intel .com/ design /usb/ manuals [4] "8x93QAx USB Microcontroller
- Xem thêm -

Xem thêm: usb USB Thư Viện Tài Liệu Tổng Hợp Com 6 USB PC USB, usb USB Thư Viện Tài Liệu Tổng Hợp Com 6 USB PC USB

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay