目录 1
第1章USB概述 1
1.1 USB的产生 1
1.1.1 背景 1
1.1.2 USB的特点 2
1.1.3 USB的发展历史及前景展望 4
1.2 USB系统描述 5
1.2.2 USB设备 6
1.2.1 USB主机 6
1.2.3 USB的连接 8
1.3 USB接口芯片 11
1.3.1USB主控制器芯片 11
1.3.2 USB集线器芯片 11
1.3.3 USB功能设备芯片 12
1.4 USB系统的开发 14
1.4.1选择芯片 14
1.4.2开发环境 15
1.4.3设计调试 16
第2章USB系统 18
2.1 USB系统的结构 18
2.1.1 USB主机 18
2.1.2 USB设备 21
2.2USB系统的分层 23
2.2.1 功能层 24
2.2.2 USB设备层 25
2.2.3 USB总线接口层 26
2.3 USB通信流 27
2.3.1 USB传输管理 28
2.3.2传输中的事务处理 29
第3章USB信号和电源 30
3.1 USB信号 30
3.1.1 USB信号的发送 30
3.1.2 USB信号的接收 32
3.1.3 高速USB信号的眼图 33
3.1.4 USB设备速度的识别 36
3.1.5 USB信号状态 37
3.2.1 电源分配 44
3.2 USB电源 44
3.2.2电源管理 45
第4章USB事务处理 46
4.1字段的格式 46
4.1.1 同步字段(SYNC) 46
4.1.2 包标识字段(PID) 47
4.1.3 地址字段(ADDR) 48
4.1.4 端点字段(ENDP) 48
4.1.7 CRC字段 49
4.1.6数据字段 49
4.1.5帧号字段 49
4.2信息包的格式 50
4.2.1令牌包 50
4.2.2数据包 52
4.2.3握手包 53
4.3事务处理 54
4.3.1 IN事务处理 54
4.3.2 OUT事务处理 55
4.3.4 SETUP事务处理 56
4.3.3 PING事务处理 56
4.3.5 SOF事务处理 57
4.3.6 SPLIT事务处理 57
4.3.7 PRE事务处理 59
第5章USB数据传输 61
5.1状态机制 61
5.1.1 主控制器状态机制 62
5.1.2设备状态机制 63
5.2传输类型 65
5.2.1 块传输 66
5.2.2 中断传输 72
5.2.3 同步传输 77
5.2.4控制传输 82
5.3差错控制 88
5.3.1信息包错误控制机制 88
5.3.2总线超时控制机制 89
5.3.3 EOP错误控制机制 91
5.3.4数据触发机制 92
5.3.5 串扰和活动丢失控制机制 94
6.1设备状态 96
第6章USB设备 96
6.2总线列举 98
6.2.1 USB设备的连接 99
6.2.2 USB设备的断开 101
6.3描述符 101
6.3.1设备描述符(Device) 102
6.3.2设备限定描述符(Device_Qualifier) 103
6.3.3配置描述符(Configuration) 104
6.3.5接口描述符(Interface) 105
6.3.4其他速率配置描述符(Other_Speed_Configuration) 105
6.3.6端点描述符(Endpoint) 107
6.3.7字符串描述符(String) 108
6.4设备请求 108
6.4.1 GetStatus请求 109
6.4.2 ClearFeature请求 111
6.4.3 SetFeature请求 111
6.4.4 SetAddress请求 112
6.4.5 GetDescriptor请求 112
6.4.7 GetConfiguration请求 113
6.4.6 SetDescriptor请求 113
6.4.8 SetConfiguration请求 114
6.4.9 GetInterface请求 114
6.4.10 SetInterface请求 114
6.4.11 SynchFrame请求 115
第7章USB主机 116
7.1 USB主机的结构 116
7.2客户软件 117
7.3 USB系统软件 117
7.3.1配置设备 118
7.3.2资源管理 119
7.3.3数据传输 119
7.4 USB主控制器驱动程序 119
7.5 USB总线驱动程序 120
7.5.1命令机制 121
7.5.2管道机制 122
7.6 USB主控制器 123
第8章USB设备类 125
8.1设备类的定义 125
8.2.1 集线器的结构 126
8.2集线器设备类 126
8.2.2集线器设备类描述符 129
8.2.3集线器的标准USB描述符 130
8.2.4集线器设备类请求 132
8.3 HID设备类 133
8.3.1 HID概述 133
8.3.2 HID设备类描述符 135
8.3.3 HID设备类请求 142
9.1 WDM概述 145
第9章USB设备驱动程序开发基础 145
9.2 WDM驱动程序的分层 146
9.2.1驱动程序的种类 146
9.2.2驱动程序的分层 146
9.2.3 USB驱动程序栈 148
9.2.4设备对象和设备栈 150
9.2.5 USB设备栈 151
9.3 WDM内核模式对象 153
9.3.1 I/O请求包(IRP) 153
9.3.2驱动程序对象 157
9.3.3设备对象 158
9.3.4设备扩展 159
9.4WDM驱动程序的组成 160
9.4.1驱动程序入口例程(DriverEntry) 160
9.4.2即插即用例程 161
9.4.3分发例程 165
9.4.4电源管理例程 166
9.4.5卸载例程 169
10.1即插即用体系结构 170
第10章USB设备即插即用的实现 170
10.2即插即用设备状态 172
10.3启动设备 173
10.3.1功能驱动程序启动设备 173
10.3.2过滤驱动程序启动设备 174
10.3.3总线驱动程序启动设备 174
10.3.4 USB设备的添加和启动 175
10.4停止设备 180
10.4.1停止设备的处理过程 180
10.4.2处理IRP_MN_STOP_DEVICEIRP 181
10.5.1删除设备的处理过程 182
10.5删除设备 182
10.5.2 处理IRP_MN_REMOVE_DEVICE IRP 184
10.6 PnP IRP及其处理规则 186
10.6.1 PnP IRP 186
10.6.2 PnP IRP的处理规则 187
10.6.3沿设备栈向下传递PnP IRP 189
10.6.4推迟PnP IRP的处理直至其下层驱动程序处理完毕 190
11.1.1 USBDI的定义 194
11.1 USBDI概述 194
第11章USB设备驱动程序编程接口 194
11.1.2 USBDI的通信管理 195
11.2 URB 196
11.2.1 URB的结构 196
11.2.2 _URB_HEADER的结构 197
11.3 USBDI接口函数 201
11.4 USB设备的配置 203
11.4.1 USB描述符 203
11.4.2为USB设备选择一个配置 207
11.5 USB设备的数据传输 209
11.5.2 USB同步传输 210
11.5.1 USB块传输和中断传输 210
11.5.3 USB控制传输 212
第12章USB设备驱动程序开发环境 213
12.1系统环境设置 213
12.2 BUILD工具 215
12.2.1环境变量 216
12.2.2 sources文件 216
12.2.3 dirs文件 218
12.2.6 BUILD工具的调用 219
12.2.4 makefile文件 219
12.2.5构造日志文件 219
12.2.7 NMAKE 220
12.3 Visual C++环境设置 221
12.3.1 Makefile项目 221
12.3.2 DrvBuild.bat批处理文件 224
12.3.3注意事项 225
12.3.4 USB设备驱动程序开发框架 226
12.4 USB设备驱动程序的安装 226
12.4.1安装过程 227
12.4.2 INF文件 231
第13章三种常用USB接口芯片 243
13.1 CY7C630/1xxA 243
13.1.1 芯片结构 243
13.1.2存储器 245
13.1.3复位 247
13.1.4通用I/O端口(GPIO) 248
13.1.5中断 249
13.1.6 USB引擎 251
13.1.7 CY7C63001A的编程 254
13.1.8 CY7C63001A的开发者工具包 257
13.1.9 CY7C63001A的EPROM编程器 260
13.2 EZ-USB 261
13.2.1芯片结构 261
13.2.2增强型8051CPU 264
13.2.3存储空间 267
13.2.4 I/O系统 269
13.2.5列举和重列举 271
13.2.6 USB中断 276
13.3.1 芯片结构 279
13.3 EZ-USB FX2 279
13.3.2增强型8051CPU 282
13.3.3存储空间 285
13.3.4 I/O系统 287
13.3.5列举和重列举 292
第14章USB接口温度控制器 295
14.1系统概述 295
14.2系统硬件设计 296
14.3芯片固件程序 297
14.3.1 63001.inc 297
14.2.1USB接口电路 297
14.2.2功能单元电路 297
14.3.2DS1620.inc 298
14.3.3USB.asm 299
14.3.4 DS1620.asm 313
14.4设备驱动程序 314
14.4.1通用结构定义 314
14.4.2 DriverEntry例程 316
14.4.3 AddDevice例程 317
14.4IRP_MJ_PNP处理例程 318
14.4.5分发例程 330
14.4.6电源管理例程 334
14.4.7卸载例程 336
14.5 Win32应用程序 336
14.5.1 Modulel模块 336
14.5.2 Forml窗体 340
15.1系统概述 344
第15章RS232-USB转换器 344
15.2系统硬件设计 345
15.2.1 USB接口电路 346
15.2.2功能单元电路 346
15.3芯片固件程序 346
15.3.1 Ram.inc 347
15.3.2 Hiduart.asm 348
15.3.3 Usbcode.asm 352
15.4 Win32应用程序 360
15.4.1连接按钮 360
15.4.2接收线程 363
15.4.3发送按钮 365
15.4.4组合框 365
15.4.5断开按钮 366
第16章USB接口波形发生器 367
16.1系统概述 367
16.2系统硬件设计 368
16.2.1 USB接口电路 369
16.2.2功能单元电路 369
16.3芯片固件程序 369
16.3.1 testregs.h和testregs.inc 370
16.3.2 testheader.h 371
16.3.3 dserptr.a51 371
16.3.4 delayms.a51 372
16.3.5 jmptable.a51 373
16.3.6 main.c 373
16.3.7function.c 379
16.4设备驱动程序 383
16.4.1 loader.sys 383
16.4.2 usbda.sys 389
16.5 Win32应用程序 397
16.5.1DA0832组按钮 398
16.5.2 AN2131组按钮 399
16.5.3 USB组按钮 399
第17章USB接口数据采集卡 406
17.1系统概述 406
17.2系统硬件设计 407
17.2.2功能单元电路 409
17.3芯片固件程序 409
17.2.1 USB接口电路 409
17.3.1 main.c 410
17.3.2 function.c 412
17.4 Win32应用程序 417
17.4.1块传输的实现 418
17.4.2 同步传输的实现 422
第18章USB2.0接口频谱分析仪 426
18.1系统概述 426
18.2系统硬件设计 427
18.3.1 testregs.h和testregs.inc 428
18.3芯片固件程序 428
18.3.2 testheader.h 429
18.3.3 testdly.h 430
18.3.4 dscrntr.a51 431
18.3.5 delayms.a51 432
18.3.imptable.a51 433
18.3.7 main.c 433
18.3.8function.c 438
18.4设备驱动程序 440
18.4.2 bulktest.sys 441
18.4.1 loader.sys 441
18.5 Win32应用程序 442
18.5.1 8051锁定和复位按钮 443
18.5.2下载程序按钮 444
18.5.3设置按钮 446
18.5.4开始按钮和结束按钮 446
附录A CY7C63001A寄存器 450
附录B EZ-USB寄存器 451
附录C EZ-USBFX2寄存器 456
附录D关于光盘 466