第1章 USB的基本结构与特性 1
1.1 USB的基本概念 1
1.2 USB的开发历程 3
1.2.1 USB 1.1 3
1.2.2 USB 2.0 3
1.2.3 USB 1.1与2.0规范的比较 5
1.2.4 USB与IEEE 1394的比较 7
1.3 USB的总线结构 8
1.4 USB基本架构与总线架构 11
1.5 USB数据流的模式与管线的概念 15
1.5.1 端点 16
1.5.2 管线 17
1.6 USB硬件规范 18
1.6.1 USB的硬件特性 18
1.6.2 USB接口的电气特性 20
1.6.3 USB 2.0规范的变动 22
1.6.4 USB的电源管理 23
1.7 USB速度的基本概念 24
1.8 结论 25
1.9 问题与讨论 26
第2章 USB信号状态与编码方式 27
2.1 差动信号 27
2.2 USB的编码方式 28
2.3 USB总线状态 30
2.3.1 低速与全速的总线状态 30
2.3.2 高速的总线状态 32
2.4 问题与讨论 36
第3章 USB通信协议 37
3.1 USB通信的基本概念 37
3.2 USB通信协议——传输 39
3.2.1 传输类型 40
3.2.2 信号管线与数据流管线 42
3.3 USB通信协议——数据交易 43
3.4 USB封包中的数据域类型 45
3.5 封包格式 48
3.6 分割数据交易 55
3.7 错误检查 58
3.7.1 循环冗余检验位 59
3.7.2 数据紧密连接位 60
3.8 带宽的提高 62
3.9 问题与讨论 65
第4章 USB的传输类型 66
4.1 USB的传输类型简介 66
4.2 控制传输 69
4.3 批量传输 74
4.3.1 批量传输的数据交易格式 74
4.3.2 数据容量与传输速度 76
4.4 中断传输 77
4.4.1 中断传输的数据交易格式 78
4.4.2 数据容量与传输速度 79
4.5 等时传输 80
4.5.1 等时传输的数据交易格式 80
4.5.2 数据容量与传输速度 82
4.6 USB标准要求 83
4.6.1 标准设备要求 87
4.6.2 标准接口要求 88
4.6.3 标准端点要求 89
4.7 问题与讨论 91
第5章 设备列举 92
5.1 登录编辑器 92
5.2 USB描述符 97
5.2.1 设备描述符 104
5.2.2 配置描述符 106
5.2.3 接口描述符 108
5.2.4 端点描述符 110
5.2.5 字符串描述符 111
5.2.6 群组与报告描述符 112
5.2.7 兼容USB 2.0规范的描述符 113
5.3 USB设备群组 120
5.4 设备列举的步骤 121
5.5 设备列举步骤的实现——使用CATC分析工具 124
5.6 结论 135
5.7 问题与讨论 136
第6章 USB芯片介绍 137
6.1 USB芯片简介 137
6.2 USB接口芯片 140
6.2.1 NXP接口芯片 140
6.2.2 National Semiconductor接口芯片 142
6.3 内含USB单元的微处理器 145
6.3.1 Freescale 145
6.3.2 Microchip 146
6.3.3 SIEMENS 147
6.3.4 Cypress 148
6.4 USB芯片总览介绍 150
6.5 USB芯片的选择与评估 152
6.6 问题与讨论 153
第7章 设备与驱动程序 154
7.1 层式的驱动程序 154
7.2 主机的驱动程序 156
7.3 驱动程序的选择 160
7.4 USB外围设备的开发与设计 161
7.5 结论 162
7.6 问题与讨论 162
第8章 HID群组 163
8.1 HID简介 163
8.2 HID群组的特性与限制 164
8.3 HID基本要求 165
8.3.1 端点 166
8.3.2 控制管线(端点) 166
8.3.3 中断传输 167
8.4 固件要求 167
8.5 识别HID设备 168
8.5.1 描述符的内容 169
8.5.2 启动接口 172
8.5.3 版本修订的相容性 173
8.5.4 HID群组描述符 173
8.6 报告描述符 175
8.7 HID群组要求 179
8.8 问题与讨论 186
第9章 Visual Basic 6.0简介 188
9.1 踏出Visual Basic的第一步 188
9.2 集成开发环境的介绍 189
9.3 变量类型 192
9.4 基本语法 194
9.5 工具箱 198
9.6 编写第一个Visual Basic应用程序 204
9.6.1 第一个Visual Basic应用程序 204
9.6.2 存储所建的程序文件 207
9.6.3 进阶程序的设计 209
第10章 用Visual Basic编写USB应用程序 209
10.1 主机通信的基本概念 214
10.2 主机如何发现设备 215
10.3 相关文件 217
10.4 HID函数 218
10.5 API函数与Visual Basic的基本概念 220
10.6 声明 221
10.6.1 ByRef与ByVal传递的格式 223
10.6.2 传递空值 224
10.6.3 函数与子程序 225
10.6.4 提供DLL名称 226
10.6.5 字符串格式 226
10.6.6 结构 227
10.6.7 如何调用函数 227
第11章 API函数的基本介绍 229
11.1 Windows与HID设备通信的API函数 229
11.2 寻找所有的HID设备 230
11.2.1 取得HID群组的GUID——HidD_GetHidGuid()函数 230
11.2.2 取得所有HID信息的结构数组SetupDiGetClassDevs()函数 231
11.2.3 识别每一个HID接口——SetupDiEnumDeviceInterfaces()函数 232
11.2.4 取得设备的路径——SetupDiGetDeviceInterfaceDetail()函数 234
11.2.5 取得设备的标示代号——CreateFile()函数 236
11.2.6 取得厂商与产品ID——HidD_GetAttributes()函数 237
11.3 检查HID设备功能 239
11.3.1 取得包含设备能力的缓冲区指针——HidD_GetPreparsedData()函数 239
11.3.2 取得设备的能力——HidP_GetCaps()函数 240
11.3.3 取得数值的能力——HidP_GetValueCaps()函数 241
11.4 读取与写入数据 243
11.4.1 传送输出报告给设备——WriteFile()函数 244
11.4.2 从设备读取输入报告——ReadFile()函数 246
11.4.3 传送特性报告给设备——HidD_SetFeature()函数 249
11.4.4 从设备读取特性报告给——Get_Feature()函数 249
11.5 关闭通信——CloseHandle()函数 250
第12章 Visual Basic USB接口程序设计 250
12.1 HID API函数的引用 252
12.2 打开HID设备的通信步骤 262
12.3 Visual Basic窗体程序的设计 263
12.3.1 取得HID群组的GUID——HidD_GetHidGuid()函数 267
12.3.2 取得所有HID信息的结构数组——SetupDiGetClassDevs()函数 269
12.3.3 识别每一个HID接口——SetupDiEnumDeviceInterfaces()函数 270
12.3.4 取得设备的路径——SetupDiGetDeviceInterface-Detail()函数 272
12.3.5 取得设备的标示代号——CreateFile()函数 274
12.3.6 取得厂商与产品ID——HidD_GetAttributes()函数 275
12.3.7 取得包含设备能力的缓冲区指针——HidD_GetPreparsedData()函数 277
12.3.8 取得设备的能力——HidP_GetCaps()函数 278
12.3.9 取得数值的能力——HidP_GetValueCaps()函数 280
12.3.10 传送输出报告给设备——WriteFile()函数 281
12.3.11 从设备读取输入报告——ReadFile()函数 283
12.4 完整的应用程序 285
第13章 EZ-USB FX简介 288
13.1 USB特性概述 288
13.2 EZ-USB FX硬件框图 289
13.3 USB核心 291
13.4 EZ-USB FX单片机 292
13.5 EZ-USB FX端点 293
13.5.1 EZ-USB FX批量端点 293
13.5.2 EZ-USB FX控制端点0 294
13.5.3 EZ-USB FX中断端点 294
13.5.4 EZ-USB FX等时端点 294
13.6 硬件规范与引脚 295
第14章 USB开发工具组的使用与操作 295
14.1 工具组的介绍 296
14.2 DMA-USB FX开发系统 297
14.2.1 DMA-USB FX开发系统及外围整体环境介绍 301
14.2.2 DMA-USB FX开发系统与PC连接软件介绍 301
14.2.3 DMA-USB FX硬件功能介绍 302
14.2.4 DMA-USB FX开发系统配件及硬件需求 307
14.3 USB通用实验器系统介绍 307
14.4 USB简易I/O实验板系统 311
14.5 DMA-USB 2131控制单板 313
14.5.1 DMA-USB 2131控制单板外围整体环境介绍 313
14.5.2 DMA-USB 2131控制单板硬件功能介绍 315
14.6 EZ-USB FX驱动程序安装 317
14.7 控制平台应用环境基本操作 319
14.8 EZ-USB控制平台总览 321
14.8.1 主界面 322
14.8.2 热插拔新的USB设备 323
14.8.3 各种工具栏的使用 324
14.8.4 故障排除 327
14.8.5 控制平台的进阶操作 328
14.9 DMA-USB FX开发系统测试软件及工具 328
第15章 EZ-USB FX设备列举与重新设备列举 328
15.1 设备列举与重新设备列举概述 331
15.2 预设的USB设备 336
15.3 USB核心对于EP0设备请求的响应 339
15.4 固件下载 341
15.5 设备列举模式 342
15.6 不存在EEPROM 343
15.7 存在EEPROM,第一个字节是0xB0(0xB4,FX系列) 344
15.8 存在EEPROM,第一个字节是0xB2(0xB6,FX系列) 345
15.9 重新设备列举 348
15.10 控制平台的制造商要求测试 349
第16章 LED显示器输出实验 354
16.1 硬件设计与基本概念 354
16.2 固件程序代码的下载程序 355
16.3 固件程序代码的EEPROM烧录程序 359
16.3.1 B6(或B2)格式文件 359
16.3.2 EEPROM数据的回复 361
16.3.3 第一个字节为B4(或B0) 363
16.4 Visual Basic程序设计 365
16.5 INF文件的编写设计 367
16.7 结论 369
16.8 问题与讨论 369
第17章 USB输出实验范例一 370
17.1 七段显示器 370
17.1.1 硬件设计与基本概念 370
17.1.2 固件程序代码的EEPROM烧录程序 372
17.1.3 INF安装信息文件的编写 373
17.1.4 Visual Basic应用程序设计 375
17.2 8×8点矩阵 378
17.2.1 硬件设计与基本概念 378
17.2.2 固件程序代码的EEPROM烧录程序 380
17.2.3 INF安装信息文件的编写 382
17.2.4 Visual Basic应用程序设计 383
17.3 问题与讨论 384
第18章 USB输出实验范例二 385
18.1 液晶显示器(LCD)输出实验范例 385
18.1.1 硬件设计与基本概念 385
18.1.2 固件程序代码的EEPROM烧录程序 389
18.1.3 INF安装信息文件的编写 389
18.1.4 Visual Basic应用程序设计 390
18.2 绘图型LCD显示器输出实验范例 393
18.2.1 硬件设计与基本概念 393
18.2.2 固件程序代码的EEPROM烧录程序 395
18.2.3 INF安装信息文件的编写 395
18.2.4 Visual Basic应用程序设计 398
18.3 问题与讨论 399
第19章 步进电机输出实验 400
19.1 硬件设计与基本概念 400
19.1.1 1相激磁 401
19.1.2 2相激磁 402
19.1.3 1-2相激磁 402
19.1.4 PMM8713介绍 403
19.2 固件程序代码的EEPROM烧录程序 407
19.3 INF安装信息文件的编写 407
19.4 Visual Basic程序代码设计 409
19.5 问题与讨论 411
第20章 I2C接口输入/输出实验 412
20.1 硬件设计与基本概念 412
20.2 固件程序代码的EEPROM烧录程序 416
20.3 INF安装信息文件的编写 416
20.4 Visual Basic程序代码设计 417
20.5 问题与讨论 420
第21章 USB A/D与D/A转换器实验 420
21.1 A/D转换器 421
21.1.1 硬件设计与基本概念 421
21.1.2 固件程序代码的EEPROM烧录程序 427
21.1.3 INF安装信息文件的编写 427
21.1.4 Visual Basic程序代码设计 428
21.2 D/A转换器 429
21.2.1 硬件设计与基本概念 429
21.2.2 固件程序代码的EEPROM烧录程序 433
21.2.3 INF安装信息文件的编写 433
21.2.4 Visual Basic程序代码设计 436
21.3 问题与讨论 436
第22章 USB与RS-232串行通信 437
22.1 通信概念 437
22.2 传输设备 438
22.3 RS-232-C接口 440
22.4 RS-232-C常用的接线方式 441
22.5 RS-232-C数据格式 441
22.6 UART与RS-232-C的信号准位转换 444
22.7 硬件设计 445
22.8 固件程序代码的EEPROM烧录程序 445
22.9 INF安装信息文件的编写 446
22.10 Visual Basic程序代码设计 448
22.11 RS-232串行接口的程序设计 449
22.11.1 通信工具组件的引用 449
22.11.2 通信应用程序的编写 450
22.11.3 通信测试 454
22.12 USB转换RS-232串行通信 456
22.13 问题与讨论 462
第23章 Visual Basic集成应用程序设计 462
23.1 NI Measurement Studio 463
23.2 Measurement Studio for Visual Basic的引用 466
23.3 整合应用程序的编写 466
23.4 应用程序的执行 475
23.5 问题与讨论 476
附录 477
附录A EZ-USB 2100系列 477
附录B EZ-USB W2K.INF安装信息文件的内容 484