《USB开发大全(第4版)》介绍了有关通用串行总线(Universal Serial Bus,USB)的工作方式、设备硬件及软件编程等方面的知识和工程实例,内容大致可分为4个方面。第 一,阐述USB协议,包括基本常识、设备枚举、传输过程、设备类、主机通信方式以及总线状态等。读者通过学习,可迅速掌握USB接口的工作原理和组织结构。第 二,详细地介绍了USB硬件,从控制器芯片的选择、电源供给、集线器原理,到线缆的电气和机械特性,几乎涵盖USB硬件的全部技术细节。第三,讨论了USB的程序编写,涉及设备固件和驱动,重点阐述了HID设备类驱动程序的开发,并给出了在厂商专属设备上应用WinUSB的方法。第四,作者也关注了几种开发工具的使用。本书在组织上真正做到了协议、硬件、软件、工具的完美结合,对4方面的论述渗透全书。
《USB开发大全(第4版)》融会作者在该领域丰富的工作经验和设计实例,在规范与工程实际间搭起了桥梁。它是USB软硬件的开发指南,一本无可替代的工具书。新版本与时俱进地增加了USB 3.0协议及其超高速总线的内容。无论初学者还是资深开发人员,读到此书,都将如沐春风,大受裨益。
第 1章 USB基础 1
1.1 USB的用途和局限 1
1.1.1 给用户带来的好处 1
1.1.2 给开发者带来的好处 3
1.1.3 USB不能做什么 5
1.1.4 USB与Ethernet 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
3.3.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.3 Device_Qualifier描述字 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 Set Interface(设置接口)请求 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 FTDI公司的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.6 IrDA桥设备类 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 ID 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 USB 2.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 USB 2.0链路电源管理 259
16.3.2 挂起状态 259
16.3.3 休眠状态 260
16.3.4 超速通信电源管理 261
16.3.5 Windows操作系统下的电源管理 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.2 Windows徽标 273
第 18章 总线上的包 276
18.1 USB 2.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 USB 2.0收发器 285
19.1.1 线缆段 285
19.1.2 低速和全速收发器 286
19.1.3 高速收发器 288
19.1.4 信号电压 291
19.2 USB 2.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 USB 3.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.3 A型设备及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
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门文章
热门标签
评论