书籍详情

USB 2.0硬件设计(第2版)

USB 2.0硬件设计(第2版)

作者:萧世文,宋延清 编著

出版社:清华大学出版社

出版时间:2006-10-01

ISBN:9787302139799

定价:¥38.00

购买这本书可以去
内容简介
  USB是外围设备与计算机进行连接的快速且灵活的新式接口。本书介绍最新的USB 2.0标准,从USB 的基础开始介绍,包括实际的硬件与软件设计,并且使用汇编语言、Visual C++、Visual Basic 等来示范程序代码的编写。另外还有各种USB 芯片介绍,帮助读者快速设计自己的USB 设备。本书共15章和1个附录,内容包括:USB 简介、USB 传输、检测设备、控制传输、USB 控制器芯片、Cypress enCoRe控制芯片、驱动程序、设备类别、设备测试、电源管理与信号编码、电路接口、集线器、HID设备、HID程序设计、HID设备开发实例以及USB参考资料等。本书适合从事USB 硬件、软件设计的程序员和其他相关技术人员使用或参考。
作者简介
暂缺《USB 2.0硬件设计(第2版)》作者简介
目录
第1章  USB简介    1
1.1  USB的发展史    2
1.1.1  规范的版本    3
1.1.2  USB 2.0    4
1.1.3  IEEE-1394    4
1.2  USB的优点    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.9  USB实施者论坛    8
1.3  USB的缺点    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.5  PC的软硬件要求    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.1  ACK    37
2.4.2  NAK    37
2.4.3  STALL    37
2.4.4  NYET    38
2.4.5  ERR    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.4  Windows的延迟    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.3  Device_Qualifier描述符    62
3.2.4  配置描述符    64
3.2.5  Other_Speed_Configuration
描述符    65
3.2.6  接口描述符    66
3.2.7  端点描述符    68
3.2.8  字符串描述符    70
3.3  USB 2.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.1  Clear_Feature    84
4.5.2  Get_Configuration    85
4.5.3  Get_Descriptor    85
4.5.4  Get_Interface    86
4.5.5  Get_Status    87
4.5.6  Set_Address    88
4.5.7  Set_Configuration    88
4.5.8  Set_Descriptor    89
4.5.9  Set_Feature    89
4.5.10  Set_Interface    90
4.5.11  Synch_Frame    91
4.5.12  类别特定的请求    91
4.5.13  厂商特定的请求    92
第5章  USB控制器芯片    93
5.1  USB控制器的组成    93
5.1.1  USB连接端口    93
5.1.2  数据缓冲区    94
5.1.3  CPU    94
5.1.4  程序内存    94
5.1.5  数据存储器    95
5.1.6  寄存器    95
5.1.7  其他接口    95
5.1.8  其他特性    96
5.2  USB控制器芯片结构    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.3  Cypress enCoRe    105
5.3.1  CPU结构    105
5.3.2  USB控制器    106
5.4  Cypress EZ-USB    106
5.4.1  CPU结构    107
5.4.2  USB控制器    109
5.5  Microchip PIC 16C7x5    109
5.5.1  结构    109
5.5.2  USB控制器    111
5.6  Netchip NET2888    111
5.6.1  结构    111
5.6.2  USB控制器    112
5.7  National Semiconductor USBN9603    113
5.7.1  结构    113
5.7.2  USB控制器    114
5.8  Philips Semiconductor
PDIUSBD11/12    114
5.8.1  结构    115
5.8.2  USB控制器    115
第6章  Cypress enCoRe
控制器芯片    116
6.1  选择适合的芯片    116
6.2  汇编语言编译器    116
6.2.1  汇编程序的基础    118
6.2.2  汇编语言码    119
6.2.3  汇编语言编译器的用法    120
6.3  C编译器    122
6.3.1  C语言的优点    122
6.3.2  C编译器的用法    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.5  USB通信    127
6.5.1  设备地址    129
6.5.2  模式    129
6.5.3  端点状态及控制    131
6.5.4  USB状态及控制    131
6.6  其他I/O    133
6.6.1  一般用途的I/O    133
6.6.2  内部电路    133
6.6.3  中断    135
6.6.4  SPI连接端口    136
6.6.5  PS/2接口    137
6.7  定时器的功能    138
6.7.1  执行定时工作    138
6.7.2  测量时距    139
6.8  中断的处理    140
6.8.1  中断服务例程    140
6.8.2  GPIO中断    141
6.8.3  USB端点中断    142
6.8.4  定时器中断    142
6.8.5  中断状态    143
6.9  CPU的状态、控制及脉冲    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.4  Win32驱动程序模型    159
7.5  分层的驱动程序    161
7.5.1  USB驱动程序层    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.1  Windows提供的驱动程序    168
7.7.2  厂商提供的驱动程序    168
7.8  编写客户化的驱动程序    168
7.8.1  工具软件    169
7.8.2  WinRT for USB    169
7.8.3  WinDriver USB    171
7.8.4  提供函数库的工具软件    172
7.9  Windows如何选择驱动程序    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.2  Version区段    179
7.10.3  ClassInstall区段    179
7.10.4  Manufacturer区段    180
7.10.5  DestinationDirs区段    180
7.10.6  Strings区段    182
7.10.7  HID的通用.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.3  POS设备    199
8.3.4  取代非标准并行端口设备    199
8.3.5  PC到PC的连接    200
8.3.6  无线连接    200
第9章  设备测试    202
9.1  USB测试工具    202
9.1.1  测试    203
9.1.2  HIDView    207
9.2  测试仪器    208
9.2.1  协议分析器    208
9.2.2  USB Expert的硬件    209
9.2.3  USB Expert的软件    209
9.2.4  CATC Traffic Generator    211
9.2.5  Root 1 测试适配器    212
9.3  测试和标记    212
9.3.1  USB实施者论坛的
合格计划    213
9.3.2  USB标志    214
9.3.3  Windows硬件品质
实验室测试    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.1  Differential 1和
Differential 0状态    224
10.4.2  Single-ended 0状态    225
10.4.3  Single-ended 1状态    225
10.4.4  Data J和Data K状态    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  高速Differential 1和
Differential 0状态    227
10.5.2  高速Data J和Data K
状态    228
10.5.3  Chirp J和Chirp K    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.3  SYNC字段    230
10.6.4  信息包结尾    231
10.6.5  时序正确性    231
10.7  信息包格式    232
10.7.1  SYNC字段    232
10.7.2  PID字段    232
10.7.3  地址字段    233
10.7.4  端点字段    233
10.7.5  帧号码字段    233
10.7.6  数据字段    233
10.7.7  CRC字段    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.1  HID 简 介    266
13.1.1  硬件要求    267
13.1.2  固件要求    268
13.2  HID的描述符    269
13.2.1  描述符的内容    272
13.2.2  HID类别描述符    272
13.2.3  报表描述符    274
13.3  HID特定请求    278
13.3.1  Get_Report    279
13.3.2  Set_Report    279
13.3.3  Get_Idle    279
13.3.4  Set_Idle    280
13.3.5  Get_Protocol    281
13.3.6  Set_Protocol    281
13.4  传输数据    281
13.4.1  发送数据给主机    282
13.4.2  从主机接收数据    283
13.5  报表的结构    285
13.5.1  HID Descriptor Tool    286
13.5.2  短项目    287
13.5.3  长项目    287
13.6  Main项目类型    288
13.6.1  Input、Output和Feature
项目    288
13.6.2  Collection与End Collection
标记    291
13.7  Global项目类型    291
13.7.1  识别报表    292
13.7.2  数据的使用    293
13.7.3  转换原始数据    294
13.7.4  数据的大小与格式    296
13.7.5  Global项目的储存
与恢复    296
13.8  Local项目类型    296
13.9  填充    298
13.10  实体描述符    298
第14章  HID程序设计    300
14.1  主机的通信    300
14.1.1  说明文件    301
14.1.2  HID函数    301
14.1.3  DirectX    302
14.2  调用API函数    303
14.2.1  使用Visual C++    303
14.2.2  使用Visual Basic    304
14.3  取得HID类别的GUID    305
14.3.1  使用Visual C++    306
14.3.2  使用Visual Basic    306
14.4  取得HID信息的结构数组    307
14.4.1  使用Visual C++    307
14.4.2  使用Visual Basic    307
14.4.3  详解    307
14.5  识别HID接口    308
14.5.1  使用Visual C++    308
14.5.2  使用Visual Basic    308
14.5.3  详解    309
14.6  取得设备的路径    309
14.6.1  使用Visual C++    310
14.6.2  使用Visual Basic    311
14.7  取得设备的代号    312
14.7.1  使用Visual C++    312
14.7.2  使用Visual Basic    313
14.8  取得厂商与产品ID    314
14.8.1  使用Visual C++    314
14.8.2  使用Visual Basic    314
14.8.3  详解    315
14.9  取得包含设备能力的缓
冲区指针    315
14.9.1  使用Visual C++    315
14.9.2  使用Visual Basic    315
14.9.3  详解    316
14.10  取得设备的能力    316
14.10.1  使用Visual C++    316
14.10.2  使用Visual Basic    317
14.10.3  详解    317
14.11  取得数值的能力    317
14.12  发送输出报表给设备    318
14.12.1  使用Visual C++    318
14.12.2  使用Visual Basic    318
14.12.3  详解    319
14.13  从设备读取输入报表    319
14.13.1  使用Visual C++    320
14.13.2  使用Visual Basic    320
14.13.3  详解    321
14.14  使用重叠ReadFile读取报表    321
14.14.1  使用Visual C++    322
14.14.2  使用Visual Basic    323
14.15  使用多线程的ReadFile
  读取报表    324
14.15.1  使用Visual C++    324
14.15.2  使用Visual Basic    326
14.16  发送特征报表给设备    326
14.16.1  使用Visual C++    326
14.16.2  使用Visual Basic    326
14.17  从设备读取特征报表    327
14.17.1  使用Visual C++    327
14.17.2  使用Visual Basic    327
14.18  关闭通信    327
14.18.1  使用Visual C++    328
14.18.2  使用Visual Basic    328
第15章  HID设备开发实例    330
15.1  HID设备开发综述    330
15.2  HID温度计开发示例    333
15.3  用C语言来设计固件    400
附录  USB参考资料    430
猜您喜欢

读书导航