《USB应用开发宝典》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:薛园园,赵建领编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2011
  • ISBN:9787115246745
  • 页数:738 页
图书介绍:本书系统地介绍了新型USB总线接口的协议、工作原理以及驱动程序设计,并以大量篇幅全面、详细地介绍了各种应用场合下的USB设计实例。

第1篇USB开发基础篇 3

第1章USB概述 3

1.1 USB的产生 3

1.2 USB总线特点 4

1.3 USB的总线结构 6

1.3.1 USB主机和设备 6

1.3.2 USB的连接 7

1.3.3 USB系统的分层结构 8

1.4 USB的开发流程 9

1.5小结 10

第2章USB电源管理 11

2.1 USB的供电 11

2.1.1 USB接口的电源指标 11

2.1.2电源分配 12

2.2 USB电源管理 13

2.2.1供电保持 13

2.2.2 USB设备的挂起 13

2.2.3 USB集线器的挂起 14

2.3小结 14

第3章USB的设备配置 15

3.1 USB标准设备的描述符 15

3.1.1设备描述符 16

3.1.2配置描述符 18

3.1.3字符串描述符 20

3.1.4接口描述符 21

3.1.5端点描述符 22

3.1.6设备限定描述符 24

3.1.7其他速率配置描述符 26

3.2 USB集线器的描述符 28

3.2.1集线器设备描述符 28

3.2.2集线器配置描述符 30

3.2.3集线器接口描述符 32

3.2.4集线器端点描述符 33

3.2.5集线器类描述符 34

3.3 HID设备的描述符 36

3.3.1 HID设备简介 36

3.3.2 HID基本描述符 38

3.3.3 HID类描述符 40

3.4小结 42

第4章USB的数据传输 44

4.1 USB数据传输简介 44

4.1.1 USB数据传输流程 44

4.1.2 USB事务处理 45

4.1.3 USB数据传输类型 46

4.2 USB控制传输 46

4.2.1数据包长度 47

4.2.2事务处理 47

4.3 USB块传输 49

4.3.1数据包长度 49

4.3.2事务处理 49

4.4 USB中断传输 50

4.4.1数据包长度 50

4.4.2事务处理 51

4.5 USB同步传输 51

4.5.1数据包长度 51

4.5.2事务处理 52

4.6小结 52

第5章USB设备请求 53

5.1标准USB设备请求 53

5.1.1读取状态请求GetStatus 54

5.1.2清除特性请求ClearFeature 56

5.1.3设置特性请求SetFeature 56

5.1.4设置地址请求SetAddress 57

5.1.5读取描述符请求GetDescription 57

5.1.6设置描述符请求SetDescriptor 57

5.1.7读取配置请求GetConfiiguration 58

5.1.8设置配置请求SetConfiiguration 58

5.1.9读取接口请求GetInterface 59

5.1.10设置接口请求SetInterface 59

5.1.11同步帧请求SynchFrame 59

5.2 USB集线器类请求 60

5.2.1读取集线器状态请求GetHubStatus 60

5.2.2读取下行端口状态请求GetPortStatus 61

5.2.3禁止集线器的特性请求ClearHubFeature 61

5.2.4禁止下行端口特性请求ClearPortFeature 62

5.2.5使能集线器特性请求SetHubFeature 63

5.2.6使能下行端口特性请求SetPortFeature 63

5.2.7读取集线器描述符请求GetHubDescriptor 64

5.2.8设置集线器描述符请求SetHubDescriptor 64

5.2.9清除TT块请求ClearTTBuffer 65

5.2.10复位TT块请求ResetTT 65

5.2.11读取TT内部状态请求GetTTState 66

5.2.12停止TT正常工作请求StopTT 66

5.3 HID设备类请求 67

5.3.1获取报告请求GetReport 67

5.3.2获取空闲速率请求GetIdle 68

5.3.3获取HID协议请求GetProtocol 69

5.3.4设置报告请求SetReport 69

5.3.5设置空闲速率请求SetIdle 70

5.3.6设置HID协议请求SetProtocol 71

5.4 USB设备请求示例 71

5.4.1声明设备请求 71

5.4.2设备请求的响应 72

5.5小结 77

第6章 元器件的识别和加工 78

6.1元器件的封装 78

6.1.1元器件封装的发展 78

6.1.2元器件封装小结 79

6.2元器件的焊接 88

6.2.1双列直插器件的焊接 88

6.2.2表面贴元器件的焊接 88

6.3常用的USB接口芯片 89

6.3.1 Cypress公司的USB接口芯片 90

6.3.2 Philips公司的USB接口芯片 95

6.3.3南京沁恒公司的USB接口芯片 97

6.4小结 100

第7章 电路制板布局 101

7.1印制电路板基础 101

7.1.1印制电路板的分类 101

7.1.2印制电路板的基本概念 102

7.2印制电路板设计规则 104

7.2.1电路板的选择 105

7.2.2电路板布局 105

7.2.3电路板布线 106

7.2.4其他设计规则 107

7.3高速USB接口的PCB设计 109

7.3.1差分阻抗 109

7.3.2 USB信号 110

7.3.3电源和地 112

7.3.4晶体振荡器 113

7.4小结 113

第2篇USB编程篇 117

第8章 构建USB接口开发环境 117

8.1 USB固件开发环境 117

8.1.1 Keil μVision3简介 117

8.1.2 Keil μVision3集成开发环境 118

8.1.3 Cypress开发包 119

8.2上位机开发环境 120

8.2.1 Visual Studio开发平台 120

8.2.2 LabVIEW开发平台 121

8.3 USB驱动开发环境 121

8.3.1 DriverStudio软件简介 121

8.3.2配置DriverSutdi o编译环境 123

8.3.3 NI-VISA开发平台 124

8.3.4 USB通用驱动程序 125

8.4 USB最小开发系统 125

8.5 USB软硬件开发环境 127

8.6小结 127

第9章USB固件编程 128

9.1 USB设备配置描述符 128

9.1.1变量声明 128

9.1.2设备描述 129

9.1.3设备配置 130

9.1.4字符串描述 133

9.2 USB设备请求 134

9.2.1自定义设备请求声明 134

9.2.2自定义设备请求的响应 135

9.3 USB重列举 139

9.4小结 142

第10章USB驱动开发 143

10.1 Windows下的USB驱动开发 143

10.1.1 USB驱动程序建立 144

10.1.2 USB驱动程序设计 146

10.2 LabVIEW环境下的USB驱动开发 147

10.2.1 NI-VISA的USB驱动简介 147

10.2.2创建USB驱动 148

10.3通用USB驱动概述 149

10.4 INF文件简介 149

10.4.1 INF文件处理过程 150

10.4.2 INF文件的结构 150

10.4.3版本节[Version] 151

10.4.4源文件盘符节[SourceDisksNames] 153

10.4.5源文件节[SourceDisksFiles] 153

10.4.6目标磁盘节[DestinationDirs] 153

10.4.7供应商节[Manufacturer] 154

10.4.8默认安装节[DefaultInstall] 154

10.4.9字符串节[String] 155

10.5 Visual Studio 6.0环境下的通用USB驱动 155

10.5.1 CyLoad.inf文件 155

10.5.2 CyUSB.inf文件 158

10.6 Visual Studio 2005环境下的通用USB驱动 161

10.7驱动程序的安装 163

10.8小结 165

第11章 上位机程序开发 166

11.1 Visual C++读写USB设备 166

11.1.1 CYIOCTL控制函数类 166

11.1.2 CyAPI控制函数类 173

11.2 Visual C#读写USB设备 194

11.2.1 CyHidDevice类 194

11.2.2 CyIsocEndPoint类 200

11.2.3 CyUSBStorDevice类 204

11.3 LabVIEW读写USB设备 206

11.3.1 USB设备测试 207

11.3.2 VISA控制函数 209

11.4小结 211

第3篇USB应用实例篇 215

第12章 使用EEPROM进行USB列举 215

12.1 EZ-USB FX2LP的启动模式概述 215

12.1.1 EZ-USB FX2LP的启动模式 216

12.1.2无EEPROM启动 216

12.1.3首字节为0xC0的EEPROM启动 217

12.1.4首字节为0xC2的EEPROM启动 217

12.1.5启动配置 218

12.2 EEPROM引导USB启动电路 221

12.3 USB固件程序设计 222

12.3.1建立USB项目 223

12.3.2主程序文件 224

12.3.3请求响应函数 226

12.3.4数据读写子程序 232

12.3.5 USB描述符 233

12.4驱动程序设计 237

12.4.1 USB固件下载驱动程序 237

12.4.2 USB通信驱动程序 239

12.5主机程序设计 241

12.5.1建立工程 241

12.5.2用户界面设计 243

12.5.3程序代码设计 243

12.6小结 246

第13章USB控制LED显示实例 247

13.1 LED数码管简介 247

13.1.1共阳极7段LED数码管 247

13.1.2共阴极7段LED数码管 249

13.2 USB控制LED显示实例 250

13.3 USB固件程序设计 251

13.3.1建立USB项目 251

13.3.2主函数程序设计 253

13.3.3设备请求响应函数 255

13.3.4 LED控制子函数 261

13.3.5 USB固件描述符 261

13.4 USB主机程序设计 266

13.4.1建立项目 267

13.4.2程序设计 268

13.5小结 273

第14章USB控制LCD液晶显示模块 274

14.1液晶显示模块概述 274

14.1.1液晶显示模块的分类 275

14.1.2液晶显示模块的特点 276

14.2液晶显示控制驱动器 276

14.2.1液晶显示控制驱动器概述 276

14.2.2液晶显示控制驱动器功能 277

14.3液晶显示控制器指令集 280

14.3.1基本指令集 280

14.3.2扩充指令集 283

14.3.3控制器指令操作方式 285

14.4液晶显示电路原理图 287

14.5固件程序设计 289

14.5.1建立USB项目 289

14.5.2主程序文件 290

14.5.3请求响应函数 293

14.5.4初始化子程序 298

14.5.5液晶汉字显示子程序 298

14.5.6点阵图形型液晶控制子函数 299

14.5.7 USB描述符 303

14.6主机程序设计 308

14.6.1建立工程 308

14.6.2用户界面设计 310

14.6.3程序代码设计 311

14.7小结 313

第15章USB键盘程序设计 314

15.1 HID设备概述 314

15.2 USB键盘设计实例 315

15.2.1电路原理图 315

15.2.2建立USB项目 316

15.2.3主程序文件 317

15.2.4标准设备请求响应函数 320

15.2.5 USB键盘功能实现 325

15.2.6 USB键盘描述符 328

15.3小结 333

第16章USB鼠标程序设计 334

16.1 USB鼠标硬件概述 334

16.2电路原理图 335

16.3固件程序设计 336

16.3.1接口定义 337

16.3.2主函数 338

16.3.3初始化函数 338

16.4功能实现代码 339

16.4.1主循环函数usbmain 339

16.4.2鼠标事务函数MouseTask 340

16.4.3挂起函数Suspend 340

16.4.4数据包处理函数HandleSetup 342

16.4.5输入数据包处理函数HandleIn 343

16.4.6读数据函数USB_control_read 343

16.4.7装载FIFO函数LoadEPOFifo 344

16.4.8停止端点函数USB_Stall_In_Out 344

16.4.9总线空闲函数BusInactive 344

16.4.10光学测量函数ProcessOptics 345

16.4.11读按键函数GetButtons 346

16.4.12鼠标移动函数MouseMoved 346

16.5 HID设备请求处理 347

16.5.1设置配置请求SetConfiguration 347

16.5.2设置地址请求SetAddress 347

16.5.3清标志请求ClearFeature 348

16.5.4设置标志请求SetFeature 349

16.5.5读取描述符请求GetDescriptor 349

16.5.6读取状态请求GetStatus 351

16.5.7设置空闲请求SetIdle 352

16.5.8设置协议请求SetProtocol 353

16.5.9读取报告请求GetReport 353

16.5.10读取空闲请求GetIdle 354

16.5.11读取协议请求GetProtocol 354

16.5.12读取配置请求GetConfiiguration 354

16.6 USB鼠标描述符 355

16.6.1设备描述符 355

16.6.2配置描述符 355

16.6.3接口描述符 356

16.6.4端点描述符 356

16.6.5 HID类描述符 357

16.6.6报告描述符 357

16.6.7字符串描述符 358

16.7小结 359

第17章USB控制D/A转换输出实例 360

17.1 D/A转换概述 360

17.1.1 D/A转换原理 360

17.1.2 D/A转换器的类型 361

17.1.3 D/A转换器的性能参数 363

17.2高速D/A转换芯片AD558 364

17.2.1 AD558简介 364

17.2.2 AD558输出模式 365

17.2.3 AD558的数据锁存 366

17.3电路原理图 367

17.4固件程序设计 369

17.4.1建立USB项目 369

17.4.2主程序文件 370

17.4.3请求响应函数 373

17.4.4 D/A转换子函数 378

17.4.5 USB设备配置描述符 378

17.5主机程序设计 384

17.5.1建立工程 384

17.5.2用户界面设计 386

17.5.3程序代码设计 386

17.6小结 391

第18章USB控制A/D转换数据采集实例 392

18.1 A/D转换器概述 392

18.1.1 A/D转换原理 393

18.1.2 A/D转换器的技术参数 395

18.1.3 A/D转换器的选择原则 396

18.2 8通道电压型A/D转换器MAX197 397

18.2.1 MAX197的引脚接口 397

18.2.2 MAX197的控制字节 398

18.2.3 MAX 197的控制时序 400

18.3 USB模拟电压采集实例 401

18.3.1系统电路原理图 401

18.3.2稳压电路 403

18.4 USB固件程序设计 403

18.4.1建立USB项目 404

18.4.2主函数程序设计 404

18.4.3设备请求处理 407

18.4.4 A/D转换控制子函数 413

18.4.5 USB描述符 413

18.5上位机程序设计 418

18.5.1建立项目 418

18.5.2程序设计 420

18.6小结 424

第19章USB的RAM测试实例 425

19.1 EZ-USB FX2LP的存储器 425

19.1.1内部数据RAM 425

19.1.2外部程序和数据存储空间 428

19.2 USB的RAM测试电路原理图 432

19.3固件程序设计 433

19.3.1建立USB项目 433

19.3.2主程序文件 434

19.3.3测试RAM区域函数test_mem 437

19.3.4错误码分析函数status 439

19.3.5特定字符串输出函数statString 439

19.4小结 440

第20章USB读写I2C总线EEPROM 441

20.1 I2C总线概述 441

20.1.1 I2C总线的工作原理 442

20.1.2 I2C总线的负载能力 442

20.1.3 I2C总线的寻址方式 442

20.1.4 I2C总线数据传输协议 443

20.2电路原理图 445

20.3固件程序设计 447

20.3.1建立USB项目 447

20.3.2主程序文件 448

20.3.3请求响应处理 451

20.3.4 EEPROM读写 456

20.3.5 I2C接口子函数 457

20.3.6 USB设备配置描述符 462

20.4主程序设计 467

20.4.1建立工程 467

20.4.2用户界面设计 468

20.4.3程序代码设计 469

20.5小结 472

第21章USB读写Microware串行EEPROM 473

21.1 Microware串行总线概述 473

21.2 Microware串行总线接口的EEPROM存储器 474

21.2.1 Microware串行总线接口EEPROM概述 474

21.2.2 Microware串行总线接口EEPROM的指令 475

21.2.3 Microware串行总线接口EEPROM的指令时序 476

21.3电路原理图 479

21.4固件程序设计 480

21.4.1建立USB项目 481

21.4.2主程序文件 482

21.4.3请求响应函数 485

21.4.4 Microware读写子函数 489

21.4.5三线制Microware串行总线读写子函数 490

21.4.6 USB设备配置描述符 493

21.5主程序设计 498

21.5.1建立工程 499

21.5.2用户界面设计 500

21.5.3程序代码设计 501

21.6小结 503

第22章USB控制实时时钟芯片DS1302 504

22.1实时时钟芯片DS1302概述 504

22.1.1实时时钟芯片DS 1302概述 504

22.1.2实时时钟芯片DS 1302命令字节 505

22.1.3实时时钟芯片DS1302数据格式 505

22.1.4实时时钟芯片DS1302数据传输方式 507

22.2电路原理图 508

22.3固件程序设计 510

22.3.1建立USB项目 510

22.3.2主程序文件 511

22.3.3请求响应处理 514

22.3.4实时时钟操作 519

22.3.5 DS1302控制子函数 521

22.3.6 USB设备配置描述符 524

22.4上位机程序设计 529

22.4.1建立工程 530

22.4.2用户界面设计 531

22.4.3程序代码设计 532

22.5小结 535

第23章USB采集单总线温度传感器DS18S20 536

23.1单总线概述 536

23.2单总线温度传感器DS18S20 537

23.2.1温度传感器DS 18S20概述 538

23.2.2 DS18S20的供电方式 538

23.2.3 DS18S20的数据操作 539

23.2.4 DS18S20的温度转换操作 541

23.3电路原理图 542

23.4固件程序设计 543

23.4.1建立USB项目 543

23.4.2主程序文件 544

23.4.3请求响应处理 547

23.4.4读取温度操作 552

23.4.5 DS18S20控制子函数 553

23.4.6 USB设备配置描述符 555

23.5上位机程序设计 560

23.5.1建立工程 561

23.5.2用户界面设计 562

23.5.3程序代码设计 563

23.6小结 566

第24章USB打印机控制实例 567

24.1 CH375A接口芯片 567

24.1.1 CH375A概述 568

24.1.2 CH375A内部结构 570

24.2 CH375A指令 570

24.2.1 CH375A基本指令 571

24.2.2 USB存储设备类指令 574

24.3 CH375A接口方式 580

24.3.1并行接口 581

24.3.2串行接口 581

24.4 USB打印机控制实例 582

24.4.1电路原理图 582

24.4.2 USB打印机控制方式 586

24.5程序设计 586

24.5.1项目建立 586

24.5.2头文件 587

24.5.3参数及结构定义 591

24.5.4主函数 593

24.5.5基本操作子函数 594

24.5.6数据同步及读写子函数 596

24.5.7 CH375A主机操作子函数 597

24.6小结 602

第25章USB接口充电器实例 603

25.1锂电池及其充电概述 603

25.1.1锂电池概述 603

25.1.2锂电池充电概述 604

25.2智能充电管理芯片MAX 1898 604

25.2.1智能充电管理芯片选型 605

25.2.2智能充电管理芯片MAX 1898概述 605

25.2.3 MAX1898充电工作原理 606

25.3 USB接口充电器实例 607

25.3.1电路原理图 608

25.3.2 USB接口充电器功能 610

25.4固件程序设计 611

25.4.1建立USB项目 611

25.4.2主程序文件 612

25.4.3请求响应处理 615

25.4.4智能充电管理 620

25.4.5 USB设备配置描述符 621

25.5小结 626

第26章USB转RS-232串口实例 627

26.1 CH341简介 627

26.2 CH341串口工作方式 628

26.2.1异步串口方式 628

26.2.2同步串口方式 631

26.3 CH341打印口工作方式 631

26.4 CH341并口工作方式 633

26.4.1 EPP并口方式 634

26.4.2 MEM并口方式 635

26.5 CH341功能配置 635

26.5.1直接组合配置 635

26.5.2外部芯片配置 635

26.6 USB转RS-232串口实例 636

26.6.1电路原理图 636

26.6.2硬件接口介绍 637

26.6.3连接使用 638

26.7小结 639

第27章U盘设计实例 640

27.1 Nand-Flash存储器 640

27.1.1 Nor-Flash和Nand-Flash 640

27.1.2 Nand-Flash存储器K9F2G08U0M 641

27.1.3 Nand-Flash存储器的组织结构 642

27.1.4 Nand-Flash存储器的指令集 643

27.1.5 Nand-Flash存储器的操作 643

27.2基于Nand-Flash的文件系统 644

27.2.1分区格式简介 644

27.2.2基于Nand-Flash的文件系统 645

27.2.3 Nand-Flash存储器上的FAT结构 649

27.3 Nand-Flash控制器 649

27.3.1 CY7C68023简介 649

27.3.2兼容Nand-Flash存储器 651

27.4 U盘设计实例 652

27.4.1电路原理图 652

27.4.2 PCB设计要求 653

27.4.3配置格式化 654

27.5小结 655

第28章LabVIEW下的USB数据采集实例 656

28.1 Slave FIFO模式简介 656

28.1.1 Slave FIFO模式的引脚及功能 657

28.1.2典型的数据传输 661

28.2 Slave FIFO的固件设计 662

28.2.1 Slave FIFO固件基础 662

28.2.2 Auto In/Auto Out模式 663

28.2.3 Auto In/Auto Out模式初始化 664

28.2.4 CPU访问OUT数据包 667

28.2.5 CPU访问IN数据包 669

28.3电路原理图 671

28.4固件程序设计 672

28.4.1建立USB项目 672

28.4.2主程序文件 673

28.4.3请求响应函数 676

28.4.4初始化子函数 680

28.4.5自定义请求子函数 681

28.4.6块传输处理 682

28.4.7 USB设备配置描述符 683

28.5 LabVIEW程序设计 688

28.5.1 USB驱动程序 688

28.5.2前面板程序设计 690

28.5.3程序框图设计 690

28.6小结 691

第4篇USB3.0展望篇 695

第29章USB 3.0概述 695

29.1 USB 3.0的产生和基本特性 695

29.1.1 USB 3.0的产生 695

29.1.2 USB 3.0的基本特性 696

29.1.3 USB 3.0的标志 697

29.2 USB 3.0技术解析 698

29.2.1 USB 3.0针脚定义 698

29.2.2 USB 3.0接头标准 699

29.2.3 USB 3.0线缆结构 701

29.3 USB 3.0工作原理 703

29.3.1 USB 3.0总线结构预览 703

29.3.2 USB 3.0总线编码 704

29.3.3 USB 3.0超速数据流模型 705

29.3.4 USB 3.0的典型眼图 706

29.3.5 USB 3.0超高速数据传输 708

29.3.6 USB 3.0的供电管理 708

29.4 USB 3.0的技术改进 709

29.5 USB 3.0产品及操作系统支持 711

29.5.1 USB 3.0的实现 711

29.5.2 USB 3.0的应用前景和产品 713

29.5.3 USB 3.0的操作系统支持 714

29.6 USB 3.0的竞争对手 714

29.6.1 Firewire技术 714

29.6.2 eSATA技术 715

29.6.3 ExpressCard 2.0技术 715

29.6.4 USB PLUS技术 715

29.7小结 716

第30章USB 3.0的开发 717

30.1 USB 3.0开发概述 717

30.1.1 USB 3.0的开发流程 717

30.1.2开发USB 3.0的准备工作 718

30.2 USB 3.0对设计的挑战 719

30.2.1对开发人员的挑战 719

30.2.2对厂商的挑战 721

30.3常用的USB 3.0芯片 722

30.3.1 NEC USB 3.0芯片μPD720200 722

30.3.2富士通MB86C30A桥接芯片 725

30.3.3 USB 3.0 Hub控制器VL810 728

30.3.4 USB 3.0-SATA控制器VL700 729

30.4 USB 3.0的测试测量工具 730

30.4.1泰克(Tektronix)的 USB 3.0工具 730

30.4.2安捷伦(Agilent)的USB 3.0工具 733

30.4.3力科(LeCroy)的USB 3.0工具 734

30.5 USB 3.0电路保护方案 734

30.5.1过流保护 735

30.5.2过压保护 736

30.5.3 ESD保护 737

30.5.4综合电路保护方案 737

30.6小结 738