第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.1 USB主机 5
1.2.2 USB设备 6
1.2.3 USB的连接 7
1.3.1 USB主控制器芯片 10
1.3 USB接口芯片 10
1.3.2 USB集线器芯片 11
1.3.3 USB功能设备芯片 12
1.4 USB系统的开发 13
1.4.1 选择芯片 14
1.4.2 开发环境 15
1.4.3 设计调试 16
第2章 USB系统 17
2.1 USB系统的结构 17
2.1.1 USB主机 17
2.1.2 USB设备 20
2.2.1 功能层 23
2.2 USB系统的分层 23
2.2.2 USB设备层 24
2.2.3 USB总线接口层 25
2.3 USB通信流 27
2.3.1 USB传输管理 27
2.3.2 传输中的事务处理 27
第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设备速度的识别 35
3.1.5 USB信号状态 37
3.2 USB电源 44
3.2.1 电源分配 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) 47
4.1.4 端点字段(ENDP) 48
4.1.5 帖号字段 49
4.1.6 数据字段 49
4.1.7 CRC字段 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.3 PING事务处理 55
4.3.2 OUT事务处理 55
4.3.4 SETUP事务处理 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 设备状态机制 62
5.2 传输类型 65
5.2.1 块传输 66
5.2.2 中断传输 73
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章 USB设备 96
6.1 设备状态 96
6.1.2 上电状态 97
6.1.1 连接状态 97
6.1.3 缺省状态 98
6.1.4 地址状态 98
6.1.5 配置状态 98
6.1.6 挂起状态 98
6.2 总线列举 99
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.4 其它速率配置描述符(Other_Speed_Configuration) 105
6.3.5 接口描述符(Interface) 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.5 GetDescriptor请求 112
6.4.4 SetAddress请求 112
6.4.6 SetDescriptor请求 113
6.4.7 GetConfiguration请求 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 集线器设备类请求 131
8.3 HID设备类 132
8.3.1 HID概述 132
8.3.2 HID设备类描述符 134
8.3.3 HID设备类请求 141
第9章 USB设备驱动程序开发基础 144
9.1 WDM概述 144
9.2.2 驱动程序的分层 145
9.2.1 驱动程序的种类 145
9.2 WDM驱动程序的分层 145
9.2.3 USB驱动程序栈 147
9.2.4 设备对象和设备栈 149
9.2.5 USB设备栈 150
9.3 WDM内核模式对象 152
9.3.1 I/O请求包(IRP) 152
9.3.2 驱动程序对象 156
9.3.3 设备对象 157
9.4 WDM驱动程序的组成 159
9.3.4 设备扩展 159
9.4.1 驱动程序入口例程(DriverEntry) 160
9.4.2 即插即用例程 160
9.4.3 分发例程 164
9.4.4 电源管理例程 165
9.4.5 卸载例程 168
第10章 USB设备即插即用的实现 169
10.1 即插即用体系结构 169
10.2 即插即用设备状态 171
10.3 启动设备 172
10.3.1 功能驱动程序启动设备 172
10.3.3 总线驱动程序启动设备 173
10.3.2 过滤驱动程序启动设备 173
10.3.4 USB设备的添加和启动 174
10.4 停止设备 179
10.4.1 停止设备的处理过程 179
10.4.2 处理IRP_MN_STOP_DEVICE IRP 180
10.5 删除设备 181
10.5.1 删除设备的处理过程 181
10.5.2 处理IRP_MN_REMOVE_DEVICE IRP 183
10.6 PnP IRP及其处理规则 185
10.6.1 PnP IRP 185
10.6.2 PnP IRP的处理规则 186
10.6.3 沿设备栈向下传递PnP IRP 187
10.6.4 推迟PnP IRP的处理直至其下层驱动程序处理完毕 188
第11章 USB设备驱动程序编程接口 192
11.1 USBDI概述 192
11.1.1 USBDI的定义 192
11.1.2 USBDI的通信管理 193
11.2 URB 194
11.2.1 URB的结构 194
11.2 _URB_HEADER的结构 195
11.3 USBDI接口函数 198
11.4 USB设备的配置 200
11.4.1 读取USB描述符 201
11.4.2 为USB设备选择一个配置 204
11.5 USB设备的数据传输 206
11.5.1 USB块传输和中断传输 207
11.5.2 USB同步传输 207
11.5.3 USB控制传输 208
第12章 USB设备驱动程序开发环境 210
12.1 系统环境设置 210
12.2 BUILD工具 212
12.2.1 环境变量 213
12.2.2 sources文件 213
12.2.3 dirs文件 215
12.2.4 makefile文件 216
12.2.5 构造日志文件 216
12.2.6 BUILD工具的调用 216
12.2.7 NMAKE工具 217
12.3 Visual C++开发环境设置 218
12.3.1 Makefile项目 218
12.3.2 DrvBuild.bat批处理文件 221
12.3.3 注意事项 222
12.3.4 USB设备驱动程序开发框架 223
12.4 USB设备驱动程序的安装 223
12.4.1 安装过程 224
12.4.2 INF文件 228
第13章 三种常用USB接口芯片 240
13.1 CY7C630/1xxA 240
13.1.1 芯片结构 240
13.1.2 存储器 241
13.1.3 复位 243
13.1.4 通用I/O端口(GPIO) 244
13.1.5 中断 245
13.1.6 USB引擎 247
13.1.7 CY7C63001A的编程 250
13.1.8 CY7C63001A的开发者工具包 253
13.1.9 CY7C63001A的EPROM编程器 256
13.2 EZ-USB 257
13.2.1 芯片结构 257
13.2.2 增强型8051CPU 260
13.2.3 存储空间 262
13.2.4 I/O系统 264
13.2.5 列举和重列举 266
13.2.6 USB中断 270
13.3 EZ-USB FX2 273
13.3.1 芯片结构 273
13.3.2 增强型8051CPU 276
13.3.3 存储空间 279
13.3.4 I/O系统 281
13.3.5 列举和重列举 284
第14章 USB接口温度控制器 288
14.1 系统概述 288
14.2 系统硬件设计 289
14.3 芯片固件程序 290
14.3.1 63001.inc 290
14.2.2 功能单元电路 290
14.2.1 USB接口电路 290
14.3.2 DS1620.inc 291
14.3.3 USB.asm 292
14.3.4 DS1620.asm 305
14.4 设备驱动程序 306
14.4.1 通用结构定义 306
14.4.2 DriverEntry例程 308
14.4.3 AddDevice例程 308
14.4.4 IRP_MJ_PNP处理例程 310
14.4.5 分发例程 321
14.4.6 电源管理例程 325
14.5 Win32应用程序 327
14.4.7 卸载例程 327
14.5.1 Modulel模块 328
14.5.2 Forml窗体 331
第15章 RS232-USB转换器 335
15.1 系统概述 335
15.2 系统硬件设计 336
15.2.1 USB接口电路 337
15.2.2 功能单元电路 337
15.3 芯片固件程序 337
15.3.1 Ram.inc 338
15.3.2 Hiduart.asm 339
15.3.3 Usbcode.asm 343
15.4 Win32应用程序 350
15.4.1 连接按钮 351
15.4.2 接收线程 353
15.4.3 发送按钮 354
15.4.4 组合框 355
15.4.5 断开按钮 356
第16章 USB接口波形发生器 357
16.1 系统概述 357
16.2 系统硬件设计 358
16.2.3 波形输出单元 360
16.2.2 DDFS控制单元 360
16.2.1 USB接口单元 360
16.3 芯片固件程序 361
16.3.1 testregs.h和testregs.inc 361
16.3.2 testheader.h 362
16.3.3 dscrptr.a51 362
16.3.4 delayms.a51 363
16.3.5 jmptable.a51 363
16.3.6 main.c 364
16.3.7 function.c 369
16.4 设备驱动程序 371
16.4.1 loaderwave.sys 372
16.4.2 usbwave.sys 377
16.5 Win32应用程序 382
16.5.1 波形选择组按钮 383
16.5.2 输出控制组按钮 385
16.5.3 USB组按钮 387
第17章 USB接口数字示波器 388
17.1 系统概述 388
17.2 系统硬件设计 389
17.2.2 控制信号产生单元 391
17.2.3 USB接口单元 391
17.2.1 数据采集单元 391
17.3 芯片固件程序 392
17.3.1 dscrptr.a51 392
17.3.2 main..c 392
17.3.3 function.c 393
17.4 设备驱动程序 396
17.4.1 loadergraph.sys 396
17.4.2 usbgraph.sys 396
17.5 Win32应用程序 398
17.5.1 采集控制组按钮 399
17.5.2 开关量输出组按钮 401
17.5.3 USB组按钮 402
第18章 USB2.0接口频谱分析仪 404
18.1 系统概述 404
18.2 系统硬件设计 405
18.2.1 信号预处理单元 407
18.2.2 AD采集&FFT运算单元 407
18.2.3 USB接口单元 407
18.3 芯片固件程序 408
18.3.1 testregs.h和testregs.inc 408
18.3.2 testheader.h 409
18.3.3 testdly.h 409
18.3.4 dscrptr.a51 410
18.3.5 delayms.a51 411
18.3.6 jmptable.a51 412
18.3.7 main.c 413
18.3.8 function.c 417
18.4 设备驱动程序 419
18.4.1 loaderfft.sys 419
18.4.2 usbfft.sys 420
18.5 Win32应用程序 421
18.5.1 分析控制组按钮 422
18.5.2 USB组按钮 425
19.1 系统概述 428
第19章 USB2.0接口逻辑分析仪 428
19.2 系统硬件设计 429
19.2.1 电压比较单元 431
19.2.2 控制信号产生单元 431
19.2.3 USB接口单元 431
19.3 芯片固件程序 432
19.3.1 function.c 432
19.3.2 gpif.c 434
19.4 设备驱动程序 436
19.4.1 loaderlogic.sys 436
19.4.2 usblogic.sys 437
19.5 Win32应用程序 438
19.5.1 分析控制组按钮 439
19.5.2 USB组按钮 440
第20章 USB2.0接口数据采集卡 442
20.1 系统概述 442
20.2 系统硬件设计 443
20.2.1 数据采集单元 445
20.2.2 控制信号产生单元 445
20.2.3 USB接口单元 445
20.3.1 function.c 446
20.3 芯片固件程序 446
20.3.2 gpif.c 449
20.4 设备驱动程序 450
20.4.1 loadersample.sys 450
20.4.2 usbsample.sys 451
20.5 Win32应用程序 452
20.5.1 采集控制组按钮 453
20.5.2 USB组按钮 455
附录A CY7C63001A寄存器 457
附录B EZ-USB寄存器 458
附录C EZ-USB FX2寄存器 463
附录D 关于光盘 472