1 导论 1
1.1 USB的背景 1
1.1.1 起因 1
1.1.2 特色 2
1.1.3 USB设备的分类 3
1.1.4 USB规范的目标 3
1.1.5 USB规范的发展 4
1.2 微机系统与总线 4
1.2.1 微机系统构成 4
1.2.2 外部设备分类与特点 6
1.2.3 与串口、并口信息交互 7
1.2.4 总线的构想 9
1.2.5 总线数据传输 12
1.2.6 总线仲裁 14
1.2.7 PCI总线 17
1.3 USB总线在PCI总线上的实现 23
1.4 网络相关技术 24
1.4.1 计算机网络功能 24
1.4.2 网络体系结构 25
1.4.4 服务质量 26
1.4.3 流量控制 26
2 体系结构概述 28
2.1 USB系统概述 28
2.1.1 总线布局 28
2.1.2 USB的主机 28
2.1.3 USB的设备 29
2.2 物理接口 29
2.2.1 电气特性 29
2.3.1 电源分配 30
2.3 电源 30
2.2.2 机械特性 30
2.3.2 电源管理 31
2.4 总线协议 31
2.5 容错性 32
2.5.1 错误检测 32
2.5.2 错误处理 32
2.6 系统设置 32
2.6.1 USB设备的安装 32
2.6.3 总线标识 33
2.7 数据流种类 33
2.6.2 USB设备的拆卸 33
2.7.1 控制传送 34
2.7.2 批传送 34
2.7.3 中断传送 34
2.7.4 同步传送 34
2.7.5 指定USB带宽 35
2.8 USB设备 35
2.8.1 设备特性 35
2.8.2 设备描述 36
2.9 USB主机:硬件和软件 37
2.10 体系结构的扩充 38
3 USB数据流模型 39
3.1 USB主机与外设视图 39
3.2 总线拓朴 41
3.2.1 USB主机 41
3.2.2 USB设备 41
3.2.3 总线的物理拓朴结构 42
3.2.4 总线的逻辑拓朴结构 42
3.3 USB通信流 44
3.3.1 设备端点 45
3.3.2 通道 46
3.4 传送类型 48
3.5 控制传送 49
3.5.1 控制传送类型的数据格式 50
3.5.2 控制传送的方向 50
3.5.3 控制传送对包的大小的限制 50
3.5.4 控制传送对总线访问的限制 51
3.5.5 控制传送的数据顺序 53
3.6 同步传送 53
3.6.3 同步传送对包的大小的限制 54
3.6.2 同步传送的方向 54
3.6.1 同步传送的数据格式 54
3.6.4 同步传送对总线访问的限制 55
3.6.5 同步传送的数据顺序 55
3.7 中断传送 56
3.7.1 中断传送的数据格式 56
3.7.2 中断传送的方向 56
3.7.3 中断传送对包的大小的限制 56
3.7.4 中断传送对总线访问的限制 57
3.8.3 批传送对包的大小的限制 59
3.8.1 批传送的数据格式 59
3.8.2 批传送的方向 59
3.8 批传送 59
3.7.5 中断传送的数据顺序 59
3.8.4 批传送对总线访问的限制 60
3.8.5 批传送的数据顺序 61
3.9 传送的总线访问 61
3.9.1 传送管理 61
3.9.2 事务的跟踪 64
3.9.3 计算总线事务的时间 65
3.9.5 总线带宽归还 67
3.9.4 应用层和客户软件对缓冲区大小的计算 67
3.10 关于同步传送的一些特别考虑 68
3.10.1 典型的非USB同步应用 69
3.10.2 USB时钟模型 71
3.10.3 时钟同步 71
3.10.4 同步设备 73
3.10.5 数据预缓存 80
3.10.6 SOF跟踪 81
3.10.7 差错处理 81
3.10.8 为匹配速率而做的缓冲 82
4.2 连接器协议 84
4 机械特性 84
4.1 结构总述 84
4.3 电缆 85
4.4 电缆部件 85
4.4.1 可分离电缆部件 86
4.4.2 全速电缆部件 87
4.4.3 低速电缆部件 88
4.4.4 禁止使用电缆部件的情况 89
4.5 连接器的机械结构和材料要求 90
4.5.1 USB图标 90
4.5.3 系列A和系列B插座 91
4.5.2 USB连接器终端数据 91
4.5.4 系列A和系列B插头 94
4.6 电缆的机械结构和材料要求 97
4.6.1 概述 97
4.6.2 结构 98
4.6.3 电气特性 100
4.6.4 电缆环境特性 101
4.6.5 列表 101
4.7 电气、机械、环境一致性要求标准 101
4.9 印刷电路板参考图 107
4.8 USB基础 107
5 USB电气特性 111
5.1 信号的发送 111
5.1.1 USB驱动器特性 111
5.1.2 数据信号的上升沿和下降沿 114
5.1.3 电缆发送信号的偏移 116
5.1.4 接收器特性 116
5.1.5 设备速度验证 117
5.1.6 输入端特性 118
5.1.7 信号的发送标准 119
5.1.8 数据的编码和解码 128
5.1.9 位填充 128
5.1.10 同步格式 131
5.1.11 数据信号的传输速率 131
5.1.12 帧间距及其调节 131
5.1.13 数据源信号的发送 132
5.1.14 集线器信号发送时序 133
5.1.15 接收端数据的抖动 135
5.1.16 电缆时延 137
5.1.17 电缆上的信号衰减 138
5.1.19 端对端最大信号延迟 139
5.1.18 总线的周转时间和内部包的延时 139
5.2 供电分配 140
5.2.1 设备的分类 140
5.2.2 电压落差的范围 145
5.2.3 挂起/唤醒期间的电压控制 146
5.2.4 动态加载与卸载 147
5.3 物理层 149
5.3.1 控制条件 149
5.3.2 总线定时/电气特征 149
5.3.3 时间波形 157
6.3 包字段格式 161
6.3.1 包标识符字段 161
6 协议层 161
6.2 同步字段 161
6.1 位定序 161
6.3.2 地址字段 163
6.3.3 帧号字段 164
6.3.4 数据字段 164
6.3.5 循环冗余校验 164
6.4 包格式 165
6.4.1 标记包 165
6.4.3 数据包 166
6.4.4 握手包 166
6.4.2 帧起始(SOF)包 166
6.4.5 握手应答(Handshake Response) 168
6.5 事务格式 169
6.5.1 批处理事务 169
6.5.2 控制传送 171
6.5.3 中断事务 174
6.5.4 同步事务 175
6.6.1 通过建立标记初始化 176
6.6.2 成功的数据事务 176
6.6 数据切换同步和重试 176
6.6.3 损坏、或者不被接受的数据 177
6.6.4 损坏的ACK握手 177
6.6.5 低速事务 178
6.7 错误检测和恢复 179
6.7.1 包错误种类 180
6.7.2 总线周转(Turn-around)时间 180
6.7.3 错误的EOP 181
6.7.4 串扰(Babble)和活性丧失(Loss of Activity)的恢复 182
7.1.1 基本的设备状态 183
7.1 USB设备状态 183
7 USB设备架构 183
7.1.2 总线标识 186
7.2 通用USB设备操作 187
7.2.1 动态连接与移去 187
7.2.2 地址分配 187
7.2.3 配置 187
7.2.4 数据传送 188
7.2.5 电源管理 188
7.2.6 请求处理 188
7.3 USB设备请求 190
7.2.7 请求错误 190
7.3.1 bmRequest Type域 191
7.3.2 bRequest域 191
7.3.3 wValue域 191
7.3.4 wIndex域 191
7.3.5 wLength域 192
7.4 标准设备请求 192
7.4.1 清除特性(ClearFeature) 194
7.4.2 取得配置(GetConfiguration) 194
7.4.3 取得描述符(GetDescriptor) 194
7.4.5 取得状态(GetStatus) 195
7.4.4 取得接口设置(GetInterface) 195
7.4.6 设置地址(SetAddress) 197
7.4.7 设置配置值(SetConfiguration) 197
7.4.8 设置描述符(SetDescriptor) 197
7.4.9 设置特性(SetFeature) 197
7.4.10 设置接口(SetInterface) 198
7.4.11 同步帧(SynchFrame) 198
7.5 描述符 198
7.6 标准描述符的定义 199
7.6.1 设备 199
7.6.2 配置 201
7.6.3 接口 202
7.6.4 端点 204
7.6.5 字串 206
7.7 设备类定义 207
7.7.1 描述符 207
7.7.2 接口与端点的使用 207
7.7.3 请求 207
8 USB主机:硬件与软件 208
8.1 USB主机概况 208
8.1.1 概论 208
8.1.4 收集状态及活动统计数据 211
8.1.2 控制机构 211
8.1.3 数据流 211
8.1.5 电气接口因素 212
8.2 主机控制器功能 212
8.2.1 状态处理 212
8.2.2 串行-并行转换 213
8.2.3 帧产生 213
8.2.6 差错控制 214
8.2.7 远程唤醒 214
8.2.5 协议引擎 214
8.2.4 数据处理 214
8.2.8 根集线器 215
8.2.9 主机系统接口 215
8.3 软件功能概论 215
8.3.1 设备配置 215
8.3.2 资源管理 217
8.3.3 数据传送 218
8.3.4 普通数据定义 218
8.4 主机控制器驱动器 219
8.5 USBD 220
8.5.1 USBD概况 220
8.5.2 USBD命令机制 221
8.5.3 USBD通道机制 224
8.5.4 通过USBD机制管理USB系统 226
8.5.5 USB的控制权转移 228
8.6 操作系统环境 228
9 集线器规范 229
9.1 概述 229
9.1.1 集线器结构 229
9.1.2 集线器连接 229
9.2 集线器帧计时器 231
9.2.1 帧计数器的同步 232
9.2.2 EOF1和EOF2时刻 233
9.3 帧结束时的主机行为 235
9.3.1 最后发给主机的包 235
9.3.2 包的取消 235
9.3.3 事务完成预测 236
9.4 内部端口 237
9.4.1 不活动状态(Inactive) 237
9.4.2 挂起时延(Suspend Delay) 237
9.5 下行端口 238
9.4.4 产生唤醒(GResume) 238
9.4.3 充分挂起(Fsus) 238
9.5.1 下行端口状态描述 240
9.5.2 未连接检测计时器 243
9.6 上行端口 243
9.6.1 接收部分 243
9.6.2 发送器 245
9.7 集线器中断器 247
9.7.2 等待来自上行端口的包结束(WFEOPFU) 249
9.7.3 等待包开始(WFSOP) 249
9.7.1 等待来自上行端口的包开始(WFSOPFU) 249
9.7.4 等待包结束(WFEOP) 250
9.8 总线状态核定 250
9.8.1 端口错 250
9.8.2 速度检测 250
9.8.3 冲突 251
9.8.4 高速和低速行为 252
9.9 挂起和唤醒 253
9.10 集线器重启 254
9.11 集线器端口电源管理 254
9.12.1 上拉和下拉电阻 256
9.12.2 沿陡峭率控制(Edge Rate Control) 256
9.12 集线器I/O缓冲器需求 256
9.13 集线器控制器 257
9.13.1 端点组织 257
9.13.2 集线器信息结构和操作 257
9.13.3 端口变化信息处理过程 258
9.13.4 集线器和端口状态变化位图 259
9.13.5 电流过载报告和恢复 261
9.14 集线器配置 261
9.15 描述符 263
9.15.1 标准描述符 263
9.15.2 集线器类的描述符 264
9.16 请求 265
9.16.1 标准请求 265
9.16.2 类请求 266
10 USB驱动程序 280
10.1 Windows操作系统对USB的支持 280
10.1.1 Win 32驱动模式 280
10.1.2 用户模式和内核模式 281
10.2 分层驱动 283
10.2.1 USB驱动程序分层结构 283
10.2.2 设备和总线驱动 285
10.3.1 USB驱动程序接口 286
10.3 USB设备驱动程序 286
10.3.2 Windows使用的设备驱动类型 290
10.3.3 自定义驱动 292
11 USB控制器模块应用开发 295
11.1 USB控制器模块 295
11.1.1 USB控制芯片主体结构 295
11.1.2 USB控制模块的划分 296
11.1.3 USB控制模块的要素 296
11.1.4 USB控制芯片的选择 297
11.1.5 常用的USB控制芯片 300
11.2.1 系统结构 304
11.2 USB设备模块的开发 304
11.2.2 PDIUSBD12芯片特性和内部结构 305
11.2.3 软体设计 309
11.2.4 基于USB数据采集系统 316
11.3 USB主机模块的开发 321
11.3.1 USB主机和设备接口 321
11.3.2 ISP1160的典型连接和软件模型 323
11.3.3 基于ISP1160的数码相机的可视监控系统 325
附录1 USB词汇参考 328
附录2 网络资源 340