第1章USB基础 1
1.1 USB的用途和局限 1
1.1.1给用户带来的好处 1
1.1.2给开发者带来的好处 3
1.1.3 USB不能做什么 5
1.1.4 USB与Ethemet 7
1.1.5 USB与IEEE-1394 7
1.2 USB接口的发展演变 7
1.2.1 USB 1.0 7
1.2.2 USB 1.1 8
1.2.3 USB 2.0 8
1.2.4 USB 3.0 9
1.2.5 USB On-The-Go 9
1.2.6无线USB 9
1.3总线组成部分 10
1.3.1拓扑结构 10
1.3.2关于总线速率的考虑 11
1.3.3术语 12
1.4分割工作 13
1.4.1主机的责任 13
1.4.2设备的职责 14
1.4.3总线速率和数据吞吐量 15
1.5开发设备 16
1.5.1组件 16
1.5.2开发工具 16
1.5.3工程开发的步骤 16
1.6 USB 3.0常见问题 17
1.6.1功能 17
1.6.2兼容性 18
1.6.3线缆 19
1.6.4电源和功耗 20
第2章 深入USB传输 21
2.1传输的基础 21
2.1.1传输要素 21
2.1.2通信的目的 22
2.1.3管理总线上的数据 22
2.2传输要素 23
2.2.1端点:数据的来源和数据接收端 23
2.2.2事务类型 23
2.2.3管道:将端点连接到主机 24
2.2.4传输类型 24
2.2.5流管道和消息管道 25
2.2.6发起传输 25
2.3 USB 2.0事务 26
2.3.1事务步骤 27
2.3.2信息包的顺序 29
2.3.3时间约束和保证 29
2.3.4分割事务 29
2.4保证传输成功 30
2.4.1状态与控制 30
2.4.2报告控制传输的状态 32
2.4.3错误检查 32
2.5超高速事务 34
2.5.1信息包类型 34
2.5.2数据传输 36
2.5.3连接管理信息包 38
第3 章通用的传输类型 39
3.1控制传输 39
3.1.1可用性 39
3.1.2结构 39
3.1.3数据大小 44
3.1.4速度 44
3.1.5错误的检测与处理 45
3.1.6设备的职责 45
3.2批量传输 45
3.2.1可用性 46
3.2.2结构 46
3.2.3数据大小 48
3.2.4速率 48
3.2.5错误的检测和处理 48
3.2.6设备的职责 48
3.3中断传输 49
3.3.1可用性 49
3.3.2结构 49
3.3.3数据大小 50
3.3.4速率 50
33.5错误的检测和处理 51
3.3.6设备的职责 51
3.4等时传输 51
3.4.1可用性 52
3.4.2结构 52
3.4.3数据大小 54
3.4.4速度 54
3.4.5错误的检测和处理 55
3.4.6设备的职责 55
3.5更多关于时间关键传输的内容 55
3.5.1总线带宽 55
3.5.2设备性能 56
3.5.3主机性能 56
3.5.4主机等待时间 56
第4章 枚举:主机如何了解设备 58
4.1枚举过程 58
4.1.1枚举步骤 59
4.1.2设备移除 62
4.1.3枚举成功的秘诀 62
4.2描述字 63
4.2.1类型描述字 63
4.2.2设备描述字 64
4.2.3Device_Qualifer描述字 67
4.2.4配置描述字 67
4.2.5 Other_Speed_Configuration描述字 68
4.2.6接口联合描述字 68
4.2.7接口描述字 69
4.2.8端点描述字 71
4.2.9超高速端点伙伴描述字 73
4.2.10字符串描述字 73
4.2.11二进制目标存储及设备性能描述字 74
4.2.12其他标准描述字 75
4.2.13微软OS描述字 75
4.2.14更新描述字到USB 2.0 76
第5章 控制传输:用于关键数据的结构化请求 77
5.1控制传输的组成 77
5.1.1设置阶段 77
5.1.2数据阶段 78
5.1.3状态阶段 79
5.1.4错误处理 80
5.1.5设备固件 80
5.2标准请求 81
5.2.1 Get Status(获得状态)请求 82
5.2.2 Clear Feature(清除特征)请求 83
5.2.3 Set Feature(设置特征)请求 83
5.2.4 Set Address(设置地址)请求 84
5.2.5 Get Descriptor(获得描述字)请求 85
5.2.6 Set Descriptor(设定描述字)请求 85
5.2.7 Get Configuration(获得配置)请求 85
5.2.8 Set Configuration(设定配置)请求 86
5.2.9 Get Interface(获得接口)请求 86
5.2.10 SetInterface(设置接口)请求 87
5.2.11 Synch Frame(帧同步)请求 87
5.2.12 Set SEL(设定选择)请求 87
5.2.13 Set Isochronous Delay(设定等时延时)请求 88
5.3其他请求 88
5.3.1类专属请求 88
5.3.2厂商定义的请求 88
第6章 芯片选择 89
6.1 USB设备的组成部分 89
6.1.1 USB2.0控制器内部结构 89
6.1.2其他的设备组件 90
6.2简化设备开发 92
6.2.1设备要求 92
6.2.2芯片文档 93
6.2.3驱动程序的选择 93
6.2.4调试工具 93
6.3 USB微控制器 95
6.3.1 Microchip的PIC18F4550 96
6.3.2 Cypress EZ-USB 99
6.3.3 ARM 101
6.4连接到CPU的控制器 101
6.4.1 ST-NXP Wireless公司的ISP1582型控制器 101
6.4.2 PLX Technology的NET2272型控制器 102
6.4.3 FIDI公司的USB UART和USB FIFO 103
第7章 设备类 105
7.1元素与用途 105
7.1.1已被公认的规范 105
7.1.2类规范的组成 106
7.2已定义的类 107
7.2.1音频类 107
7.2.2通信类 109
7.2.3内容安全类 113
7.2.4设备固件升级类 114
7.2.5人机接口类 116
7.2.6IrDA桥设备类 118
7.2.7大容量存储设备类 119
7.2.8个人健康设备类 122
7.2.9打印机设备类 122
7.2.10智能卡设备类 124
7.2.11静态图像获取设备类 126
7.2.12测试与测量设备类 127
7.2.13视频设备类 128
7.3非标准功能的实现 131
7.3.1选择驱动程序 131
7.3.2使用通用驱动程序 131
7.3.3从RS-232转换到USB 131
7.3.4从并行端口转换到USB 132
7.3.5 PC与PC间的通信 133
第8章 主机的通信方式 134
8.1设备驱动程序 134
8.1.1分层的驱动程序模型 134
8.1.2用户及内核模式 134
8.2分层结构内部 136
8.2.1应用程序 136
8.2.2用户模式下的用户驱动程序 137
8.2.3内核模式下的用户驱动程序 137
8.2.4总线和主机控制器驱动程序 138
8.3编写驱动程序 140
8.3.1内核模式的驱动程序 140
8.3.2用户模式的驱动程序 140
8.3.3测试工具 141
8.4 GUID的使用 141
8.4.1设备设置GUID 141
8.4.2设备接口GUID 142
第9章 为设备匹配驱动程序 143
9.1使用设备管理器 143
9.1.1查看设备 143
9.1.2属性页 144
9.2注册表中的设备信息 145
9.2.1 Hardware键值 145
9.2.2 Class键值 146
9.2.3 Driver键值 147
9.2.4 Service键值 147
9.3深入INF文件 148
9.3.1结构及语法 150
9.3.2设备专属取值 151
9.4使用设备标识字符串 151
9.4.1找到匹配 153
9.4.2何时提供INF文件 153
9.5工具及诊断协助 154
9.5.1使用INF文件的技巧 154
9.5.2用户可见到什么 155
第10章 设备检测 156
10.1关于Windows API函数调用的简要指导 156
10.1.1托管代码与非托管代码 156
10.1.2管理数据 159
10.2找到您的设备 161
10.2.1获取设备接口GUID 163
10.2.2请求指向设备信息集的指针 163
10.2.3标识设备接口 164
10.2.4请求带有设备类路径名的结构体 166
10.2.5提取设备路径名 168
10.2.6结束通信 168
10.3获取句柄 169
10.3.1请求通信句柄 169
10.3.2关闭句柄 171
10.4检测设备连接和移除 171
10.4.1关于设备通知 171
10.4.2请求设备通知 171
10.4.3记录设备变化信息 174
10.4.4读取设备变化消息 175
10.4.5收回消息中的设备路径名 176
10.4.6停止设备通知 178
第11章 人机接口设备:使用控制和中断传输 180
11.1什么是HID 180
11.1.1硬件要求 181
11.1.2固件要求 182
11.2描述字 182
11.2.1 HID接口 185
11.2.2 HID类描述字 185
11.2.3报告描述字 186
11.3 HID专属请求 187
11.3.1 Get Report请求 187
11.3.2 Get Idle请求 188
11.3.3 Get Protocol请求 188
11.3.4 Set Report请求 188
11.3.5 Set Idle请求 189
11.3.6 Set Protocol请求 189
11.4数据传输 189
11.4.1编写固件 189
11.4.2工具 190
第12章 人机接口设备:报告 191
12.1 HID报告的数据结构 191
12.1.1使用HID描述符编辑工具 191
12.1.2控制项及数据项目的值 192
12.1.3项目格式 192
12.2主项目 193
12.2.1输入项目,输出项目及特征项目 193
12.2.2 Collection项目 196
12.3全局项目类型 196
12.3.1识别报告 196
12.3.2描述数据用途 197
12.3.3单位转换 198
12.3.4 转换原始数据 199
12.3.5 描述数据大小及数据格式 201
12.3.6储存和恢复全局项目 201
12.4局部项目类型 201
12.4.1物理描述符 203
12.4.2填充 203
第13章 人机接口设备:主机应用程序 204
13.1 HID API函数 204
13.1.1请求HID信息 204
13.1.2报告发送与接收 205
13.1.3报告数据提供及使用 206
13.1.4 HID通信管理 207
13.2设备识别 207
13.2.1读取Vendor ID及Product IID 207
13.2.2获取设备功能指针 209
13.2.3获取设备功能 210
13.2.4获取按钮及数值的功能 211
13.3报告发送与接收 212
13.3.1向设备发送输出报告 212
13.3.2由设备读取输入报告 214
13.3.3向设备写入特征报告 220
13.3.4从设备读取特征报告 221
13.3.5关闭通信 222
第14章 利用WinUSB的厂商定义函数 224
14.1功能与局限 224
14.1.1设备要求 224
14.1.2主机要求 224
14.1.3设备固件 224
14.1.4分配WinUSB驱动程序 226
14.2访问设备 227
14.2.1获取WinUSB句柄 228
14.2.2请求接口描述符 229
14.2.3端点识别 230
14.2.4配置管道策略 233
14.2.5利用批量传输及中断传输写入数据 237
14.2.6利用批量传输及中断传输读取数据 238
14.2.7使用厂商定义的控制传输 239
14.2.8关闭通信 242
第15章 集线器 243
15.1 USB2.0 243
15.1.1集线器转发器 244
15.1.2事务转换器 245
15.1.3集线器控制器 249
15.1.4传输速率 249
15.1.5维持已激活链接 250
15.2 USB 3.0 250
15.2.1总线速率 251
15.2.2 USB 3.0的构成 251
15.2.3通信管理 251
15.3集线器类 252
15.3.1集线器描述符 252
15.3.2集线器类请求 252
15.3.3端口指示器 252
第16章 电源管理 253
16.1电源选项 253
16.1.1电压 253
16.1.2使用总线电源 254
16.1.3电源需求 255
16.1.4通知主机 255
16.1.5电池充电 256
16.2集线器电源 257
16.2.1电源 257
16.2.2电流超载保护 258
16.2.3功率切换 259
16.3节电模式 259
16.3.1 USB2.0链路电源管理 259
16.3.2挂起状态 259
16.3.3休眠状态 260
16.3.4超速通信电源管理 261
16.3.5Windows操作系统下的电源管理 264
第17章 测试与调试 266
17.1工具 266
17.1.1硬件协议分析器 267
17.1.2软件协议分析器 268
17.1.3流量发生器 269
17.2测试 269
17.2.1合规性 270
17.2.2Windows徽标 273
第18章 总线上的包 276
18.1 USB2.0通信 276
18.1.1低速、全速总线状态 276
18.1.2高速总线状态 277
18.1.3数据编码 279
18.1.4保持同步 279
18.1.5精确计时 280
18.1.6包的格式 281
18.1.7包间延迟 282
18.1.8测试模型 282
18.2超速通信 283
18.2.1数据加扰 283
18.2.2编码 283
18.2.3链路层 283
18.2.4复位 284
第19章 电气与机械接口 285
19.1 USB2.0收发器 285
19.1.1线缆段 285
19.1.2低速和全速收发器 286
19.1.3高速收发器 288
19.1.4信号电压 291
19.2USB2.0线缆 292
19.2.1导线 292
19.2.2连接器 293
19.2.3可拆卸及不可分离线缆 294
19.2.4线缆长度 294
19.2.5总线长度 295
19.2.6芯片间连接 295
19.3 USB3.0 296
19.3.1发送器和接收器 296
19.3.2线缆 296
19.4确保信号质量 299
19.4.1噪声来源 299
19.4.2对称传输线 300
19.4.3双绞线 300
19.4.4屏蔽 301
19.4.5边沿变化率 301
19.4.6被隔离的接口 301
19.5无线方式实现USB 301
19.5.1无线USB认证 302
19.5.2 Cypress无线USB 302
19.5.3其他选择 303
第20章 嵌入式系统主机 305
20.1 USB OTG 305
20.1.1能力与局限 305
20.1.2 OTG连接器 306
20.1.3A型设备及B型设备 306
20.1.4 OTG设备要求 306
20.1.5 OTG描述符 310
20.1.6 HNP特征代码 310
20.2其他主机选项 311
20.2.1嵌入式主机要求 311
20.2.2设备端口 312
20.3控制器芯片 312
20.3.1微控制器 312
20.3.2接口芯片 313