USB 2.0硬体设计(第2版)
《USB 2.0硬体设计(第2版)》是2007年清华大学出版社出版的图书,作者是萧世文、宋延清。
基本介绍
- 书名:USB 2.0硬体设计(第2版)
- 作者:萧世文、宋延清
- ISBN:9787302139799
- 定价:38元
- 出版社:清华大学出版社
- 出版时间:2007-7-6
- 装帧:平装
图书简介
USB是外围设备与计算机进行连线的快速且灵活的新式接口。本书介绍最新的USB 2.0标準,从USB的基础开始介绍,包括实际的硬体与软体设计,并且使用彙编语言、Visual C++、Visual Basic等来示範程式代码的编写。另外还有各种USB晶片介绍,帮助读者快速设计自己的USB设备。
本书共15章和1个附录,内容包括:USB简介、USB传输、检测设备、控制传输、USB控制器晶片、Cypress enCoRe控制器晶片、驱动程式、设备类别、设备测试、电源管理与信号编码、电路接口、集线器、HID设备、HID程式设计、HID设备开发实例以及USB参考资料等。
本书适合从事USB硬体、软体设计的程式设计师和其他相关技术人员使用或参考。
目录
第1章USB简介 1
1.1USB的发展史 2
1.1.1规範的版本 3
1.1.2USB2.0 4
1.1.3IEEE-1394 4
1.2USB的优点 4
1.2.1容易使用 4
1.2.2传输速度快 5
1.2.3低价位 6
1.2.4低功耗 6
1.2.5可靠性 6
1.2.6作业系统的支持 7
1.2.7外围设备的支持 7
1.2.8灵活性 7
1.2.9USB实施者论坛 8
1.3USB的缺点 8
1.3.1缺乏对旧硬体的支持 8
1.3.2缺乏点对点的通信能力 9
1.3.3速度的限制 9
1.3.4距离的限制 9
1.3.5硬体的错误或故障 9
1.3.6协定的複杂性 9
1.3.7费用 9
1.4与其他接口的比较 10
1.5PC的软硬体要求 11
1.5.1主机控制器 11
1.5.2作业系统 11
1.5.3组件 12
1.5.4汇流排拓扑 13
1.5.5连线连线埠 15
1.6主机的责任 15
1.7外围设备的责任 16
1.8传输速度 19
1.9开发流程 20
1.9.1所需的链路元件 20
1.9.2开发工具 20
1.9.3开发步骤 21
第2章USB传输 23
2.1传输的基础 23
2.1.1配置通信 23
2.1.2应用程式通信 23
2.1.3管理汇流排的数据 24
2.1.4主机速度和汇流排速度 25
2.2传输要素 26
2.2.1设备的端点 26
2.2.2管道 27
2.2.3传输类型 27
2.2.4讯息管道与流管道 29
2.2.5传输的初始化 29
2.3事务 30
2.3.1事务的步骤 31
2.3.2信息包的顺序 33
2.3.3定时约束和保障 34
2.3.4分割事务 34
2.4联络信号 36
2.4.1ACK 37
2.4.2NAK 37
2.4.3STALL 37
2.4.4NYET 38
2.4.5ERR 38
2.4.6无回响 38
2.4.7控制传输的状态 39
2.5错误的检验 39
2.5.1错误校验位 39
2.5.2数据交替位 40
2.6控制传输 41
2.6.1结构 41
2.6.2信息包的大小 44
2.6.3传输速度 44
2.6.4检测错误 45
2.7批量传输 46
2.7.1结构 46
2.7.2信息包大小 47
2.7.3传输速度 47
2.7.4检测错误 47
2.8中断传输 47
2.8.1结构 48
2.8.2信息包大小 48
2.8.3传输速度 48
2.8.4检测错误 49
2.9等时传输 49
2.9.1结构 49
2.9.2信息包大小 51
2.9.3传输速度 51
2.9.4检测错误 51
2.10时间关键的传输 51
2.10.1汇流排的频宽 51
2.10.2设备的能力 52
2.10.3主机软体的能力 52
2.10.4Windows的延迟 52
第3章检测设备 54
3.1检测设备的过程 54
3.1.1检测的步骤 55
3.1.2检测集线器 58
3.1.3移除设备 58
3.2描述符 59
3.2.1类型 59
3.2.2设备描述符 60
3.2.3Device_Qualifier描述符 62
3.2.4配置描述符 64
3.2.5Other_Speed_Configuration
描述符 65
3.2.6接口描述符 66
3.2.7端点描述符 68
3.2.8字元串描述符 70
3.3USB2.0兼容设备的描述符 73
第4章控制传输 75
4.1设定阶段 75
4.1.1令牌信息包 76
4.1.2数据信息包 77
4.1.3联络信息包 79
4.2数据阶段 80
4.2.1令牌信息包 81
4.2.2数据信息包 81
4.2.3联络信息包 81
4.3状态阶段 81
4.3.1令牌信息包 82
4.3.2数据信息包 82
4.3.3联络信息包 82
4.4检测错误 83
4.5请求 83
4.5.1Clear_Feature 84
4.5.2Get_Configuration 85
4.5.3Get_Descriptor 85
4.5.4Get_Interface 86
4.5.5Get_Status 87
4.5.6Set_Address 88
4.5.7Set_Configuration 88
4.5.8Set_Descriptor 89
4.5.9Set_Feature 89
4.5.10Set_Interface 90
4.5.11Synch_Frame 91
4.5.12类别特定的请求 91
4.5.13厂商特定的请求 92
第5章USB控制器晶片 93
5.1USB控制器的组成 93
5.1.1USB连线连线埠 93
5.1.2数据缓冲区 94
5.1.3CPU 94
5.1.4程式记忆体 94
5.1.5数据存储器 95
5.1.6暂存器 95
5.1.7其他接口 95
5.1.8其他特性 96
5.2USB控制器晶片结构 96
5.2.1专为USB设计的晶片 96
5.2.2与现有的晶片兼容 98
5.2.3需要外部微处理器接口
的晶片 99
5.2.4晶片的档案 102
5.2.5固件示例程式 102
5.2.6驱动程式 103
5.2.7调试工具 103
5.2.8开发计画的考虑 104
5.3CypressenCoRe 105
5.3.1CPU结构 105
5.3.2USB控制器 106
5.4CypressEZ-USB 106
5.4.1CPU结构 107
5.4.2USB控制器 109
5.5MicrochipPIC16C7x5 109
5.5.1结构 109
5.5.2USB控制器 111
5.6NetchipNET2888 111
5.6.1结构 111
5.6.2USB控制器 112
5.7NationalSemiconductorUSBN9603 113
5.7.1结构 113
5.7.2USB控制器 114
5.8PhilipsSemiconductor
PDIUSBD11/12 114
5.8.1结构 115
5.8.2USB控制器 115
第6章CypressenCoRe
控制器晶片 116
6.1选择适合的晶片 116
6.2彙编语言编译器 116
6.2.1彙编程式的基础 118
6.2.2彙编语言码 119
6.2.3彙编语言编译器的用法 120
6.3C编译器 122
6.3.1C语言的优点 122
6.3.2C编译器的用法 123
6.4晶片的结构 123
6.4.1特性和限制 123
6.4.2晶片内部 123
6.4.3记忆体 124
6.4.4程式堆叠指针 127
6.4.5数据堆叠指针 127
6.5USB通信 127
6.5.1设备地址 129
6.5.2模式 129
6.5.3端点状态及控制 131
6.5.4USB状态及控制 131
6.6其他I/O 133
6.6.1一般用途的I/O 133
6.6.2内部电路 133
6.6.3中断 135
6.6.4SPI连线连线埠 136
6.6.5PS/2接口 137
6.7定时器的功能 138
6.7.1执行定时工作 138
6.7.2测量时距 139
6.8中断的处理 140
6.8.1中断服务例程 140
6.8.2GPIO中断 141
6.8.3USB端点中断 142
6.8.4定时器中断 142
6.8.5中断状态 143
6.9CPU的状态、控制及脉冲 144
6.9.1暂停CPU 144
6.9.2重置 144
6.9.3选择和控制脉冲 146
6.9.4电源的管理 146
6.10硬体的工作 146
6.11固件的工作 147
6.11.1端点0中断 147
6.11.2传送数据给主机 149
6.11.3从主机接收数据 151
6.11.4处理中断传输 153
6.11.5其他的回响 153
6.12硬体开发工具 154
6.12.1平台板 154
6.12.2监视/调试器 155
第7章驱动程式 157
7.1设备驱动程式 157
7.2设备驱动程式的来源 158
7.2.1标準设备类型 158
7.2.2客户化设备 159
7.3设备驱动程式的执行模式 159
7.4Win32驱动程式模型 159
7.5分层的驱动程式 161
7.5.1USB驱动程式层 161
7.5.2函式驱动程式 161
7.5.3汇流排驱动程式 162
7.6通信的流程 163
7.6.1用户的角色 163
7.6.2应用程式的角色 163
7.6.3设备驱动程式的角色 165
7.6.4集线器驱动程式的角色 166
7.6.5汇流排类别驱动程式的角色 166
7.6.6主机控制器驱动程式
的角色 167
7.6.7设备的角色 167
7.6.8回响 167
7.6.9通信的终结 168
7.7驱动程式的类型 168
7.7.1Windows提供的驱动程式 168
7.7.2厂商提供的驱动程式 168
7.8编写客户化的驱动程式 168
7.8.1工具软体 169
7.8.2WinRTforUSB 169
7.8.3WinDriverUSB 171
7.8.4提供函式馆的工具软体 172
7.9Windows如何选择驱动程式 173
7.9.1.inf档案 173
7.9.2注册表 174
7.9.3检测特定的设备 175
7.9.4检测通用的设备 176
7.10.inf档案简介 176
7.10.1语法 178
7.10.2Version区段 179
7.10.3ClassInstall区段 179
7.10.4Manufacturer区段 180
7.10.5DestinationDirs区段 180
7.10.6Strings区段 182
7.10.7HID的通用.inf档案 182
7.10.8建立.inf档案的工具 182
7.10.9使用.inf档案的技巧 183
第8章设备类别 185
8.1类别 185
8.1.1类别规範 185
8.1.2类别的定义 186
8.2标準类型的设备 188
8.2.1键盘、滑鼠和游戏桿 188
8.2.2大容量存储设备 188
8.2.3印表机 192
8.2.4数位相机和扫瞄器 193
8.2.5音频 195
8.2.6数据机 196
8.3非标準类型的设备 197
8.3.1以中等速度传输数据
的设备 197
8.3.2更新RS-232设备 197
8.3.3POS设备 199
8.3.4取代非标準并行连线埠设备 199
8.3.5PC到PC的连线 200
8.3.6无线连线 200
第9章设备测试 202
9.1USB测试工具 202
9.1.1测试 203
9.1.2HIDView 207
9.2测试仪器 208
9.2.1协定分析器 208
9.2.2USBExpert的硬体 209
9.2.3USBExpert的软体 209
9.2.4CATCTrafficGenerator 211
9.2.5Root1测试适配器 212
9.3测试和标记 212
9.3.1USB实施者论坛的
合格计画 213
9.3.2USB标誌 214
9.3.3Windows硬体品质
实验室测试 214
9.3.4驱动程式签名 214
第10章电源管理和信号编码 216
10.1电源的管理 216
10.1.1电压 216
10.1.2可以使用汇流排电源
的设备 216
10.1.3电源要求 217
10.1.4通知主机 218
10.2集线器电源 218
10.2.1电的来源 219
10.2.2过流保护 221
10.2.3电源开关 222
10.3节省电能 222
10.3.1全局挂起和选择挂起 222
10.3.2挂起设备的限制 222
10.3.3恢复通信 223
10.4低速和中速的汇流排状态 223
10.4.1Differential1和
Differential0状态 224
10.4.2Single-ended0状态 225
10.4.3Single-ended1状态 225
10.4.4DataJ和DataK状态 225
10.4.5闲置状态 225
10.4.6恢复状态 225
10.4.7信息包开始 225
10.4.8信息包结束 225
10.4.9未连线状态 226
10.4.10连线状态 226
10.4.11重置状态 226
10.5高速的汇流排状态 226
10.5.1高速Differential1和
Differential0状态 227
10.5.2高速DataJ和DataK
状态 228
10.5.3ChirpJ和ChirpK 228
10.5.4高速Squelch 228
10.5.5高速闲置 228
10.5.6高速信息包开始 228
10.5.7高速信息包结束 228
10.5.8高速未连线状态 229
10.6数据编码 229
10.6.1维持同步 229
10.6.2位填充 230
10.6.3SYNC栏位 230
10.6.4信息包结尾 231
10.6.5时序正确性 231
10.7信息包格式 232
10.7.1SYNC栏位 232
10.7.2PID栏位 232
10.7.3地址栏位 233
10.7.4端点栏位 233
10.7.5帧号码栏位 233
10.7.6数据栏位 233
10.7.7CRC栏位 234
10.7.8信息包间的延迟 234
10.8测试模式 234
第11章电路接口 237
11.1接收器与信号 237
11.2低速和中速接收器 238
11.3高速接收器 240
11.3.1电路 240
11.3.2转换速度 241
11.3.3检测高速设备的移除 242
11.3.4高速的挂起和恢复 242
11.4信号电压 243
11.4.1低速和中速 243
11.4.2高速 243
11.5电缆 246
11.5.1连线器 248
11.5.2可拆分的与捕获性
的电缆 249
11.5.3电缆长度 250
11.6信号的品质 250
11.6.1噪声 250
11.6.2平衡线 250
11.6.3双绞线 251
11.6.4边缘速率 251
第12章集线器 252
12.1集线器的基础 252
12.1.1避免设备进入挂起状态 253
12.1.2可串联的集线器数目 253
12.2集线器中继器 254
12.2.1低速和中速的中继器 254
12.2.2高速的中继器 254
12.3事务转换器 255
12.4集线器控制器 256
12.5速度 257
12.6集线器类别 257
12.6.1标準描述符 258
12.6.2集线器描述符 260
12.6.3标準请求 261
12.6.4集线器类别请求 262
12.6.5连线连线埠指示器 265
第13章HID设备 266
13.1HID简介 266
13.1.1硬体要求 267
13.1.2固件要求 268
13.2HID的描述符 269
13.2.1描述符的内容 272
13.2.2HID类别描述符 272
13.2.3报表描述符 274
13.3HID特定请求 278
13.3.1Get_Report 279
13.3.2Set_Report 279
13.3.3Get_Idle 279
13.3.4Set_Idle 280
13.3.5Get_Protocol 281
13.3.6Set_Protocol 281
13.4传输数据 281
13.4.1传送数据给主机 282
13.4.2从主机接收数据 283
13.5报表的结构 285
13.5.1HIDDescriptorTool 286
13.5.2短项目 287
13.5.3长项目 287
13.6Main项目类型 288
13.6.1Input、Output和Feature
项目 288
13.6.2Collection与EndCollection
标记 291
13.7Global项目类型 291
13.7.1识别报表 292
13.7.2数据的使用 293
13.7.3转换原始数据 294
13.7.4数据的大小与格式 296
13.7.5Global项目的储存
与恢复 296
13.8Local项目类型 296
13.9填充 298
13.10实体描述符 298
第14章HID程式设计 300
14.1主机的通信 300
14.1.1说明档案 301
14.1.2HID函式 301
14.1.3DirectX 302
14.2调用API函式 303
14.2.1使用VisualC++ 303
14.2.2使用VisualBasic 304
14.3取得HID类别的GUID 305
14.3.1使用VisualC++ 306
14.3.2使用VisualBasic 306
14.4取得HID信息的结构数组 307
14.4.1使用VisualC++ 307
14.4.2使用VisualBasic 307
14.4.3详解 307
14.5识别HID接口 308
14.5.1使用VisualC++ 308
14.5.2使用VisualBasic 308
14.5.3详解 309
14.6取得设备的路径 309
14.6.1使用VisualC++ 310
14.6.2使用VisualBasic 311
14.7取得设备的代号 312
14.7.1使用VisualC++ 312
14.7.2使用VisualBasic 313
14.8取得厂商与产品ID 314
14.8.1使用VisualC++ 314
14.8.2使用VisualBasic 314
14.8.3详解 315
14.9取得包含设备能力的缓
沖区指针 315
14.9.1使用VisualC++ 315
14.9.2使用VisualBasic 315
14.9.3详解 316
14.10取得设备的能力 316
14.10.1使用VisualC++ 316
14.10.2使用VisualBasic 317
14.10.3详解 317
14.11取得数值的能力 317
14.12传送输出报表给设备 318
14.12.1使用VisualC++ 318
14.12.2使用VisualBasic 318
14.12.3详解 319
14.13从设备读取输入报表 319
14.13.1使用VisualC++ 320
14.13.2使用VisualBasic 320
14.13.3详解 321
14.14使用重叠ReadFile读取报表 321
14.14.1使用VisualC++ 322
14.14.2使用VisualBasic 323
14.15使用多执行绪的ReadFile
读取报表 324
14.15.1使用VisualC++ 324
14.15.2使用VisualBasic 326
14.16传送特徵报表给设备 326
14.16.1使用VisualC++ 326
14.16.2使用VisualBasic 326
14.17从设备读取特徵报表 327
14.17.1使用VisualC++ 327
14.17.2使用VisualBasic 327
14.18关闭通信 327
14.18.1使用VisualC++ 328
14.18.2使用VisualBasic 328
第15章HID设备开发实例 330
15.1HID设备开发综述 330
15.2HID温度计开发示例 333
15.3用C语言来设计固件 400
附录USB参考资料 430
转载请注明出处海之美文 » USB 2.0硬体设计(第2版)